Android: 4.0.3 Nexus S カーネルソースをコンパイルしインストール

Android4.0.3 Nexus S用のカーネル3.0.8のソースをダウンロードし、コンパイルして実機にインストールしてみました。

以下、android-building@googlegroups.com(https://groups.google.com/group/android-building)へのカーネルソース公開の投稿です。
(抜粋)
https://groups.google.com/group/android-building/msg/ff4e97808535b396?pl...



Kernel sources that match 4.0.3 are available
Jean-Baptiste Queru 2011年12月17日, 午後12:29

I've just pushed the kernel sources that match the crespo, stingray and tuna kernel binaries for 4.0.3.

crespo: android-samsung-3.0-ics-mr1 in kernel/samsung
stingray: android-tegra-moto-2.6.39 in kernel/tegra
tuna: android-omap-tuna-3.0 in kernel/omap

[新規にカーネルをインストールした後の画面]
1) カーネルバージョンを確認 2) WiFiが使えることを確認

[ダウンロード]

$ git clone https://android.googlesource.com/kernel/samsung.git  ←リポジトリのコピーを作る。samsung/.gitができる。
Cloning into samsung...
remote: Counting objects: 2083943, done
remote: Total 2083943 (delta 1744045), reused 2083943 (delta 1744045)
Receiving objects: 100% (2083943/2083943), 417.61 MiB | 2.75 MiB/s, done.
Resolving deltas: 100% (1744046/1744046), done.

$ du -s .
485256	.

$ cd samsung/
$ git checkout origin/android-samsung-3.0-ics-mr1  ←カーネルソースコードを取得
Checking out files: 100% (37465/37465), done.
Note: checking out 'origin/android-samsung-3.0-ics-mr1'.

$ ls
COPYING        Kconfig      REPORTING-BUGS  drivers   init    mm       security  virt
CREDITS        MAINTAINERS  arch            firmware  ipc     net      sound
Documentation  Makefile     block           fs        kernel  samples  tools
Kbuild         README       crypto          include   lib     scripts  usr

[user01@lx02 samsung]$ du -s .
1012532	.

[コンパイル]

$ export PATH=<Androidソースのルート>/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin:$PATH
$ export ARCH=arm
$ export CROSS_COMPILE=arm-eabi-
$ make herring_defconfig
$ ls -l .config
-rw-rw-r-- 1 user01 user01 71338  3月 20 18:50 2012 .config  ←.configができる
$ time make -j2  ←2CPUのマルチコアのノートPCでコンパイル。timeコマンドで時間を測ってみる。
............(省略)..........
  OBJCOPY arch/arm/boot/zImage
  Kernel: arch/arm/boot/zImage is ready

real	7m39.035s     ←コンパイルに約7分
user	9m49.243s
sys	1m5.439s

$ ls -l arch/arm/boot/zImage
-rwxrwxr-x 1 user01 user01 3353124  3月 20 19:00 2012 arch/arm/boot/zImage ←これがカーネル。これを使う。
$ mv <Androidソースのルート>/device/samsung/crespo/kernel <Androidソースのルート>/device/samsung/crespo/kernel.orig
$ cp arch/arm/boot/zImage <Androidソースのルート>/device/samsung/crespo/kernel

[system.imgを再生成]

$ cd <Androidソースのルート>
$ . build/envsetup.sh
$ lunch
You're building on Linux

Lunch menu... pick a combo:
     1. full-eng
     2. full_x86-eng
     3. vbox_x86-eng
     4. full_stingray-userdebug
     5. full_wingray-userdebug
     6. full_crespo-userdebug
     7. full_crespo4g-userdebug
     8. full_maguro-userdebug
     9. full_toro-userdebug
     10. full_tuna-userdebug
     11. full_panda-eng

Which would you like? [full-eng] 6

$ time make -j2
............(省略)..........
Install system fs image: out/target/product/crespo/system.img
out/target/product/crespo/system.img+out/target/product/crespo/obj/PACKAGING/recovery_patch_intermediates/recovery_from_boot.p total size is 164644456

real	5m29.692s  ←約5分で完了。ほとんどがディスクI/Oに掛かった時間と思われます。ソースはUSBディスクに置いています。
user	0m43.902s
sys	0m10.304s

$ cd out/target/product/crespo
$ ls -l kernel system.img
-rwxrwxr-x 1 user01 user01   3353124  3月 20 19:37 2012 kernel
-rw-r--r-- 1 user01 user01 164321712  3月 20 19:37 2012 system.img

[インストール]

$ adb reboot bootloader
$ fastboot devices
313574A56D7B00EC	fastboot
$ fastboot flash system <Androidソースのルート>/out/target/product/crespo/system.img
sending 'system' (160470 KB)...
OKAY [ 22.038s]
writing 'system'...
OKAY [ 22.191s]
finished. total time: 44.229s

$ fastboot reboot
rebooting...
finished. total time: 0.001s

$adb shell
shell@android:/ $ PATH=/data/local/bin:$PATH ←busyboxを使う
shell@android:/ $ dmesg | grep -i linux
<5>[    0.000000] Linux version 3.0.8-gb55e9ac (user01@lx02.example.com) (gcc version 4.4.3 (GCC) ) #1 PREEMPT Tue Mar 20 18:59:38 JST 2012
......(省略)......
shell@android:/ $ cat /proc/version
Linux version 3.0.8-gb55e9ac (user01@lx02.example.com) (gcc version 4.4.3 (GCC) ) #1 PREEMPT Tue Mar 20 18:59:38 JST 2012

参考URL:
http://source.android.com/source/building-kernels.html