2011/11/28
Ice Cream Sandwich を BeagleBoard-xM 用にビルドしてみた (4) - SDカードへ書き込み
まず、最初は Androidの実行ディレクトリを tar で固めます。
root 以下と system 以下を直接コピーすると、うまくいかないみたいなので、スクリプトに頼ってしまいましょう。
$ cd ~/mydroid/out/target/product/beagleboard $ mkdir android_rootfs $ cp -r root/* android_rootfs $ cp -r system android_rootfs $ sudo ../../../../build/tools/mktarball.sh ../../../host/linux-x86/bin/fs_get_stats android_rootfs . rootfs rootfs.tar.bz2
次はブートスクリプトを作成します。
u-boot が参照するスクリプトで、これがないとfastbootモードに入ってしまい起動しません。
$ cd ~/RowboatTools/mk-bootscr $ export PATH=$PWD:$PATH $ ./mkbootscr
一度、このスクリプトを実行すると、boot.cmd というファイルが出来上がります。
中身は以下のような感じ
boot.cmd
if fatload mmc 0 82000000 uImage then echo ***** Kernel: /dev/mmcblk0p1/uImage ***** fi echo ***** RootFS: /dev/mmcblk0p2 ***** setenv bootargs 'console=ttyO2,115200n8 androidboot.console=ttyO2 mem=256M root=/dev/mmcblk0p2 rw rootfstype=ext3 rootdelay=1 init=/init ip=off omap_vout.vid1_static_vrfb_alloc=y vram=8M omapfb.vram=0:8M omapdss.def_disp=dvi omapfb.mode=dvi:1024x768-16' bootm 0x82000000
もし、ブートスクリプトを変更したい場合は、このファイルを変更し、以下のコマンドを実行することで、ブートスクリプト boot.scr を作成しなおすことができます。
$ ./mkimage -A arm -O linux -T script -C none -a 0 -e 0 -n 'Execute uImage.bin' -d boot.cmd boot.scr
次のステップに進む前にSDカードリーダのデバイスを確認しておきます。
確認する方法はいろいろありますが、ずっとコマンドラインで作業して飽きてきたので、たまには GUI を使おうかと思います。
Dash home → Disk Utility
Disk Utilityの画面で、Device の欄を確認します。
以下の場合は /dev/sdb です。
似たようなデバイスが複数ある場合は、SDカードを挿抜したりすれば確認できます。
SDカードをリーダに挿入して、以下のコマンドを実行します。ただ、私が落としてきたバージョンには、バグがありました。このエントリの最後にその修正について書いてあるので、もしバグが健在の場合は修正してから実行します。
また、“/dev/sdb”のところは先ほど確認したデバイスに変更します。そのデバイスはフォーマットされてしまうので気を付けてください。
$ cd ~/mydroid $ sudo ~/RowboatTools/mk-mmc/mkmmc-android.sh /dev/sdb \ x-loader/MLO \ u-boot/u-boot.bin \ kernel/arch/arm/boot/uImage \ ~/RowboatTools/mk-bootscr/boot.scr \ out/target/product/beagleboard/rootfs.tar.bz2
SDカードがアンマウントされているのを確認したら、BeagleBoard-xM に差し込み立ち上げます。
さー、これで立ち上がるぞ。と思ったんですが、Uncompressing Linux... done, booting the kernel. と表示されたあと、ウンともスンとも言いません。何かうまくいかないです。
2011/11/30 追記 とりあえず、uImage をrowboatの提供してくれている、prebuiltバージョンで差し替えたら、起動まではしました。
色がおかしいし、マウスは動きませんが…
現時点では、カーネルのビルドに失敗していたであろうことが予想されます。
これから、原因を調査しますが、いつまでかかることやら…
mkmmc-android.sh のバグについて
私が落としてきたRowboatTools/mk-mmc/mkmmc-android.sh は改行コードが CR/LF でした。
そのため、以下のようなエラーが出て止まってしまいました。
bash: ./RowboatTools/mk-mmc/mkmmc-android.sh: /bin/bash^M: bad interpreter: No such file or directoryそんなわけで、以下のようにして、改行コードを変換してやる必要がありました。
$ cd ~/RowboatTools/mk-mmc/ $ mv mkmmc-android.sh mkmmc-android.sh.bak $ nkf -Lw mkmmc-android.sh.bak > mkmmc-android.sh
また、パーミッションの設定にもバグがあるようで、起動に失敗しました。
これを回避するためには、L101行目に -R オプションを付けてやる必要があります。
chmod -R 755 /mnt
ちょっと、取ってくるタイミングが悪かったようです。。。
0 件のコメント:
コメントを投稿