编译Android 的 linux内核,并用emulator命令启动编译好的linux内核

准备工作

使用上一篇文章,编译Android源码,并用模拟器启动编译好的镜像,可以在终端输入 “emulator ” 命令启动模拟器。

查看emulator 命令默认使用的linux内核文件。

输入命令“emulator -verbose | grep kernel”,如下图:

可以看出,linux内核是ranchu版本的。(我也不知道ranchu是什么意思)

查看Android模拟器使用的linux版本

输入“adb shell”进入模拟器的终端;

可见,linux的内核版本是4.4。

编译linux内核

(1)下载android 版本的 linux 内核。

mkdir kernel
cd kernel
git clone http://android.googlesource.com/kernel/goldfish.git

说明一下,为什么是“goldfish”呢? 谷歌针对Android系统提供了好几个版本,其中goldfish表示适用于模拟器平台。其中还有“msm”、“samsung”和“omap”等几个版本。(具体可以百度)。

(2)切换指定分支。

我当时使用的是“android-goldfish-4.4-dev”分支,与上面准备工作中查看的版本4.4一致。下面是切换以后的分支。

gs@aigo:~/nvme_1T/android9.0.0_35/kernel/goldfish$ git branch -a
* (HEAD detached at origin/android-goldfish-4.4-dev)
  master
  remotes/origin/HEAD -> origin/master
  remotes/origin/android-3.18
  remotes/origin/android-4.14-q
  remotes/origin/android-goldfish-2.6.29
  remotes/origin/android-goldfish-3.10
  remotes/origin/android-goldfish-3.10-k-dev
  remotes/origin/android-goldfish-3.10-l-mr1-dev
  remotes/origin/android-goldfish-3.10-m-dev
  remotes/origin/android-goldfish-3.10-n-dev
  remotes/origin/android-goldfish-3.18
  remotes/origin/android-goldfish-3.18-dev
  remotes/origin/android-goldfish-3.4
  remotes/origin/android-goldfish-3.4-l-mr1-dev
  remotes/origin/android-goldfish-4.14-dev
  remotes/origin/android-goldfish-4.14-dev.120914098
  remotes/origin/android-goldfish-4.14-dev.143174688
  remotes/origin/android-goldfish-4.14-dev.150
  remotes/origin/android-goldfish-4.14-dev.20190417
  remotes/origin/android-goldfish-4.14-dev.backup
  remotes/origin/android-goldfish-4.14-gchips
  remotes/origin/android-goldfish-4.4-dev
  remotes/origin/android-goldfish-4.9-dev
  remotes/origin/android-goldfish-5.4-dev
  remotes/origin/heads/for/android-goldfish-3.18-dev
  remotes/origin/linux-goldfish-3.0-wip
  remotes/origin/master
gs@aigo:~/nvme_1T/android9.0.0_35/kernel/goldfish$

查看readme

最重要的一句话是:

即输入 “make help”,可以查看当前支持的 config,如下图:

这里我们选择“x86_64_ranchu_defconfig”,为什么是x86_64,是因为上一篇文章使用的也是x86_64。而为什么是“ranchu”,因为准备工作中查看默认的linux内核也是ranchu,(虽然我还是不清楚ranchu是啥意思)。

编译linux内核

make clean
make mrproper
make x86_64_ranchu_defconfig
make -j$(nproc --all)

编译成功后,会输出如下:

说明一下,kernel在x86_64目录下也有,只是x86_64目录下的内核镜像是个软链接,链接在x86目录下的。

emulator命令启动编译好的linux内核镜像

输入命令“emulator -kernel kernel/goldfish/arch/x86_64/boot/bzImage -show-kernel”,如下:

说明一下,“-show-kernel”表示:在终端窗口中显示内核调试消息。

此时,模拟器正常启动了。

 

参考

emulator命令详解

 

 

 

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值