中文 | English
用于 Non-GKI Kernel 的 Action,具有一定的普遍性,需要了解内核及 Android 的相关知识得以运用。
如果你不是内核作者,使用他人的劳动成果构建KernelSU,请仅供自己使用,不要分享给别人,这是对作者的劳动成果的尊重。
4.19
4.14
Fork 本仓库到你的储存库然后点击Action
,在左侧可看见Build Kernel Common
/Build boot image
选项,点击选项会看见右边的大对话框的上面会有Run workflows
,里面有需要你填写的配置,看下面的部分,了解如何填写。
或者使用 config.env(设置 USE_CONFIG 为 true),按照以下内容编辑 config.env 然后提交,按 Star 或者 Run workflows,这个功能是方便手机修改参数。
编译成功后,会在Action
上传 AnyKernel3,已经关闭设备检查,请在 Twrp 刷入
填写你的内核仓库地址
例如: https://github.com/Diva-Room/Miku_kernel_xiaomi_wayne
填写你的内核分支
例如: TDA
填写你的内核配置文件名
例如: vendor/wayne_defconfig
填写需要刷写的 image,一般与你的 aosp-device tree 里的 BOARD_KERNEL_IMAGE_NAME 是一致的
例如: Image.gz-dtb
填写需要使用的 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 |
一般 Clang12 就能通过大部分 4.14 及以上的内核的编译 我自己的 MI 6X 4.19 使用的是 r450784d
有的内核需要手动加入一些编译命令,才能正常编译,不需要的话不填写即可 请在命令与命令之间用空格隔开
例如: LLVM=1 LLVM_IAS=1
用于优化内核,但有些时候会导致错误,所以提供禁用它,设置为 true 即禁用
是否使用 KernelSU,用于排查内核故障或单独编译内核
如果你的内核 Kprobes 工作正常这项改成 true 即可自动在 defconfig 注入参数
编译成功后,会在Action
上传 boot-su.img,使用 fastboot 刷入到手机
填写你的内核仓库地址
例如: https://github.com/Diva-Room/Miku_kernel_xiaomi_wayne
填写你的内核分支
例如: TDA
填写你的内核构建配置文件,需要直链
例如: https://raw.githubusercontent.com/xiaoleGun/KernelSU_action/main/configs/build.config.wayne
里面要改的不多,下面是 build config 和 Device Tree(设备树)里的 BoardConfig/BoardConfigCommon 的对照
build config | BoardConfig/BoardConfigCommon |
---|---|
DEFCONFIG | TARGET_KERNEL_CONFIG |
BOOT_IMAGE_HEADER_VERSION | BOARD_BOOT_HEADER_VERSION |
BASE_ADDRESS | BOARD_KERNEL_BASE |
PAGE_SIZE | BOARD_KERNEL_PAGESIZE |
KERNEL_CMDLINE | BOARD_KERNEL_CMDLINE |
MKBOOTIMG_EXTRA_ARGS | BOARD_MKBOOTIMG_ARGS |
KERNEL_BINARY | BOARD_KERNEL_IMAGE_NAME |
下面是一些 build config 里面的选项的用途
build config | 作用 |
---|---|
VENDOR_RAMDISK_BINARY | ramdisk 路径 |
ARCH | 架构 arm/arm64/x86_64 |
BUILD_BOOT_IMG | 为 1 时创建 boot.img |
SKIP_VENDOR_BOOT | 为 1 时跳过创建 vendor_boot |
FILES | 需要输出的文件 |
CLANG_VERSION | 我自定义的选项,用于定义 clang 版本 |
剩下的就是杂七杂八的编译器需要,更多请参见build/build.sh的注释
故名思义,提供一个可以正常开机的 boot 镜像,需要直链,最好是同一套内核源码以及与你当前系统同一套设备树从 aosp 构建出来的。ramdisk 里面包含分区表以及 init,没有的话可能会重启到 fastboot。