编译并测试 android goldfish kernel x86
2015-02-27 16:30
609 查看
goldfish作为一个为模拟器打造的android内核,是对内核进行修改和测试的良好基础。而在qemu上跑x86自然是最快的。但google 提供的编译命令的例子是arm的,也不是goldfish. 自己瞎试了很久也google了一大圈,最后搞定了此问题和大家分享一下。
编译
编译goldfish 内核参考了文章 https://yaapb.wordpress.com/2012/09/23/how-to-compile-the-kernel-for-the-x86-emulator/ 需翻墙
测试基于android-goldfish-3.4
基本步骤如下:
1. git clone https://android.googlesource.com/kernel/goldfish.git #较慢,较早的goldfish是qemu.git,没有试验过,貌似已经弃用
2. git checkout android-goldfish-3.4 #注意内核版本要和system.img版本对应, android4.1 是2.6.29, android4.1以后多是3.4, 3.10目前还较少,可能会用在android5.0以后
3.配置环境变量开始编译
$ export CROSS_COMPILE=${ANDROID_BUILD_TOP}/external/qemu/distrib/kernel-toolchain/android-kernel-toolchain-
$ export REAL_CROSS_COMPILE=${ANDROID_BUILD_TOP}/prebuilts/gcc/linux-x86/x86/i686-linux-android-4.6/bin/i686-linux-android-
$ export ARCH=x86
$ export SUBARCH=x86
$ ${ANDROID_BUILD_TOP}/external/qemu/distrib/build-kernel.sh --arch=x86
注:这里的ANDROID_BUILD_TOP是android source tree的根目录。即使只下载external,prebuilts没有全部的源码树也可以通过编译。把ANDROID_BUILD_TOP指定到包含这两个目录的路径即可。
build完成后生成的bzImage位于arch/x86/boot/bzImage
模拟器测试
用模拟器测试需要安装sdk,另外因为我们只需要测试内核,其他东西如system.img, ramdisk.img直接用自带的模拟器的镜像文件就好,当然也自己build代码树产生
emulator64-x86 -debug init -kernel ~/kernel_android/goldfish/arch/x86/boot/bzImage
-system ~/Android/Sdk/system-images/android-21/google_apis/x86/system.img
-ramdisk ~/Android/Sdk/system-images/android-21/google_apis/x86/ramdisk.img
-avd Galaxy_Nexus_API_21
emulator 在sdk安装目录的tools下, system.img 和ramdisk.img 使用了sdkmanager下载的API21x86镜像中的文件, avd是用emultor-manger创建出的一个Galaxy_Nexus
编译
编译goldfish 内核参考了文章 https://yaapb.wordpress.com/2012/09/23/how-to-compile-the-kernel-for-the-x86-emulator/ 需翻墙
测试基于android-goldfish-3.4
基本步骤如下:
1. git clone https://android.googlesource.com/kernel/goldfish.git #较慢,较早的goldfish是qemu.git,没有试验过,貌似已经弃用
2. git checkout android-goldfish-3.4 #注意内核版本要和system.img版本对应, android4.1 是2.6.29, android4.1以后多是3.4, 3.10目前还较少,可能会用在android5.0以后
3.配置环境变量开始编译
$ export CROSS_COMPILE=${ANDROID_BUILD_TOP}/external/qemu/distrib/kernel-toolchain/android-kernel-toolchain-
$ export REAL_CROSS_COMPILE=${ANDROID_BUILD_TOP}/prebuilts/gcc/linux-x86/x86/i686-linux-android-4.6/bin/i686-linux-android-
$ export ARCH=x86
$ export SUBARCH=x86
$ ${ANDROID_BUILD_TOP}/external/qemu/distrib/build-kernel.sh --arch=x86
注:这里的ANDROID_BUILD_TOP是android source tree的根目录。即使只下载external,prebuilts没有全部的源码树也可以通过编译。把ANDROID_BUILD_TOP指定到包含这两个目录的路径即可。
build完成后生成的bzImage位于arch/x86/boot/bzImage
模拟器测试
用模拟器测试需要安装sdk,另外因为我们只需要测试内核,其他东西如system.img, ramdisk.img直接用自带的模拟器的镜像文件就好,当然也自己build代码树产生
emulator64-x86 -debug init -kernel ~/kernel_android/goldfish/arch/x86/boot/bzImage
-system ~/Android/Sdk/system-images/android-21/google_apis/x86/system.img
-ramdisk ~/Android/Sdk/system-images/android-21/google_apis/x86/ramdisk.img
-avd Galaxy_Nexus_API_21
emulator 在sdk安装目录的tools下, system.img 和ramdisk.img 使用了sdkmanager下载的API21x86镜像中的文件, avd是用emultor-manger创建出的一个Galaxy_Nexus
相关文章推荐
- Build Android-x86 ICS 4 Virtualbox from Google Virtualbox Target and Intel Kernel 编译体验
- Android内核开发 Goldfish Linux Kernel编译及安卓虚拟机测试
- Android 4.0 x86 Linux3.0.8内核编译简介/Compile kernel for Android-x86
- 编译android的linux kernel goldfish
- 下载编译 android kernel goldfish2.6.29源码
- 编译x86_64 android 7.1及goldfish内核
- Android kernel x86 编译方法
- android kernel goldfish 3.4.0 编译
- libcurl在android下的移植、编译与测试
- Android原生(Native)C开发之一(备份测试代码的编译命令)
- MTK6577+Android编译之kernel
- libcurl在android下的移植、编译与测试
- 在Android-x86 NDK编译中使用YASM
- [置顶] day08.编译Android的kernelt环境
- Android ffmpeg的x86编译和优化
- [置顶] 直播技术总结(二)ijkplayer的编译到Android平台并测试解码库
- Android-x86的源代码下载方法与编译过程
- 编译android vbox_x86-eng 报错
- android -x86 编译中遇到的问题
- (OK) Android-x86-7.1.1/ kernel 4.4.62 - quagga - 改进多跳路由协议 - 为每一个目的地址仅生成一条路由表项 - MIMP - 3