https://naba-san.hatenablog.com/


boot.img とか recovery.img の編集 (mkbootimg, mkbootfs のコンパイル)

Ubuntu 10.04 で確認。

必要なもの

  • /dev/mtd とかから dump した raw イメージっぽいもの
  • split_bootimg.pl

https://gist.github.com/1087743 (base address 出力なし)
https://gist.github.com/1832541 (base address 出力あり) ←推奨

  • mkbootimg (mkbootfs)

Android ソースコードの system/core/ (libmincrypt, cpio 等) が必要。

手順

mkbootimg のコンパイル

AOSP 純正と Cyanogen 版で利用可能なオプションが異なる。基本的に Cyanogen ics ツリーからの入手を推奨。
http://github.com/CyanogenMod/android_system_core/tree/ics/

なぜかコンパイル手順が単体で github に上がってる‥
https://gist.github.com/1087757

うちの場合だとこんな具合になる。

$ cd ~/cm_ics
$ cd system/core/libmincrypt/
$ gcc -c *.c -I../include
$ ar rcs libmincrypt.a *.o
$ cd ../mkbootimg
$ gcc mkbootimg.c -o mkbootimg -I../include ../libmincrypt/libmincrypt.a
$ cd ../cpio
$ gcc mkbootfs.c -o mkbootfs -I../include

~/cm_ics/system/core/mkbootimg/ に mkbootimg、~/cm_ics/system/core/cpio/ に mkbootfs が出来上がってるはず。

boot.img の編集
  • boot.img の展開

$ ./split_bootimg.pl boot.img

boot.img-kernel と boot.img-ramdisk.gz が生成される。

$ mkdir ramdisk
$ cd ramdisk
$ zcat ../boot.img-ramdisk.gz |cpio -i

ramdisk ディレクトリ下に色々展開されるので、好きなように編集する。今回は default.prop を編集した。

$ vim default.prop

$ cd ../
$ ./mkbootfs ramdisk |gzip -c >boot.img-ramdisk_rebuild.gz
$ mkbootimg --kernel boot.img-kernel --ramdisk boot.img-ramdisk_rebuild.gz -o boot_modified.img

※ mkbootimg に使用するオプションとパラメータの値は端末ごとに異なる。パラメータが不明な場合はそもそも boot.img を編集すべきでないが、fastboot boot boot_rebuild.img とかで動作確認を繰り返すこと。