ubuntu环境:下载、编译模拟器平台android内核源码

如果不愿使用android系统源代码预编译好的内核,就需要自己编译内核。

一、通过git工具下载最新版的android linux kernel源代码

 1、在android源代码根目录中,新建kernel目录

       ~/Android$ cd mkdir kernel

      ~/Android$ cd kernel

 2、下载适合模拟器平台的内核源代码

      ~/Android/kernel$ git clonehttp://android.googlesource.com/kernel/goldfish.git 

     需要其他平台内核源代码,可以查阅android官网内核编译页面:

    http://source.android.com/source/building-kernels.html

     clone完成后,有一个空的目录goldfish,此目录下有一个隐藏的目录.git,进入该目录,查看该分支上都有哪些分支版本

    ~/Android/kernel$cd goldfish

    ~/Android/kernel/goldfish$git branch -a

   选择goldfish最新版本,把这个版本check out到本地

   ~/Android/kernel$git checkoutremotes/origin/archive/android-gldfish-2.6.29

    这个时候goldfish源码就已经下下来了,接下来的事情就是编译了.

二、编译内核源代码

      1、设置交叉编译工具gcc的路径到环境变量PATH

            ~/Android$ export PATH=$(pwd)/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin:$PATH

            我们将使用上述这个目录下的交叉编译器arm-eabi-gcc     

       确保有预编译目录prebuilt,没有的话,需要clone下来

        ~/Android$git clone https://android.googlesource.com/platform/prebuilt

    2、设置环境变量:指明目标设备的体系架构和交叉编译器

         $ export ARCH=arm

         $ export SUBARCH=arm

         $ export CROSS_COMPILE=arm-eabi-

        为arm体系架构和arm-eabi-类型编译器

     3、开始编译

         ~/Android/kernel/goldfish$make goldfish_armv7_defconfig  

       ~/Android/kernel/goldfish$ make

     注:用$make goldfish_defconfig这样配置也可以编译通过,模拟器也可以启动,但是Android的开机画机就显示不了,  $adb shell也死活连不上,原因就是这个goldfish_defconfig这个配置文件问题.

     提示:
      $make goldfish_armv7_defconfig指令的意思是将目录WORKING_DIRECTORY/kernel/goldfish/arch/arm/configs/下的goldfish_armv7_defconfig文件内的Kconfig配置内容复制到WORKING_DIRECTORY/kernel/goldfish/目录下的.config文件中,.config文件是一个隐藏目录,保存着各个目录下Kconfig文件的配置.

   4、查看编译的镜像文件zImage

     ~/Android/kernel/goldfish$  ls arch/arm/boot/
三、在模拟器中运行编译好的内核

   1、运行模拟器前先设置模拟器的路径到环境变量PATH中去,同时设置ANDROID_PRODUCT_OUT环境变量

   $ export PATH=$PATH:~/WORKING_DIRECTORY/out/host/linux-x86/bin  

   $ export ANDROID_PRODUCT_OUT=~/WORKING_DIRECTORY/out/target/product/generic 

  2、指定新编译的内核文件启动模拟器

  $ emulator -kernel ~/WORKING_DIRECTORY/kernel/goldfish/arch/arm/boot/zImage &  

  3、用adb(android调试桥)工具连接模拟器,查看内核版本信息,看看模拟器上跑的内核是不是我们刚才编译出来的内核

       $adb shell

  4、切换到proc目录,查看内核版本

      $cd proc

      $cat version

 

你可能感兴趣的:(ubuntu环境:下载、编译模拟器平台android内核源码)