中文 | English
用于 Non-GKI Kernel 的 Action,具有一定的普遍性,需要了解内核及 Android 的相关知识得以运用。
如果你不是内核作者,使用他人的劳动成果构建 KernelSU,请仅供自己使用,不要分享给别人,这是对原作者的劳动成果的尊重。
5.4
4.19
4.14
4.9
所有 config.env 内的变量均只判断
true
编译成功后,会在
Action
上传 AnyKernel3,已经关闭设备检查,请在 Twrp 刷入。
Fork 本仓库到你的储存库然后按照以下内容编辑 config.env,之后点击Star
或Action
,在左侧可看见Build Kernel
选项,点击选项会看见右边的大对话框的上面会有Run workflows
点击它会启动构建。
修改为你的内核仓库地址
例如: https://github.com/Diva-Room/Miku_kernel_xiaomi_wayne
修改为你的内核分支
例如: TDA
修改为你的内核配置文件名
例如: vendor/wayne_defconfig
例如: arm64
修改为需要刷写的 kernel binary,一般与你的 aosp-device tree 里的 BOARD_KERNEL_IMAGE_NAME 是一致的
例如: Image.gz-dtb
常见还有 Image、Image.gz
可以使用除 google 官方的 clang,如proton-clang
如果是 git 仓库,请填写包含
.git
的链接
支持 git 仓库或者 zip 压缩包的直链
都用自定义 clang 了,自己改改这些配置应该都会吧 :)
由于 #23 的需要,我们提供可自定义 Google 上游分支的选项,主要的有分支有
Clang 分支 |
---|
master |
master-kernel-build-2021 |
master-kernel-build-2022 |
或者其它分支,请根据自己的需求在 https://android.googlesource.com/platform/prebuilts/clang/host/linux-x86 中寻找
填写需要使用的 Clang 版本
Clang 版本 | 对应 Android 版本 | AOSP-Clang 版本 |
---|---|---|
12.0.5 | Android S | r416183b |
14.0.6 | Android T | r450784d |
14.0.7 | r450784e | |
15.0.1 | r458507 | |
17.0.1 | r487747b | |
17.0.2 | Android U | r487747c |
一般 Clang12 就能通过大部分 4.14 及以上的内核的编译 我自己的 MI 6X 4.19 使用的是 r450784d
启用 GCC 64 交叉编译
启用 GCC 32 交叉编译
有的内核需要加入一些其它编译命令,才能正常编译,一般不需要其它的命令,请自行搜索自己内核的资料 请在命令与命令之间用空格隔开
例如: LLVM=1 LLVM_IAS=1
启用 KernelSU,用于排查内核故障或单独编译内核
选择 KernelSU 的分支或 tag:
- main 分支(开发版):
KERNELSU_TAG=main
- 最新 TAG(稳定版):
KERNELSU_TAG=
- 指定 TAG(如
v0.5.2
):KERNELSU_TAG=v0.5.2
自定义KernelSU管理器签名的size值和hash值,如果不需要自定义管理器则请留空或填入官方默认值:
KSU_EXPECTED_SIZE=0x033b
KSU_EXPECTED_HASH=c371061b19d8c7d7d6133c6a9bafe198fa944e50c1b31c9d8daa8d7f1fc2d2d6
可键入ksud debug get-sign <apk_path>
获取apk签名的size值和hash值
LTO 用于优化内核,但有些时候会导致错误
用于修复某些不支持或关闭了Kprobes的内核,修复KernelSU未检测到开启Kprobes的变量抛出警告导致错误
自动在 defconfig 注入参数
此参数为 KernelSU 模块和 system 分区读写提供支持 自动在 defconfig 注入参数
启用缓存,让第二次编译内核更快,最少可以减少 2/5 的时间
上传 DTBO 部分设备需要
从之前的 Workflows 合并进来的,可以查看历史提交
编译 boot.img,需要你提供Source boot image
故名思义,提供一个源系统可以正常开机的 boot 镜像,需要直链,最好是同一套内核源码以及与你当前系统同一套设备树从 aosp 构建出来的。ramdisk 里面包含分区表以及 init,没有的话构建出来的镜像会无法正常引导。