pandaboardにUbuntuを入れてみる
Pandaboard ESを買った。
Linaro LinuxがベースになっているUbuntu 12.04を入れて、その後でカーネルとカーネルモジュールの入れ替えをやってみる。
- linaro-media-createツールを使ってブートイメージを作る
https://wiki.linaro.org/Platform/DevPlatform/Ubuntu/ImageInstallation
https://wiki.linaro.org/Resources/HowTo/KernelDeploy
SDカードにブートイメージを作る
ボードに依存しないrootfs用のファイルとボードに依存したhwpackとよばれるカーネルやブートローダーなどが入ったファイルをダウンロードしておく。
最新のスナップショットビルドである12.08のフォルダからダウンロードした。GUIは使わない予定なので下記の二つのファイルを選んだ。これで最小構成のUbuntu 12.04 のイメージができるはず。
wget http://releases.linaro.org/12.08/ubuntu/precise-hwpacks/hwpack_linaro-lt-panda_20120826-368_armhf_supported.tar.gz wget http://releases.linaro.org/12.08/ubuntu/precise-images/nano/linaro-precise-nano-20120826-361.tar.gz
できあがったSDカードの中身をみてみる。Beagleboardのときと同じように一つ目のパーティションにブートローダやカーネルが入っていて、二つ目のパーティションがrootfのツリー構造になっていた。
$ ls /dev/sdb* /dev/sdb /dev/sdb1 /dev/sdb2 $ mkdir /media/tmp1 $ mount /dev/sdb1 /media/tmp1 $ mkdir /media/tmp2 $ mount /dev/sdb2 /media/tmp2
$ ls /media/tmp1 total 7795 drwxr-xr-x 2 root root 512 Jan 1 1970 . drwxrwxr-x 4 xxxxx xxxxx 4096 Sep 1 19:12 .. -rwxr-xr-x 1 root root 2018 Sep 1 19:06 board.dtb -rwxr-xr-x 1 root root 474 Sep 1 19:06 boot.ini -rwxr-xr-x 1 root root 474 Sep 1 19:06 boot.scr -rwxr-xr-x 1 root root 402 Sep 1 19:06 boot.txt -rwxr-xr-x 1 root root 27600 Sep 1 19:05 MLO -rwxr-xr-x 1 root root 195132 Sep 1 19:05 u-boot.img -rwxr-xr-x 1 root root 4624984 Sep 1 19:05 uImage -rwxr-xr-x 1 root root 3124574 Sep 1 19:06 uInitrd
$ ls /media/tmp2 total 104 drwxr-xr-x 23 root root 4096 Sep 1 19:09 . drwxrwxr-x 4 xxxxx xxxxx 4096 Sep 1 19:12 .. drwxr-xr-x 2 root root 4096 Aug 27 01:42 bin drwxr-xr-x 3 root root 4096 Sep 1 19:02 boot drwxr-xr-x 3 root root 4096 Aug 27 01:40 dev drwxr-xr-x 2 root root 4096 Aug 27 01:44 .disk drwxr-xr-x 62 root root 4096 Sep 1 19:09 etc drwxr-xr-x 3 root root 4096 Aug 27 01:42 home lrwxrwxrwx 1 root root 39 Sep 1 19:01 initrd.img -> /boot/initrd.img-3.4.0-2-linaro-lt-omap drwxr-xr-x 12 root root 4096 Sep 1 19:01 lib drwx------ 2 root root 16384 Sep 1 19:03 lost+found drwxr-xr-x 2 root root 4096 Aug 27 01:33 media drwxr-xr-x 2 root root 4096 Apr 19 18:33 mnt drwxr-xr-x 2 root root 4096 Aug 27 01:33 opt drwxr-xr-x 2 root root 4096 Apr 19 18:33 proc drwx------ 2 root root 4096 Aug 27 01:42 root drwxr-xr-x 5 root root 4096 Aug 27 01:40 run drwxr-xr-x 2 root root 4096 Sep 1 19:02 sbin drwxr-xr-x 2 root root 4096 Mar 5 22:05 selinux drwxr-xr-x 2 root root 4096 Aug 27 01:33 srv drwxr-xr-x 2 root root 4096 Apr 14 18:29 sys drwxrwxrwt 2 root root 4096 Sep 1 19:02 tmp drwxr-xr-x 10 root root 4096 Aug 27 01:33 usr drwxr-xr-x 11 root root 4096 Aug 27 01:42 var lrwxrwxrwx 1 root root 35 Sep 1 19:01 vmlinuz -> boot/vmlinuz-3.4.0-2-linaro-lt-omap
イメージの元になった二つのファイルの中身もみてみた。
hwpackの中身。ブートローダ(MLO、uboot.img)やカーネル(vmlinux)、カーネルモジュール(*.ko)が含まれている。後者のふたつはdebパッケージ形式になっている。
FORMAT metadata spl/MLO u-boot/u-boot.img pkgs/ pkgs/devio_1.2-1build1_armhf.deb pkgs/linux-image-linaro-lt-omap_3.4.0.2.2_armhf.deb pkgs/flash-kernel_2.28ubuntu42.2linaro1_armhf.deb pkgs/libdw1_0.152-1ubuntu3_armhf.deb pkgs/libelf1_0.152-1ubuntu3_armhf.deb pkgs/wireless-regdb_2011.04.28-1ubuntu3_all.deb pkgs/ti-uim_0.0+git20110201+c738944-1linaro6_armhf.deb pkgs/linux-image-3.4.0-2-linaro-lt-omap_3.4.0-2.2~ci+120825182553_armhf.deb pkgs/iw_3.2-1_armhf.deb pkgs/u-boot-tools_2011.09-2_armhf.deb pkgs/linux-tools-common_3.2.0-29.46_all.deb pkgs/linux-headers-linaro-lt-omap_3.4.0.2.2_armhf.deb pkgs/libnl-3-200_3.2.3-2ubuntu2_armhf.deb pkgs/linux-firmware_1.80~linaro3_all.deb pkgs/linux-linaro-tools-3.4.0-2-linaro-lt-omap_3.4.0-2.2~ci+120825182553_armhf.deb pkgs/uboot-mkimage_2011.09-2_all.deb pkgs/linux-tools-linaro-lt-omap_3.4.0.2.2_armhf.deb pkgs/crda_1.1.2-1ubuntu1_armhf.deb pkgs/linux-headers-3.4.0-2-linaro-lt-omap_3.4.0-2.2~ci+120825182553_armhf.deb pkgs/libnl-genl-3-200_3.2.3-2ubuntu2_armhf.deb pkgs/hwpack-linaro-lt-panda_20120826-368_armhf.deb manifest pkgs/Packages sources.list.d/ sources.list.d/security.list sources.list.d/linaro.list sources.list.d/updates.list sources.list.d/ubuntu.list sources.list.d.gpg/
ボード非依存なrootfsファイルの方はファイル数が多いので省略。
linaro-image-createコマンドの実行時にはQemuが走っているようなので、おそらくQemu上のARM環境で最小限のrootfsをつかってLinuxを動かした後で、aptで必要なパッケージをインストールしているのだと思う。そして、できあがったrootfsをSDに書き込むという手順。