一. 首选,参照前一篇在Ubuntu上下载、编译和安装Android最新源代码准备好Android源代码目录。

      二. 下载Linux Kernel for Android源代码。

      1. 使用GIT工具下载,执行以下命令:

      USER-NAME@MACHINE-NAME:~/Android$ mkdir kernel

      USER-NAME@MACHINE-NAME:~/Android$ cd kernel      USER-NAME@MACHINE-NAME:~/Android/kernel$ git clone git://android.git.kernel.org/kernel/common.git      同样是经过漫长的等待后,在kernel目录下有一个common目录,Linux内核代码就在这里了。      2. 下载完成后,可以查看下载的内核代码版本:     USER-NAME@MACHINE-NAME:~/Android/kernel$ cd  common      USER-NAME@MACHINE-NAME:~/Android/kernel/common$ git  branch      android-2.6.36      3. 下载完Android的Linux内核代码后,会发现在arch/arm/configs下没有模拟器要使用的硬件配置文件goldfish_defconfig,而这个配置文件是编译内核代码时需要用到的,因此,需要checkout goldfish版本:     USER-NAME@MACHINE-NAME:~/Android/kernel/common$ git branch -a      * android-2.6.36      remotes/origin/HEAD -> origin/android-2.6.36
      remotes/origin/android-2.6.35
      remotes/origin/android-2.6.36
      remotes/origin/archive/android-2.6.25
      remotes/origin/archive/android-2.6.27
      remotes/origin/archive/android-2.6.29
      remotes/origin/archive/android-2.6.32
      remotes/origin/archive/android-gldfish-2.6.29
      remotes/origin/archive/android-goldfish-2.6.27
      选择android-gldfish-2.6.29:      USER-NAME@MACHINE-NAME:~/Android/kernel/common$ git checkout remotes/origin/archive/android-gldfish-2.6.29      下载完毕后,就能在arch/arm/configs下看到goldfish_defconfig这个文件了。     如果执行git branch -a命令时没有看到goldfish相关的分支,可以用另外一个办法获得goldfish_defconfig文件,方法如下:     A. 用Android源代码工程环境预编译好的内核镜像来启动模拟器:      USER-NAME@MACHINE-NAME:~/Android$  emulator     B. 用adb工具把正在运行的模拟器里面的config文件取出来:     USER-NAME@MACHINE-NAME:~/Android$ adb pull /proc/config.gz     执行完上面这一步之后,就会看~/Android目录下看到有一个config.gz文件。     C. 解压上一步得到的config.gz文件:      USER-NAME@MACHINE-NAME:~/Android$ gunzip config.gz     执行完这一步之后,就会在~/Android目录下看到有一个config文件。     D. 将上面得到的config文件移至kernel/common/arch/arm/configs目录下:     USER-NAME@MACHINE-NAME:~/Android$ mv config kernel/common/arch/arm/configs/goldfish_defconfig     这样,goldfish_defconfig就准备好了。     三. 编译内核代码。     1. 导出交叉编译工具目录到$PATH环境变量中去:       USER-NAME@MACHINE-NAME:~/Android/kernel/common$ export PATH=$PATH:~/Android/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin     2. 修改common目录下的Makefile文件的以下两行为:      # ARCH ?= (SUBARCH)      # CROSS_COMPILE?=       ARCH ?= arm  #体系结构为arm      CROSS_COMPILE     ?= arm-eabi- #交叉编译工具链前缀,参考~/Android/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin目录       3. 开始编译:      USER-NAME@MACHINE-NAME:~/Android/kernel/common$ make goldfish_defconfig      USER-NAME@MACHINE-NAME:~/Android/kernel/common$ make     编译成功后,可看到下面两行:      OBJCOPY arch/arm/boot/zImage
      Kernel: arch/arm/boot/zImage is ready
      在执行make命令前,你也可以执行make menuconfig先配置一下编译选项。     四. 在模拟器中运行编译好的内核。     1. 在启动模拟器之前,先设置模拟器的目录到环境变量$PATH中去:     USER-NAME@MACHINE-NAME:~/Android$ export PATH=$PATH:~/Android/out/host/linux-x86/bin      2. 设置ANDROID_PRODUCT_OUT环境变量      USER-NAME@MACHINE-NAME:~/Android$ export ANDROID_PRODUCT_OUT=~/Android/out/target/product/generic      3. 在后台中指定内核文件启动模拟器:      USER-NAME@MACHINE-NAME:~/Android$  emulator -kernel ./kernel/common/arch/arm/boot/zImage &      4. 用adb工具连接模拟器,查看内核版本信息,看看模拟器上跑的内核是不是我们刚才编译出来的内核:      USER-NAME@MACHINE-NAME:~/Android$ adb shell      这时候如果是第一次运行 adb shell命令,会看到以下输出,不用管它,再运行一次adb shell命令就可以了。      * daemon not running. start it now on port 5037 *      * daemon started successfully *      error: device offline      切换到proc目录:      root@android:/ # cd proc      root@android:/proc # cat version      Linux version 2.6.29-gb0d93fb-dirty (luo@ubuntu-11-04) (gcc version 4.4.3 (GCC) ) #1 Fri Jun 3 23:17:24 HKT 2011    从机器名luo@ubuntu-11-04和日期1 Fri Jun 3 23:17:24 HKT 2011可以看出,模拟器使用的内核即为刚刚编译出来的内核。

更多相关文章

  1. Android gradle build 修改文件名称及目录
  2. 让 Android 可以识别BMP图片文件,且目前Android所支持的所有图片
  3. Android中的gen文件为空或者不存在的处理方法
  4. Android APK 扩展文件
  5. Android颜色值XML文件
  6. android 查看apk中资源文件
  7. Android 根文件系统启动分析
  8. Android xml资源文件animal动画解析
  9. Android 文件操作

随机推荐

  1. Android自定义View(自定义控件)
  2. Android 线程池框架、Executor、ThreadPo
  3. Android 动画入门指南
  4. Material Design 方案之 (详细)
  5. android 开发的必备工具
  6. 服务器主动向android手机端推送消息-----
  7. Android Animation 用法简单介绍
  8. 【Android】点击WebView中的按钮,关闭当前
  9. 写给初学者,Android AIDL必看内容
  10. Android中4种基本布局简单介绍和总结