准备条件:
- 一台linux虚拟机(比如我用的Ubuntu 22.04)
- 一部比较老的测试用设备(比如我手上的米板4)
- 一个聪明的大脑
安装gcc和各种依赖
依赖部分是我从 另一个教程 里搞来的
1 | sudo apt-get install git ccache automake flex lzop bison gperf build-essential zip curl zlib1g-dev g++-multilib libxml2-utils bzip2 libbz2-dev libbz2-1.0 libghc-bzlib-dev squashfs-tools pngcrush schedtool dpkg-dev liblz4-tool make optipng maven libssl-dev pwgen libswitch-perl policycoreutils minicom libxml-sax-base-perl libxml-simple-perl bc libc6-dev-i386 lib32ncurses5-dev libx11-dev lib32z-dev |
gcc是编译内核必须的工具链,没有安装gcc就绝对不能编译
安装gcc aarch64和arm32的代码
1 | #安装gcc aarch64 |
安装后输出版本号确认
1 | aarch64-linux-gnu-gcc --version |
获取内核源代码
源代码一般在github就能找到
先进入 github 官网,然后在搜索栏中输入android_kernel_(品牌)_(机型),回车搜索
比如小米平板4的品牌是xiaomi,机型是clover:
然后挑选你中意的内核点进去,再点击那个绿色的”Code”按钮复制clone链接
就是那个两个方框连起来那个链接
然后在虚拟机里唤出终端(ctrl + alt + T),输入代码
1 | git clone (你复制到的代码) |
一切顺利的话,git就会将内核源代码clone到home/android_kernel_(品牌)_(机型)
了
当然,如果clone过程报错,挂个梯子再试试
如果还是出现问题,问问ai更好
配置编译环境
我试过很多的教程,它们用的都是编译脚本,可是全都失败了
我问deepseek之后才勉强编译出来一个内核(虽然没有开机)
如果之后我用编译脚本成功编译出来内核,我应该会修改这一部分
现在先进入内核根目录吧:
1 | cd ~/android_kernel_(品牌)_(机型) |
首先按照目标架构选择工具链:
1 | # 对于ARM64 (aarch64) |
然后配置内核
1 | make defconfig # 使用默认配置 |
开始编译内核
1 | make -j$(nproc) # 使用所有可用核心编译 |
如果你非常非常幸运,那么这一步你将得到编译完成的内核
一般情况下,编译完成的内核存放在:~/arch/arm64/boot/Image
- 未压缩的内核镜像~/arch/arm64/boot/Image.gz
- 压缩的内核镜像
如果编译的是arm32的内核,镜像文件可能为zImage
但实际上你很不幸,编译过程中出现了很多错误
而且因为报错内容又臭又长,你基本看不懂也不会想去研究
下一篇我就会编译过程中碰到的所有错误和解决办法列出来
可用的替代方案:使用Android预构建工具链
如果系统GCC版本太新,导致出现各种问题,考虑使用Android官方工具链:
1 | # 下载Android NDK |