对于内核的更多了解,可以阅读让 Android 手机更省电流畅,你可以试试「刷内核」一文。
这里选择了 Pixel Experience 项目下的 thyme
内核,可以进仓库源地址进行查看,为了方便进行 KernelSU
的编译,可以进入本人的分支进行查看。
此外和,还有一些其他的内核仓库可以查看,本人测试了一部分,但是可能由于编译链原因无法正常刷入:
- 小米官方仓库,您可以在仓库的自述文件中查看更多系统仓库,但是版本较老,且不维护,因此不太适合直接进行编译,需要打补丁。
- Official-Ayrton990/android_kernel_xiaomi_sm8250 是一个关于
CAF
的仓库,也许支持的功能更多且更有利于编译,可以一试。 - EmanuelCN/kernel_xiaomi_sm8250是一个未知版本且没有介绍的仓库,因此本人没有测试,但是较官方源其代码较新,可以尝试一下。
- 待续……
在 Pixel Experience 内核的基础上,合并了部分上游分支,合并分支如下:
- ACK code branch: android-4.19-stable/4.19.274
- Linux Upstream: 4.19.y/4.19.274
- CLO code tag: LA.UM.9.12.r1-14900.01-SMxx50.0
工具链的选择请参考文章[内核向] 交叉编译器的选择以及[白话文版] ClangBuiltLinux Clang 的使用,同时可以配合neutron-clang 的说明文档来进行编译参数配置。
- neutron-clang:这是为内核开发构建的 LLVM 和 Clang 编译器工具链。构建始终是从最新的 LLVM 源代码而不是稳定版本构建的,
因此无法保证完全的稳定性。 - 阿菌•未霜 Clang/LLVM Toolchain with Binutils:这是一个预构建的工具链,构建始终来自最新的 LLVM 和 Binutils 源而不是稳定版本,因此无法保证完全的稳定性。它是用 Full LTO、PGO 和 BOLT 构建的,以尽可能减少编译时间。
- ClangBuiltLinux/tc-build:类似前两个工具,但是这个工具需要自己在本地从 LLVM 的源码进行构建,但编译时间较长。
- 最好的选择是从预编译内核机器的
/proc/config.gz
提取`,需要 COMPILE_CROSS 以及 CLANG,自行选择合适版本下载即可,通过这种方式编译出来的配合度是最好的。
内核编译完成后的打包请参考文章[内核向] 论如何优雅的刷入内核,目前最流行的方法是使用 osm0sis/AnyKernel3 来完成整个内核的打包刷入工作。
如果您更喜欢自己动手,那么请参考文章内的其他方法。
值得注意的是,不同版本的内核编译出来的内容并不相同,因此需要区分他们之间的打包,详情请参考文章:关于 Image.xx-dtb 和 Image.xx + dtb 的区别。 来自文章的评论区:对应芯片组的。比如 865 只需要 kona-v2.1.dtb。如果弄不清楚,可以使用 cat 命令将多个 dtb 连接在一起,bootloader 会自动识别。
/arch/arm64/kernel/smp.c:834:8: error: type defaults to ‘int’ in declaration of ‘in_long_press’ [-Werror=implicit-int]
您可以修改 extern in_long_press
为 extern int in_long_press
;或者去除MakeFile 中对应错误限制
如果您想用手机或者 Docker 容器运行编译程序的花,请参考文章手机端编译安卓内核以及使用 docker 简单编译 k20pro 内核。
- 小米官方内核编译维基文档
- 如何自己编译自定义 Android ROM
- 迅速入门 Android 内核编译 & 一加 5 DC 调光
- 獨立編譯 Android kernel(核心),以小米手機為例
- [GUIDE] How To Compile Kernel & DTBO For Redmi K20 Pro
- 红米 8A 内核编译过程记录
- 从 0 开始编译安卓内核
- Guide to Compile an Android Kernel with Clang
- Compiling an Android kernel with Clang
- weishu : KernelSU 的开发者
- Pixel Experience : 内核提供
- Lynnrin-Studio : 内核提供
- AKR 安卓开发者社区 : 编译教程提供
- xiaoleGun/KernelSU_Action : 借鉴部分 Github Action
- UtsavBalar1231/Drone-scripts : 借鉴部分 Github Action