2011年5月5日木曜日

[DEV] Nexus S build custom kernel (2.3.4 base)

2.3.4のkernelがgoogleからリリースされましたね。基本的にはNexus S4G対応や、LCDディスプレイをもつNexus Sへの対応がメインのようです。あといろんなBugFixですね。

これまでkernelをいろいろいじくって遊んできましたが、満足度がたかくて効果的だったのは、Voodoo-sound対応、BLN対応、ext4対応、色温度D65->8500K対応、くらいでした。逆にあまり必要性を感じなくなってしまったのが、Overclocking、CPU・IOスケジューラ変更でした。Overlockingもたしかにベンチマークや体感は高速になりますが、消費電力が上がってしまうのと、安定度が多少落ちる印象でした。スケジューラまわりははっきり言って体感も出来ませんでしたし、BFS等は安定度が低くなる印象でした。

今回はOverclockingとCPU/IOスケジューラ変更はやらずに、以下の方針で行くことにします。基本的に初期のNexus SなのでSuper AMOLEDのディスプレイのもののためのkernelとします。現在は4G(Wimax)対応とかLCDディスプレイとかいろいろありますけどね。。

1.Voodoo sound patch
2.BLN
3.ext4 (kernelは関係ないです)
4.D65->8500Kへの色温度変更
5.起動ロゴ変更w
6.TUN/TAPサポート

BFQあたりは適用してもいいかもしれないですが、なるべくノーマルに近い構成で、消費電力等をチェックして行きたいと考えました。実際、2.3.4のノーマルkernelだと消費電力が抑えられたような印象があります。全部入りがほしい人はNetarchyさんとかのkernelいれればいいですね。今回も必要なpatchの生成はNetarchyさんのkernelからいただきますw。

まず、2.3.4のオリジナルkernelをダウンロードしてきます。
git clone git://android.git.kernel.org/kernel/samsung.git
次にNetarchyさんのkernelをダウンロードして、patchを生成します。
git clone https://github.com/netarchy/nexus-s.git
cd nexus-s
git format-patch remotes/origin/android-samsung-2.6.35
(生成されます)
いただくのは
0041-Voodoo-sound-v8.patch
0042-initial-bln-support-v4.patch
でOK。オリジナルのディレクトリに移動してgitでpatchを当てます。
#必ずしも同じファイル名のパッチとはかぎらないので注意してみてください。
git am ../nexus-s/0041-Voodoo-sound-v8.patch
git am ../nexus-s/0042-initial-bln-support-v4.patch
次に、BootLogo、ext4 hack導入、色温度変更、起動ロゴ変更、TUN/TAP導入ですが。以前のエントリと同じなので省略します。知りたい人は以前のエントリ見てください。

ビルドしてから、いつものようにramdiskイメージを作成して、bootイメージを作成します。
make herring_defconfig ARCH=arm
make menuconfig ARCH=arm
(TUN/TAP等をここでenableに)
そしてビルド
make -j2 ARCH=arm CROSS_COMPILE=/home/somewhere/android/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi
zImageができたら、bootイメージを作成します。
mkbootimg --cmdline 'console=ttyFIQ0 no_console_suspend' --kernel zImage --base 0x30000000 --pagesize 4096 --ramdisk new.ramdisk.image.gz -o creamsboot234.img
できあがってboot.imgで普通に起動できるようであれば、これを適用します。同時にbcm4329.koも適用します。自分はdefault.propのro.secure=0にするramdiskイメージを用意することで、adb remountで/systemをrwでリマウントしやすくしてます。ro.secure=1な状態の人はbcm4329.koを入れるには/systemをrwでリマウントしてくださいね。
adb reboot bootloader
fastboot boot creamsboot234.img
adb remount
adb push bcm4329.ko /system/modules/
adb reboot bootloader
fastboot flash boot creamsboot234.img
fastboot reboot
のように、はじめに新しいkernelで起動してみて、その状態で/systemをrwでリマウントし、bcm4329.koをpushしてしまいます。その後boot領域にflashして完了です。

以上、試す場合は、くれぐれも自己責任でよろしく。

0 コメント:

コメントを投稿