Linux内核编译,启动带linux内核的模拟器。

来源:互联网 发布:淘宝怎么看确认收货 编辑:程序博客网 时间:2024/04/30 12:39
    Linux内核编译,启动带linux内核的模拟器。

    上一篇总结了安卓5.0源码的编译和启动其自带的模拟器。安卓源码是不包括linux内核的,而是使用的谷歌预先编译好的内核,其代码路径是在prebuilt/android-arm/kernel/kernel-qemu下。如何让安卓系统的内核变成自己的linux内核,这一篇将会总结。

    前面已经提供了linux内核的下载地址,在安卓源码根目录下新建目录。
mkdir kernel


    将下载好的linux内核包解压到kernel目录下。
tar -zxvf goldfish-android-goldfish-3.4.tar-gz

    现在开始准备编译。
   
    一:编译前准备工作

    1.将安卓系统所带的gcc加入环境变量。
      
export PATH=$PATH:~/Android5.0.2/prebuilts/gcc/linux-x86/arm/arm-eabi-4.8/bin

   
    2.去刚刚创建的kernel目录下打开linux内核源码的Makefile文件,需要修改一下两项:

      # ARCH        ?= (SUBARCH)      
      # CROSS_COMPILE        ?=XXXXXX  (这后面的内容我忘了)        
       
        ARCH              ?= arm      
        CROSS_COMPILE     ?= arm-eabi-

      注意不要改变原来的格式,只需要改变后面的内容就行。注意检查arm和arm-eabi-后面是否带有空格,有的话去掉。

    二:开始编译

    1.安卓5.0的编译命令:
   
make goldfish_armv7_defconfig
make

    安卓4.0之前的命令有点不一样:make goidfish_defconfig

    编译成功后,会提示XXXXX is ready  然后会有successfly的提示。说明编译成功。

   三:启动带有linux内核的模拟器

emulator -partition-size 1024 -kernel ./kernel/arch/arm/boot/zImge

     其中,后面所带的路径就是你下载编译好的内核镜像文件的路径。

     如果提示emulator命令找不到,或者一些别的错误,那么先把安卓源码的三个镜像文件和emulator的文件路径再加入一遍到环境变量。或者在安卓源码路径下  1.source ./envsetup.sh 2.lunch   一遍

     如果模拟器启动黑屏,那么检查一下你的这两个环境变量是否加入成功,有没有让~/.bashrc生效(srouce ~/.bashrc)。或者编译安卓源码的时候,lunch选项又没有选错,如果选错了,那只能从来编译安卓源码了。

     如果各种办法都尝试过后,模拟器还是黑屏那么你或许可以想一想最不可能发生或者最不想发生的BUG了。。
     当你排除了一切的可能后,那么不可能就变成了可能!
     哈哈,那估计就是安卓源码包的问题了。。。
     我前几天就是这样的问题,找了半天的错误楞是没有找到,结果一咬牙,换了包从头来,一步到位!   



2 0
原创粉丝点击