一、编译环境

goldfish内核编译 - 图1

二、下载内核goldfish源码

  1. mkdir android-kernel
  2. cd android-kernel
  3. git clone https://aosp.tuna.tsinghua.edu.cn/kernel/goldfish.git
  4. cd goldfish
  5. #查看远程分支,如下图列表
  6. git branch -a
  7. # 检出版本 remotes/origin/android-goldfish-4.14-dev.20190417
  8. git checkout -b dev remotes/origin/android-goldfish-4.14-dev.20190417
  9. # remotes/origin/android-goldfish-4.14-gchips 版本
  10. git checkout -b dev remotes/origin/android-goldfish-4.14-gchips

goldfish内核编译 - 图2

二、编译脚本 build.sh

  1. make clean
  2. export ARCH=x86_64
  3. export SUBARCH=x86_64
  4. export PATH=$PATH:/home/kinbos/aosp/prebuilts/gcc/linux-x86/x86/x86_64-linux-android-4.9/bin
  5. #make x86_64_defconfig
  6. make x86_64_ranchu_defconfig
  7. make -j4

三、启动脚本 run.sh

  1. source build/envsetup.sh
  2. lunch aosp_x86_64-eng
  3. emulator -kernel /home/kinbos/goldfish/arch/x86/boot/bzImage -partition-size 2048
  4. #emulator -kernel /home/kinbos/goldfish/arch/x86/boot/bzImage

注意:如果在启动是模拟器一直黑屏卡死,可以退出shell重新启动。再次查看内核版本,编译日期已经变为2025年2月5日。

goldfish内核编译 - 图3

四、常见问题

错误信息:net/netfilter/xt_TCPMSS.o’, needed by ‘net/netfilter/built-in.o’

解决方法:删除小写字母命名的那个文件,即:删除net/netfilter/xt_tcpmss.c。 参考链接:https://www.spinics.net/lists/netdev/msg650265.html

goldfish内核编译 - 图4

错误信息:error: Cannot generate ORC metadata for CONFIG_UNWINDER_ORC=y, please install libelf-dev, libelf-devel or elfutils-libelf-devel

解决方法:sudo apt-get install libelf-dev

错误信息:error New address family defined, please update secclass_map

解决方法:

  • 在内核目录下/goldfish/scripts/selinux/genheaders/genheaders.c 和/goldfish/scripts/selinux/mdp/mdp.c 删除下面引用:  #include <sys/socket.h>
  • 在内核目录下/goldfish/security/selinux/include/classmap.h中添加下面引用:  #include <linux/socket.h>