编译安卓自定义 kernel
Last updated: 2022-01-22
动机¶
Oneplus 7 一个很玄学的 kernel patch, 修复了一些
问题(某些有充电功能的转接头), 引入了一些新的问题(PD快充无法正常使用), 想尝试解决经
经验证原因不是这个, 官方内部修复了但一直没有公布源码 (no more oneplus!)
坑¶
- 编译工具链一定要和源代码匹配! 否则无法顺利编译!
- 一定不要吝啬询问开发者或搜索群组信息!
- 比较好的 编译教程1 编译教程2
- 我用的 KOSP 定制的 dora kernel,
make O=out dora_defconfig
- 工具链是 proton-clang
- 如果不明白什么是CAF, 看 这里
- CAF kernel 貌似要用
make O=<output_path>
代替单纯的make
- CAF kernel 貌似要用
- 参考一下官方文档 用clang交叉编译kernel
- 比较讨厌的是, 在 dora kernel 里,
LLVM=1
不管用, 得分别手动替换
- 比较讨厌的是, 在 dora kernel 里,
- 我用的 KOSP 定制的 dora kernel,
新版GCC让部分代码编译不过, 可以看这个 帖子经确认不是这个问题, 毕竟用的是 clang
测试内核¶
在 out/arch/arm64/boot/
下找到 Image.gz-dtb
, 这就是我们用来测试的内核文件.
手机重启进入 bootloader, 执行下面的指令, 再把手机插电脑上, 手机就会用这个新内核启动啦.
fastboot boot Image.gz-dtb
但是我没有启动成功! Fall back 原装 kernel!
补充¶
无, 毕竟首要目标没能达成, 暂时也没有开发内核的精力