なにかいいアイデアはないものか。。とりあえず、オリジナルkernelビルドの続きをやることにします。
前回は、initramfs抜きのzImageを作成しましたが、今回はかなり強引にinitramfsを準備してみます。参考になるのは下記のURL。supercurioさんのUPしてるinitramfsです。
https://github.com/GalaxySII/initramfs-galaxysiiGT-I9100用のいくつかのバージョンのものと、KOREA版のやつが上がってます。これらを参考に、SC-02Cからadb pullでファイルを抜き出します。はじめに上記のinitramfsたちを落としておきます。
git clone https://github.com/GalaxySII/initramfs-galaxysii.git .. .取り出すファイルなどは下記の感じw
data/ dev/ lib/ proc/ res/ sbin/ sys/ system/ vendor/ default.prop fota.rc init init.goldfish.rc init.rc init.smdkc210.rc lpm.rc recovery.rc ueventd.goldfish.rc ueventd.rc ueventd.smdkc210.rcちゃんとサブディレクトリもチェックして、必要なものを全部取り出します。自分がやった限りではpermissionに阻まれることはありませんでした。これらのファイルをinitramfs_sc02c_KF2というディレクトリにコピーします。一部symlinkあるのでそれのリンクの再現も忘れずに行います。その後permissionを同様にあわせます。
lib res sbin vendorはサブディレクトリもちゃんと再現しましょう。ほかのディレクトリは空でOK。抜け漏れがないか、gitで落としたinitramfsたちを参考にチェックしておきましょう。大丈夫そうなら、ここでdefault.propをいじってsecure=0(insecure)にしておきます。パラメータいじりたければこのあたりでやっておきます。
vi default.prop --- # # ADDITIONAL_DEFAULT_PROPERTIES # ro.secure=0 ro.allow.mock.location=0 ro.debuggable=0 persist.service.adb.enable=0 ---
さて、これでinsecureなinitramfsが用意できましたw。次にこれを取り込んだkernelの構築です。展開するところから行きましょう。
tar xvfz GT-I9100_Kernel_Gingerbread.tar.gz cd kernelこの後Makefileのpermissionをいじって、CROSS_COMPILEに指定されるコンパイラへのpath-prefixを指定します。
CROSS_COMPILE ?= /somewhere/android_dev/arm-2009q3/bin/arm-none-eabi-次に、defconfigをいじって、先ほど作成したinitramfsの位置をおしえます。男らしくdefconfigをviで編集します。
cd arch/arm/configs vi c1_rev02_jpn_ntt_defconfig --- CONFIG_INITRAMFS_SOURCE="/somewhere/android_dev/galaxys2/initramfs/initramfs_sc02c_KF2" --- cd ../../../ここまできたらあとはビルドするだけです。前回と同様に。
make c1_rev02_jpn_ntt_defconfig make menuconfig ( if needed ) make -j2で、しばらく待って出来上がりです。次回はできあがったzImageを検証してみたいと思います。ポイントは独自kernelと既存モジュールとの整合性(initramfsにはじめから配置されてますから)をversion magicから推測。zImageからinitramfsを抽出できるか?といったところでしょうか。
#そうこうしてるまにXDAあたりで「抜けたぜ!」って報告あるかなー。
この方法はversion magicがちゃんとしないぽいので、試しても焼かないほうがいいかな?
0 コメント:
コメントを投稿