编译Android内核

首先需要知道自己android内核的版本,我们android系统是android 4.0.1,内核版本为2.6.29.

编译Android内核_第1张图片

由于我们在下载android源代码的时候默认是不带内核源码的,因为他内置了一个编译好的zImage内核镜像,所以,如果要编译内核源码的时候,我们需要下载我们当前版本的内核源码.注意,这里的内核源码并不是Linux官网的内核源码,而是谷歌定制的内核.

我们首先需要在android源代码根目录下新建一个kernel目录.

mkdir kernel
cd kernel
git clone http://android.googlesource.com/kernel/goldfish.git

这个需要等待一段时间,下载完成之后,我们使用如下命令.

git branch -a
//找到自己需要的内核源码版本
git checkout remotes/origin/android-goldfish-2.6.29

好了,完成之后,我们就可以编译我们的内核源代码了.在编译之前,我们需要修改一个内核源码的根目录下的Makefile文件,也就是老罗提到的修改两个部分:

ARCH            ?= arm
CROSS_COMPILE   ?=  arm-eabi-   

在make之前,我们需要将Android提供的交叉编译链添加到我们的环境变量中,android提供的交叉编译链在目录
/prebuilt/linux-x86/toolchain 中.

编译Android内核_第2张图片

下面我们使用下面的命令进行编译:

export PATH=$PATH:~/android/prebuild/linux-x86/toolchain/arm-eabi-4.4.3/bin

//android2.3以下使用这个
make goldfish_defconfig
//android2.3以上使用这个
make goldfish_armv7_defconfig

//多线程编译
make -j4 

等出现zImage生成成功,表示编译完成.

编译Android内核_第3张图片

最后,指定内核运行我们的虚拟机.

emulator -kernel ./kernel/goldfish-android/arch/arm/boot/zImage 

如果想要在后台运行这个虚拟机来启动adb的话,则需要在命令后面添加”&”.

emulator -kernel ./kernel/goldfish-android/arch/arm/boot/zImage &

你可能感兴趣的:(虚拟机,内核编译,android内核)