アットウィキロゴ

boot.imgの展開と再構築


カーネルイメージの展開と再構築について簡潔にまとめておきます

環境は、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は何種類かあって分離したイメージが壊れることがありますので注意してください。
split_bootimg.pl


$ ./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
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。