armhf.comで配布しているUbuntuイメージはボタン押さないと起動できない件
Beaglebone blackにUbuntuを入れるとき、armhf.comのやり方では、UbuntuというかLinux起動できないとトモさんに言われた。
彼は、ddで書けるこのイメージを使っているようだが、SDから起動できないらしい。
http://www.armhf.com/index.php/download/
基板のボタンを押しながら起動すると上がってくるらしい。
わたしは、elinux.orgのを使っているので、そういう不自由な目にあったことはない。
http://elinux.org/BeagleBoardUbuntu
そういえば、ABC2013Autumnのバザール会場でも同じようなこと言ってた人いたな...
?「SDにUbuntu入れると、ボタン押さないと起動しないですよね?」
私「え? できますよ?」
?「え? そうですか?」
で済ましてしまつてスマヌスマヌ。
ubootのプロンプトで止まっているそうなので、uEnv.txtの中身がおかしいようだ。
確認してもらうと、/boot/uImageを探して無いと言っているようだ。
/boot/zImageはあるのだそうだけど、それがmkimageされたものかどうかはわかららないみたい。
fileコマンドで見てっていったけど、やってくんないし。
しょうがないから、見てみることに。
kinneko@L2012:~$ mkdir BBB_ubuntu kinneko@L2012:~$ cd BBB_ubuntu/ kinneko@L2012:~/BBB_ubuntu$ wget http://s3.armhf.com/debian/saucy/bone/ubuntu-saucy-13.10-armhf-3.8.13-bone30.img.xz
ついでに、Method 2: u-boot and rootfsのほうも落としておく。
kinneko@L2012:~/BBB_ubuntu$ wget http://s3.armhf.com/boards/bbb/uboot-bone.tar.xz kinneko@L2012:~/BBB_ubuntu$ wget http://s3.armhf.com/debian/saucy/bone/ubuntu-saucy-13.10-armhf-rootfs-3.8.13-bone30.tar.xz
確認。
kinneko@L2012:~/BBB_ubuntu$ ls -lh total 148M -rw-r--r-- 1 kinneko kinneko 154K Nov 24 06:16 uboot-bone.tar.xz -rw-r--r-- 1 kinneko kinneko 75M Nov 24 06:33 ubuntu-saucy-13.10-armhf-3.8.13-bone30.img.xz -rw-r--r-- 1 kinneko kinneko 73M Nov 24 06:21 ubuntu-saucy-13.10-armhf-rootfs-3.8.13-bone30.tar.xz kinneko@L2012:~/BBB_ubuntu$ md5sum ./* d95126f87191de8064e9666983d11cfc ./uboot-bone.tar.xz 8173dffeaae12421a5542c3578afdd82 ./ubuntu-saucy-13.10-armhf-3.8.13-bone30.img.xz e53b9a7884af980f552a21057a0bd0d2 ./ubuntu-saucy-13.10-armhf-rootfs-3.8.13-bone30.tar.xz
uboot-boneがチェックサム違うよ...
Webには、
md5: ab57368cddc6dba498c874330a319639
って書いてあるんだけどな...
めんどくさいし、展開できればいいか。
展開。
kinneko@L2012:~/BBB_ubuntu$ xz -dv ./* ./uboot-bone.tar.xz (1/3) 100 % 153.4 KiB / 470.0 KiB = 0.326 ./ubuntu-saucy-13.10-armhf-3.8.13-bone30.img.xz (2/3) 100 % 74.7 MiB / 1832.0 MiB = 0.041 184 MiB/s 0:09 ./ubuntu-saucy-13.10-armhf-rootfs-3.8.13-bone30.tar.xz (3/3) 100 % 72.8 MiB / 259.8 MiB = 0.280 47 MiB/s 0:05
Method 2: u-boot and rootfsのubootアーカイブから見る。
kinneko@L2012:~/BBB_ubuntu$ tar xvf uboot-bone.tar MLO u-boot.img uEnv.txt
kinneko@L2012:~/BBB_ubuntu$ cat uEnv.txt mmcpart=2 optargs=fixrtc uenvcmd=i2c mw 0x24 1 0x3e; kd=0; if test $mmcdev -eq 1; then mmc dev 0; if mmc rescan; then kd=1; fi; mmc dev 1; fi; setenv mmcroot /dev/mmcblk${kd}p${mmcpart} ro loadfdt=load mmc ${mmcdev}:${mmcpart} ${fdtaddr} ${bootdir}/dtbs/${fdtfile} loadimage=load mmc ${mmcdev}:${mmcpart} ${loadaddr} ${bootdir}/${bootfile}
肝心のマクロ部分がわかんないな...
imageのほうを見る。
kinneko@L2012:~/BBB_ubuntu$ sudo fdisk -l ubuntu-saucy-13.10-armhf-3.8.13-bone30.img Disk ubuntu-saucy-13.10-armhf-3.8.13-bone30.img: 1920 MB, 1920991232 bytes 255 heads, 63 sectors/track, 233 cylinders, total 3751936 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x80008000 Device Boot Start End Blocks Id System ubuntu-saucy-13.10-armhf-3.8.13-bone30.img1 * 2048 4095 1024 1 FAT12 ubuntu-saucy-13.10-armhf-3.8.13-bone30.img2 4096 3751935 1873920 83 Linux
第一パーティションをマウントする。
2048x512=1048576。
kinneko@L2012:~/BBB_ubuntu$ sudo mount -o loop,offset=1048576 ubuntu-saucy-13.10-armhf-3.8.13-bone30.img /media
kinneko@L2012:~/BBB_ubuntu$ ls -l /media/ total 466 -rwxr-xr-x 1 root root 104320 Nov 17 12:54 MLO -rwxr-xr-x 1 root root 370652 Nov 17 12:54 u-boot.img -rwxr-xr-x 1 root root 340 Nov 17 12:54 uEnv.txt
kinneko@L2012:~/BBB_ubuntu$ cat /media/uEnv.txt mmcpart=2 optargs=fixrtc uenvcmd=i2c mw 0x24 1 0x3e; kd=0; if test $mmcdev -eq 1; then mmc dev 0; if mmc rescan; then kd=1; fi; mmc dev 1; fi; setenv mmcroot /dev/mmcblk${kd}p${mmcpart} ro loadfdt=load mmc ${mmcdev}:${mmcpart} ${fdtaddr} ${bootdir}/dtbs/${fdtfile} loadimage=load mmc ${mmcdev}:${mmcpart} ${loadaddr} ${bootdir}/${bootfile}
同じか。
kinneko@L2012:~/BBB_ubuntu$ sudo umount /media
第二パーティションを読みに行っていて、${bootdir}/${bootfile}が/boot/uImageなら辻褄が合うかな。
4096x512=2097152
kinneko@L2012:~/BBB_ubuntu$ sudo mount -o loop,offset=2097152 ubuntu-saucy-13.10-armhf-3.8.13-bone30.img /media
kinneko@L2012:~/BBB_ubuntu$ ls /media/ bin dev home lost+found mnt proc run srv tmp var boot etc lib media opt root sbin sys usr kinneko@L2012:~/BBB_ubuntu$ ls /media/boot/ System.map-3.8.13-bone30 dtbs vmlinuz-3.8.13-bone30 config-3.8.13-bone30 uboot zImage kinneko@L2012:~/BBB_ubuntu$ ls /media/boot/uboot/
ほんとだ。zImageだよ。
${bootfile}がどこに書かれているかが問題だな。
おそらく、uEnvに書かれていないパラメータは、boards.cfgとかで直に埋め込みか。
kinneko@L2012:~/BBB_ubuntu$ sudo find /media/ | grep uImage
uImageはいないのは確認できた。
ubootで自力ロードしているって感じか。
とりあえずのテスト可能なことというと、${loadaddr}がどこかでちゃんと定義されているのであれば、zImageをuImageに変えるだけで起動してくるんじゃないだろうか。
まぁ、ほんとはちゃんとやったほうがいいけどね。
トモさんに、それはやってみたけど駄目だったと言われた。
こんなquick hackでは倒せないか。
こんどは実機でいじってみやう。
自分的には、coreから入れるのが好みかも。