开始战斗前的物质准备:
硬件:一台多核性能不是太差的电脑 Linux环境:单独安装或WSL均可 Clang编译器:推荐最新Neutron Clang,ZyC Clang 21会导致小米系统无法正常显示内核版本,故建议避雷 AOSP GCC交叉编译器:默认最新(在这里找最新标签,标签格式为“android-xx.x_rxx”) git相关使用方法(多分支管理、rebase、cherry-pick等)以及3个小提示!
为了方便后期进行cherry pick等操作,强烈建议在条件允许的情况下,以git clone的方式将内核源码复制到本地,而非通过下载内核源码的压缩包。 即使源码只能以压缩包形式获取,也建议通过git init命令将其初始化为一个git仓库。 为了方便我们在工作时敲代码或校对或解决冲突或写出规范commit,推荐使用VSCode。当然,最重要的,是一颗沉静得下去的耐心。
#1 寻找可编译成功的内核源码此处“可编译成功”指编译过程中不会因为源码的bug而中止,且编译后的内核可以正常开机。
确定哪些源码能用首先我们打开手机设置,在“关于本机”中确认内核的大版本号——Linux的版本号(即数字部分)为x.y.z结构,但它并不遵守语义化规则。其中x.y在本系列文章中规定为“大版本号”或“主线版本号”,z规定为“小版本号”或“基线版本号”。
举个栗子,有个手机打开系统设置后查询到内核版本如下:
则可以确定其大版本号为5.15。
大版本号 ≥ 5.10的内核为支持GKI 2.0的内核,以下为方便简称GKI内核;大版本号