我之前下载的android4.2的源代码,自带的linux的kernel是2.6.29,现在使用的都是3.4的kernel。那么如何用上3.4的kernel呢?
假设android的源代码的目录是android, 在android目录下新建一个kernel目录。
cd kernel,然后git clone http://android.googlesource.com/kernel/goldfish.git
下载完成后,得到kernel/goldfish目录。
cd kernel/goldfish
git branch -a,查看所有分支。里边有2.6.29以及3.4的
git checkout remotes/origin/android-goldfish-3.4 ,此时goldfish目录下有了3.4的源代码。
下面就来编译。
还是在kernel/goldfish目录下。
执行make ARCH=arm goldfish_armv7_defconfig 该命令执行完后,将得到一个.config文件。
设置环境变量export CROSS_COMPILE=/home/fanyijun/android/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/bin/arm-eabi- 这个是设置交叉编译工具链的位置和前缀。
(上面的路径解释一下,fanyijun为ubuntu的用户名,android为整个android4.2的源代码的根目录。)
这样在编译kernel时将使用这个前缀+gcc相关工具来编译kernel
然后就是make ARCH=arm。
编译完成后最后一个输出就是 Kernel: arch/arm/boot/zImage is ready zImage就是最后编译得到的kernel内核镜像。
启动新的kernel的方式:
export ANDROID_BUILD_TOP="/home/fanyijun/android"
export ANDROID_DEV_SCRIPTS="/home/fanyijun/android/development/scripts"
export ANDROID_EABI_TOOLCHAIN="/home/fanyijun/android/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.6/bin"
export ANDROID_HOST_OUT="/home/fanyijun/android/out/host/linux-x86"
export ANDROID_JAVA_TOOLCHAIN="/opt/jdk1.6.0_45/bin"
export ANDROID_PRE_BUILD_PATHS="/opt/jdk1.6.0_45/bin:"
export ANDROID_PRODUCT_OUT="/home/fanyijun/android/out/target/product/generic"
export ANDROID_QTOOLS="/home/fanyijun/android/development/emulator/qtools"
export ANDROID_TOOLCHAIN="/home/fanyijun/android/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.6/bin"
export ARM_EABI_TOOLCHAIN="/home/fanyijun/android/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/bin"
export OLDPWD="/home/fanyijun/android/out/target/product/generic/system/app"
export OPROFILE_EVENTS_DIR="/home/fanyijun/android/external/oprofile/events"
export OUT="/home/fanyijun/android/out/target/product/generic"
export PATH="/opt/jdk1.6.0_45/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/opt/jdk1.6.0_45/bin:/home/fanyijun/android/out/host/linux-x86/bin:/home/fanyijun/android/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.6/bin:/home/fanyijun/android/prebuilts/gcc/linux-x86/mips/mipsel-linux-android-4.6/bin:/home/fanyijun/android/development/emulator/qtools:/home/fanyijun/android/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.6/bin:/home/fanyijun/android/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/bin:/home/fanyijun/android/development/scripts"