一、编译环境
- 操作系统:Ubuntu 20.4.6 TLS
- android版本:android-10.0.0_r41
- 架构: aosp_x86_64-eng
- 内核分支:android-goldfish-4.14-dev.20190417
- 参考链接: https://blog.csdn.net/silently_frog/article/details/124063445
- 确认Android系统对应的内核版本:
二、下载内核goldfish源码
mkdir android-kernel
cd android-kernel
git clone https://aosp.tuna.tsinghua.edu.cn/kernel/goldfish.git
cd goldfish
#查看远程分支,如下图列表
git branch -a
# 检出版本 remotes/origin/android-goldfish-4.14-dev.20190417
git checkout -b dev remotes/origin/android-goldfish-4.14-dev.20190417
# remotes/origin/android-goldfish-4.14-gchips 版本
git checkout -b dev remotes/origin/android-goldfish-4.14-gchips
二、编译脚本 build.sh
make clean
export ARCH=x86_64
export SUBARCH=x86_64
export PATH=$PATH:/home/kinbos/aosp/prebuilts/gcc/linux-x86/x86/x86_64-linux-android-4.9/bin
#make x86_64_defconfig
make x86_64_ranchu_defconfig
make -j4
三、启动脚本 run.sh
source build/envsetup.sh
lunch aosp_x86_64-eng
emulator -kernel /home/kinbos/goldfish/arch/x86/boot/bzImage -partition-size 2048
#emulator -kernel /home/kinbos/goldfish/arch/x86/boot/bzImage
注意:如果在启动是模拟器一直黑屏卡死,可以退出shell重新启动。再次查看内核版本,编译日期已经变为2025年2月5日。
四、常见问题
错误信息: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
错误信息: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>