编译Android1.6(Donut) Emulator的内核
SDK更新内核到了2.6.29,我们可以自己来编译一个。
首先,你需要下载最新的Android Emulator的内核代码,它位于“Common Android Kernel Tree”
- mkdir kernel
- cd kernel
- git clone git://android.git.kernel.org/kernel/common.git
- cd common
- git checkout origin/android-goldfish-2.6.29 -b android-goldfish-2.6.29
然后,你还需要一个gcc编译器来编译kernel,它位于你的Android repo目录下,eg:prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/。如果你还没有初始化你的repo,那么开始吧:
- mkdir mydroid
- cd mydroid
- repo init -u git://android.git.kernel.org/platform/manifest.git
- repo sync
好了,准备环境变量还是编译:
- export PATH=$PATH:<REPO_ROOT>/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/
- export ARCH=arm
- export CROSS_COMPILE=arm-eabi-
- make goldfish_defconfig
- make
编 译完成后,你就会得到Emulator的内核:arch/arm/boot/zImage。把他命名为kernel-qemu,替代SDK1.6的 kernel-qemu(platforms/android-1.6/images/kernel-qemu),当然,你也可以直接将这个内核拷贝的 AVD的目录(e.g. $HOME/.android/avd/donut.avd/kernel-qemu)。这样,再次运行Emulator,他就会使用新的内核了。
emulator: argv[00] = "./emulator"
emulator: argv[01] = "-kernel"
emulator: argv[02] = "/home/william/.android/avd/donut.avd/kernel-qemu"
....
Uncompressing Linux......................................................................................... done, booting the kernel.