2011年3月16日水曜日

GRI40なNexusOneのカーネルビルド方法。

いまさら感はありますが、自分のために。GRI40でkernelのバージョンが2.6.35.7となり
Nexus Sと同じになりました。そのためデバイスドライバ等も入れ替えることにします。

まずkernelのソースをダウンロード。
git clone git://android.git.kernel.org/kernel/msm.git
branchを切らないとデフォルトで2.6.35なので、そのままビルド。以下の方法でkernelをconfigしておく。
make mahimahi_defconfig ARCH=arm
make menuconfig ARCH=arm
(このへんでTUNとかをEnableにしてもいい)
 コンパイル。
make -j2 ARCH=arm CROSS_COMPILE=/home/somewhere/android/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-
GRI40のboot.imgからramdiskのイメージを予め抜き出しておくといいかも。
当然rootが必要ですが。
adb shell
su
cat /dev/mtd/mtd2 > /sdcard/nexusoneboot.img
exit
exit
adb pull /sdcard/nexusoneboot.img .
で、切り分けます。Command lineの部分はコピペしてとっておいてmkbootimgで指定する。
#このへんの各種ツールは以前のエントリ参考にしてくださいね。
split_bootimg.pl nexusoneboot.img
Page size: 2048 (0x00000800)
Kernel size: 2227684 (0x0021fde4)
Ramdisk size: 281360 (0x00044b10)
Second size: 0 (0x00000000)
Board name: 
Command line: no_console_suspend=1 msmsdcc_sdioirq=1 wire.search_count=5
Writing nexusoneboot.img-kernel ... complete.
Writing nexusoneboot.img-ramdisk.gz ... complete.
作成されたzImageをbootイメージ作成ディレクトリにコピーしてmkbootimgを実行する。
Nexus Sのときとは少しパラメータが違うので注意すること。
cp ~/android/dev/msm/arch/arm/boot/zImage .
mkbootimg --cmdline 'no_console_suspend=1 msmsdcc_sdioirq=1 wire.search_count=5' --kernel zImage --ramdisk nexusoneboot.img-ramdisk.gz --base 0x20000000 -o mybootN1.img
最後にbcm4329.koを入れ替えないとWIFIがつかえないので、これを入れ替えて完了。
/system/lib/modules/に書きこむからRead/Writeでremountする。
adb shell
su
mount -o remount,rw /dev/block/mtdblock2 /system
exit
exit
adb push bcm4329.ko /system/lib/modules/
以上で再起動してWIFIが使えたらOK。GRI40にするには、いろんなROM経由したりする人もいるけど
自分は上記の方法が一番簡単かな?OTA来るのも面白いし。ま、GRI40直ならもっと楽だね。

0 コメント:

コメントを投稿