カーネルイメージの展開と再構築について簡潔にまとめておきます
環境は、Vmwareを用いてLinux(Ubuntu 10.10)上で行いました。
1.本体から
cat /dev/mtd/mtd0ro > /data/local/boot.img
などして持ってきたイメージをUbuntuへ移動
2.boot.imgをunubinizeします。
$ ./unubinize.pl boot.img
カレントディレクトリにboot.img.outが生成されます。
3.split_bootimg.plを用いてunubinizeしたイメージをkernelとramdiskに分離します。
$ ./split_bootimg.pl boot.img.out
4.分離したイメージを再結合
分離したramdiskはgzで固められてますので、解凍することによってinit.rcなどに編集を加える場合はここでします。
編集が終わりましたら、再びcpio形式でアーカイブします。
ramdiskとkernelはmkbootimgでイメージにします。
mkbootimg
$ ./mkbootimg --kernel boot.img.out-kernel --ramdisk boot.img.out-ramdisk.cpio --cmdline "console=ttyDCC0 androidboot.hardware=qcom" --base 0x00200000 -o my_mkboot.img
5.結合したイメージをubinizeする
ubinizeはmtd-utilsに含まれていますので
$ sudo apt-get install mtd-utils
としてmtd-utilsをインストールするとコマンドが使用できます。
また、ubinizeにはオプションを指定する必要がありますのでubi.cfgを用意します。
ubi.cfgの中身は以下です。
[boot]
mode=ubi
image=boot.img
vol_id=0
vol_size=200MiB
vol_type=dynamic
vol_name=boot
vol_flags=autoresize
最後の改行を忘れずに。
このcfgを使う場合、先ほど作製したmy_mkboot.imgをboot.imgとリネームしておきます。
$ ubinize -o boot2.img -p 128KiB -m 2048 -O 256 ubi.cfg
6.実機でflash_image
boot2.imgを実機へ移しnandlock解除してflash_imageします。
./flash_image recovery boot2.img
なお、起動できずにdocomoロゴで止まる場合などは、mkbootimgやsplit_bootimgを別のものに差し替えるか、ソースからビルドしてください。
最終更新:2011年12月08日 17:48