into the void

ソフトウェアに関する雑多な調査日記

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に書き込むという手順。