现在的位置: 首页 > 综合 > 正文

自己动手编译Android内核-美化包

2013年06月19日 ⁄ 综合 ⁄ 共 1259字 ⁄ 字号 评论关闭

一直说想给用的G2编译一个Android的内核然后一直懒得研究,这几天装Gentoo倒腾PC的内核于是我说干脆手机也编译一个吧~(早已对CPU只有368-768-806MHz对选择表示十分不爽= =试着加一点中间档)

准备工具链

由于我们只需要编译内核而不需要依赖别的组件,所以对toolchain(NDK)的选择上宽松得多。大体来讲有这样几种可能性:自己编译arm-eabi的gcc toolchain,使用Sourcery的toolchain,使用Google提供的NDK构建toolchain,或者使用第三方(比如crystax)修改过的NDK。

我选择的是最后一种(我是拿下来自己编译的,也可以用预编译的版本)。

准备内核源码

我用的是CyanogenMod改过的2.6.32,从git://github.com/CyanogenMod/htc-kernel-msm7x30可以取得(从git://github.com/tyeken8/htc-kernel-msm7x30可以拿到我修改过的版本)

1
$
git clone git:
//github.com/tyeken8/htc-kernel-msm7x30

-b android-msm-2.6.32-tydus

导出内核配置

有两种方式导出:从/proc/config.gz或者用kernel提供的脚本
注意,一定要用和内核版本相同的config,否则会出一堆诡异的问题(而且解决它们超出我的能力范围)

/proc/config.gz

1
2
$
adb push
/proc/config.gz
$
gunzip < config.gz > .config

extract-ikconfig

1
$
scripts
/extract-ikconfig

boot.img > .config

配置内核

1
2
3
$
make

oldconfig
...
...

会有少许新的配置出现,看着选吧(如果新配置很多就说明你的config有问题了,自重小心)

1
$
make

menuconfig

看着改一些东西,比如说把werror(也就是FORCE_WARNING_AS_ERROR)去掉(我不知道为什么要开werror)

编译内核

查看了一下发现gcc在toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin,prefix是arm-linux-androideabi-。
于是

1
$
ARCH=arm CROSS_COMPILE=arm-linux-androideabi-
make

-j12

编译起来~

打包内核

我是拿的CM7的内核升级包来改,也可以使用这篇的方法(注意android源码从android.git.kernel.org迁移到android.googlesource.com了)

1
2
3
4
5
6
$
mkdir

/path/to/deploy
$
cd

/path/to/deploy
$
unzip
/path/to/cm7-kernel.zip
$
cp

~-
/arch/arm/boot/zImage

kernel

抱歉!评论已关闭.