今回は、CuBox-iにDebbianをインストールしてみましょう。
そこで、ftp.debian.orgサイトにあるネットワーク・インストーラを使ってCuBox-iにDebian Wheezyをインストールすることにしましょう。

1. 準備
1) まずは、次のものを用意してください。

  • 8GB以上の microSDカード
  • Linuxを搭載したPC(ここではUbuntuを載せたPCを例に説明します。)でmicorSDカードの読み書きが行えるもの。
  • microUSB – USBケーブル (CuBox-iとPCの接続用)
  • CuBox-iに付属していたオリジナルSDカード(Androidのbootファイルを使用します。)

2) PCにシリアル通信アプリminicomをインストールします。

$ sudo apt-get install minicom

通信パラメータをセットしておきましょう。/etc/minicom/minirc.dfl ファイルをテキスト・エディタを使って作成して下の用に記述しておきます。

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アプリを使うと簡単にできます。

gpart01

microSDカードのデバイス(この例では/dev/sdg)をセレクトします。

gpart02

[パーティション]->[新規]メニューを選択して、全体領域を指定、ファイルシステムはext4を選択します。そして[追加]ボタンをクリックします。

gpart03

[編集]->[保留中の全ての操作を適用する]を選択します。

gpart04

[適用]ボタンをクリックします。

gpart05

[閉じる]ボタンをクリックします。これでフォーマットできましたのでGPartアプリを終了します。

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

SPLとu-boot.imgというファイルが作成されたことを確認します。
フォーマットしたmicorSDカードにSPLとu-boot.imgを書き込みます。
micorSDカードのデバイスが/dev/sdgに割り当てられているものと仮定します。

 $  sudo dd if=SPL of=/dev/sdg bs=1K seek=1
$ sudo dd if=u-boot.img of=/dev/sdg bs=1K seek=42

これで、U-boot可能なmicroSDカードになりました。
ここで、一旦、フォーマットしたmicroSDカードはPCから抜き取ります。

5) カーネルを作成しておきましょう。実際の作成方法は「CuBox-i用カーネル作成」を参照してください。
a) Ver3.10ベースのカーネルzInageを作成した場合
zImage, lib/firmware/*, lib/modules/* ファイルの他に、
CuBox-iにUbuntuをインストール」で作成した 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/

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-5)で作成したカーネルがVer3.10ベースのzImageか、Ver3.0.5ベースのuImageかによって、ちょっと異なってきます。
a) Ver3.10ベースのカーネルzInageを作成した場合

$ 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ファイルをテキスト・エディタを使って作成します。内容は下の用に記述しておきます。

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のインストールは完了です。