在之前博文中() 提到如何编译android 源码。本篇介绍 如何编译 android 内核源码 并刷进系统。 两个是不同的源码。 android 源码中没有包含内核源码,可能是不同开源协议原因吧。分开不同项目。
android内核是linux内核。 android 源码包里面含有编译好的内核文件,所以即使不包含内核源码,一样可以刷机启动。 这篇文章要做的事情就是编译内核源代码,并替换掉自带的内核。
本篇文章大部分参考https://source.android.com/source/building-kernels我的环境是 ubuntu 16.04 64 位 桌面版。 android 手机为nexus 5android 4.4.4 版本。
一、确定内核版本
要确定系统映像中使用的内核版本,请对内核文件运行以下命令:
dd if=kernel bs=1 skip=$(LC_ALL=C grep -a -b -o $'\x1f\x8b\x08\x00\x00\x00\x00\x00' kernel | cut -d ':' -f 1) | zgrep -a 'Linux version
对于 Nexus 5 (hammerhead),请运行以下命令:
dd if=zImage-dtb bs=1 skip=$(LC_ALL=C od -Ad -x -w2 zImage-dtb | grep 8b1f | cut -d ' ' -f1 | head -1) | zgrep -a 'Linux version
***执行命令要先进入到android源码 目录 cd device/lge/hammerhead-kernel
stevenrao@aosp-4.4.4_r1$ cd device/lge/hammerhead-kernel/
stevenrao@hammerhead-kernel$ dd if=zImage-dtb bs=1 skip=$(LC_ALL=C od -Ad -x -w2 zImage-dtb | grep 8b1f | cut -d ' ' -f1 | head -1) | zgrep -a 'Linux version'
Linux version 3.4.0-gd59db4e (android-build@vpbs1.mtv.corp.google.com) (gcc version 4.7 (GCC) ) #1 SMP PREEMPT Mon Mar 17 15:16:36 PDT 2014
Linux version CIFS VFS Client for Linux<7>%s: sess setup type %d
8386668+0 records in
8386668+0 records out
8386668 bytes (8.4 MB,