今回は、CuBox-iにDebbianをインストールしてみましょう。
(2014年4月29日時点で)公式CuBox-i WikiサイトのDebianを試しにインストールしてみましたが、ネットワーク接続ができないようなので、あまり役に立ちそうにありません。いずれちゃんとしたものにアップデートされるでしょうが、一足さきに自分でやってみましょう。手順は大変です。でも意味を考えながら手順をふむことで、Linux流の組込のやり方が身につきます。ここで作るものは現時点で可能なドライバを取り込んでいるのでいろいろなことに使えるでしょう。
ftp.debian.orgサイトにあるネットワーク・インストーラを使ってCuBox-iにDebian Wheezyをインストールすることにします。
1. 準備
1) まずは、次のものを用意してください。
・8GB以上の microSDカード(色々なライブラリを皆取りこんでおくので大きくなります。)
・Linuxを搭載したPC(ここではUbuntuを載せたPCを例に説明します)でmicorSDカードの読み書き(USBアダプタ使用でも可)が行えるもの。
・microUSB – USBケーブル (CuBox-iとPCの接続用)
・CuBox-iに付属していたオリジナルSDカード(Androidのbootファイルを使用します。)
2) PCにシリアル通信アプリminicomをインストールします。
$ sudo apt-get install minicom
pu port /dev/ttyUSB0
pu baudrate 115200
pu bits 8
pu parity N
pu stopbits 1
pu rtscts No
pu xonxoff No
3) 8GB以上のmicroSDカードの初期化を行います。全領域をext4形式でフォーマットしてください。Linux PCのGPartアプリを使うと簡単にできます。
(コラムの「ソフトウェア TIPS(5) CuBox-iでSDカードの容量いっぱいにイメージを拡張するには」で使ったツールです)
4) SPLとU-boot.imgを作成してmicroSDカードに書き込みます。
基本的に 「Building the kernel and u-boot for the CuBox-i and the HummingBoard」のU-Bootセクションの通りです。
Linux PCでSPLとu-boot.imgを作成しましょう。
$ sudo apt-get install arm-linux-gnueabi
$ sudo apt-get install u-boot-tools
$ export ARCH=arm
$ export CROSS_COMPILE=/usr/bin/arm-linux-gnueabi-
$ mkdir ~/work
$ cd ~/work
$ git clone https://github.com/SolidRun/u-boot-imx6.git
$ cd u-boot-imx6
$ make mx6_cubox-i_config
$ make
$ sudo dd if=SPL of=/dev/sdg bs=1K seek=1
$ sudo dd if=u-boot.img of=/dev/sdg bs=1K seek=42
5) カーネルを作成しておきましょう。実際の作成方法は前回の「CuBox-i用カーネル作成」を参照してください。
a) Ver3.10ベースのカーネルzImageを作成した場合
zImage, lib/firmware/*, lib/modules/* ファイルの他に、
CuBox-iにUbuntu12.04をインストール」で作成した bootディレクトリ下のファイル uImage が必要になりますので、このファイルをPCにコピーしておきましょう。
b) Ver3.0.5ベースのuImageを作成した場合
uImage, lib/firmware/*, lib/modules/* ファイルが必要になります。
2.インストール用microSDの生成
先程、フォーマットしたmicroSDカードをインストール用SDにしましょう。
暫くはPCでの作業となります。
1) 作業用ディレクトリを作成します。
$ mkdir work
$ cd work
$ mkdir boot
2) CuBox-iに付属していたオリジナルAndroid SDカードをPCに挿入しましょう。
BOOTディレクトリが /media/foo/BOOTに自動マウントされたものとします。
(自動マウントしない場合は、ご自身でマウントしてください。)
bootファイルを作業ディレクトリにコピーします。
$ cp /media/foo/BOOT/* boot/
$ make modules_install
boot.scr, boot.txt, uImageの3つのファイルがbootディレクトリの下にあることを確認してください。
もうオリジナルAndroid SDカードは使わないのでアンマウントしてPCから抜いてください。
3) Debian Wheezyのネットワーク・インストーラをダウンロードします。
$ wget http://ftp.debian.org/debian/dists/wheezy/main/installer-armel/current/images/versatile/netboot/initrd.gz
4) ダウンロードしたinitrd.gzをCuBox-iのイメージ形式に変換します。
$ sudo apt-get install u-boot-tools
$ mkimage -A arm -O linux -T ramdisk -C gzip -n "netboot image" -a 0x1a000000 -e 0x1a000000 -d initrd.gz uImage.initrd
$ mv uImage.initrd boot/
5) フォーマットしたmicorSDカードをPCに挿入します。
自動的に /media/foo/sd01 にマウントされたものとします。
(自動マウントしない場合は、ご自身でマウントしてください。)
ブート・ファイルをmicroSDカードにコピーします。
$ cp boot/* /media/foo/sd01
/media/foo/sd01に4つのファイルboot.scr, boot.txt, uImage, uImage.initrd
これでインストール用microSDカードの用意ができました。
3. CuBox-iへDebian Wheezyをインストール
それでは、CuBox-iへのインストールを開始しましょう。
1) CuBox-iにいま作成したmicroSDを挿入してください。
2) CuBox-iのmicroUSBポートとPCのUSBポートを接続してください。
3) PC側でminicomを起動します。
$ sudo minicom
もし、このタイミングで起動できなかった場合は、CuBox-iをパワーONにたらすぐに、もう一度minicomを起動し直してください。
4) CuBo-x-iをパワーONにしてください。
5) すぐにminicomでリターンキーを入力して、U-bootのプロンプトを表示させてください。
6) micoSDカードの状態を確認します。
U-boot> mmcinfo
7)いよいよインストーラの起動です。
U-boot> ext2load mmc 0:1 0x16000000 uImage
U-boot> ext2load mmc 0:1 0x18000000 uImage.initrd
U-boot> setenv console 'ttymxc0,115200n8'
U-boot> bootm 0x16000000 0x18000000
(注意)setenv console ‘ttymxc0,115200n8′を忘れると、minicom画面からの入出力ができなくなってしまいます。
8) しばらくすると,minicom画面におなじみのDebianインストーラメッセージが表示されますので、各種パラメータを指定してインストールを行いましょう。
a) Language: C -> Asia -> Japan
b) Keymap: Japanese
c) network: eth0: Ethernet
d) Hostname: debian-cubox-i
e) Domain name: 空白
f) mirror country: Japan
g) mirror site: ftp.jp.debian.org
h) HTTP proxy: 空白
i) Continue the install without loading kernel modules? : yes
j) root password: debian
k) new user: debian
password: debian
l) Software RAID not available :
m) Patition Disks:
Guided – Manual
#1 primary xxBG ext4 をセレクト
(ext4形式、既存ファイルをキープして、フォーマットしない)
Use as: Ext4 journaling file system
Mount point: /
Done setting up the partition
Fisish partitioning and write changes to disk
Do you want to return to the partitioning menu? : no
n) Continue with the installation? : yes
o) Continue without installing a kernel?: yes
p) Participate in the package usage survey? : yes
[*] Debian desktop environment
[*] SSH server
[*] Standard system utilities
(デスクトップ環境とSSH serverをインストールするように指定します。
そうすると、何時間もながくインストールが続くので、放置して適宜休憩をとりましょう。)
q) 最後に確認メッセージに対して をセレクトするとインストールは終了です
9) インストールが終了するとCuBox-iは自動的にリブートします。再起動中にエラーがでてストップしますが構いません。まだブート環境を作っていないので当然です。
ここで、一旦、CuBox-iをパワーOFFして、microSDカードを取り出しましょう。
10) ブート環境を作成しましょう。ここからはまたPCのterminalでの作業となります。CuBox-iから取り出したmicroSDカードをPCに挿入してください。
自動的に /media/foo/sd01 にマウントされたものとします。
(自動マウントしない場合は、ご自身でマウントしてください。)
まずは、インストール時のみに必要だったファイルを削除します。
$ cd /media/foo/sd01
$ sudo rm boot.* uImage uImage.initrd
1-4)で作成したカーネルがVer3.10ベースのzImageか、Ver3.0.5ベースのuImageかによって、ちょっと異なってきます。
a) Ver3.10ベースのカーネルzImageを作成した場合
$ sudo cp zImage /media/foo/sd01/boot
sudo cp -rf lib/* /media/foo/sd01/lib
UbuntuをインストールしたときのuImageが置いてあるディレクトリに移動して
$ sudo cp uImage /media/foo/sd01/boot
/media/foo/sd01/boot/uEnv.txtファイルをテキスト・エディタを使って作成します。内容は下の用に記述しておきます。
bootfile=/boot/uImage
mmcargs2=setenv bootargs root=/dev/mmcblk0p1 rootwait video=mxcfb0:dev=hdmi consoleblank=0
mmcargs=if test = 6SOLO; then setenv bootargs_ext gpumem=64M fbmem=10M; else setenv bootargs_ext; fi; run mmcargs2
これで、/media/foo/sd01/bootディレクトリの下には
uImage, zImage, uEnv.txt の3つのファイルができました。
uEnet.txtのシンボリック・リンクを張っておきます。
$ cd /media/foo/sd01
$ sudo ln -s boot/uEnt.txt .
また、/media/foo/sd01/libの下に、firmware, modulesディレクトリができました。これでブート環境、カーネルの設置は終了です。
b) Ver3.0.5ベースのuImageを作成した場合
$ sudo cp uImage /media/foo/sd01/
sudo cp -rf lib/* /media/foo/sd01/lib
/media/foo/sd01/uEnv.txtファイルをテキスト・エディタを使って作成します。内容は下の用に記述しておきます。
$ cd /media/foo/sd01
$ sudo ln -s boot/uEnt.txt .
また、/media/foo/sd01/libの下に、firmware, modulesディレクトリができました。これでブート環境、カーネルの設置は終了です。
bootfile=/uImage
mmcargs2=setenv bootargs root=/dev/mmcblk0p1 rootwait video=mxcfb0:dev=hdmi consoleblank=0
mmcargs=if test = 6SOLO; then setenv bootargs_ext gpumem=64M fbmem=10M; else setenv bootargs_ext; fi; run mmcargs2
これで、/media/foo/sd01ディレクトリの下には
uImage, uEnv.txt の2つのファイルができました。
また、/media/foo/sd01/libの下に、firmware, modulesディレクトリができました。これでブート環境、カーネルの設置は終了です。
11) Debian Wheezy用のmicroSDカードが完成しました。microSDカードのパーティションをアンマウントしてPCから抜きましょう。
12) CuBox-iに挿入して、CuBox-iにキーボード、マウス、ディスプレイを接続してパワーをONにしましょう。CuBox-iがDebian Wheezyで起動します。ログイン画面が表示されたら、8)-k)で指定したユーザ名 debian, パスワード debian でログインしてみましょう。ところが、Gnome3は使えませんとかいうメッセージがでて元のログイン画面に戻ってしまいます。でも大丈夫です。再度、ログインを試みてください。今度はGnome2で無事にログインできるでしょう。以降は毎回Gnome2でログインするようになります。
これでDebian Wheezyのインストールは完了です。
‘最後まで読んで頂いた方へ、
手間と時間が大変かかりますので、
インストール後の全ファイル一式をtarballでまとめたものを
におきました。よければご利用ください。
K.1028 (土曜日, 12 7月 2014 11:01)
>(2014年4月29日時点で)公式CuBox-i WikiサイトのDebianを試しにインストールしてみましたが、ネットワーク接続ができないようなので、あまり役に立ちそうにありません。
初期時点でNICがBOOT時にONになってないだけですよ。
書き換えてやれば使用可能です。