まずboot.img展開に必要なもの
・boot.img(初期ROM等から入手)
・split_bootimg.pl(ググればDLできるはず)
・mkbootfs, mkbootimg →https://gist.github.com/1087757この辺参照してください
まずは適当なディレクトリ(フォルダ)を作って
そこに上のファイルをすべて移動
移動したら初めにboot.imgの展開
./split_bootimg.pl boot.img
これを実行すると
boot.img-kernel boot.img-ramdisk.gz この二つのファイルができると思います。
次にboot.img-ramdisk.gzを展開
まずディレクトリを作成
mkdir ramdisk
作ったディレクトリに移動
cd ramdisk
で、次のコマンドを実行
zcat -dc ../boot.img-ramdisk.gz | cpio -i
これでできたramdiskの中身が
SC-02Bの時のinitramfsにあたるのかな?とか思ってます。
カーネルソースはいじらずに
ramdiskにできたinit.rcなどなどをいじるだけでも
カスタムできると思います。
まだ自分は勉強中ですがw
で、これをもう一度boot.imgの形式に戻します。
ramdiskのディレクトリからいったん出ます
cd ../
それからramdiskディレクトリをアーカイブ(この辺の意味はよくわってません^^;)
./mkbootfs ./ramdisk | gzip > new-boot.img-ramdisk.gz
作成した一時ファイルシステムのファイルと、元のカーネルをアーカイブします。
./mkbootimg --cmdline 'loglevel=4 usb_id_pin_rework=true'\
--kernel boot.img-kernel --ramdisk
new-boot.img-ramdisk.gz --base ?? -o new_boot.img
これでnew_boot.imgの完成
この時の
--cmdline ' '←この中はsplit_bootimg.plを実行したときに
Command line:~ の部分をそのまま入力
--base の後の数値は今調べ中^^;
tags_addrってのの数値らしいですが、調べ方が。。。
頑張って探しますw
[追記]
hexdump boot.img | head -n1
このコマンドで出てきた数値の一番後ろ4ケタが
--baseの後ろに打ち込む数値なようです。
自分の場合
000000 4e41 5244 494f 2144 49f4 0049 8000 4040
だったので
0x40400000かなと思ってます^^;
./mkbootimg --cmdline 'loglevel=4 usb_id_pin_rework=true'\
--kernel boot.img-kernel --ramdisk new-boot.img-ramdisk.gz --base 0x40400000 -o new_boot.img
になるのかなと思います。
まだ試してないので、これが正解かどうかわかりません^^;
bootをいじるので、失敗すると文鎮になる可能性大なので
自己責任でお願いします
0 件のコメント:
コメントを投稿