Skip to content

Latest commit

 

History

9 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

mondrian KernelSU + SusFS 自动内核编译

红米 K60 / POCO F5 Pro(代号 mondrianLineageOS 上自动编译带 KernelSUSusFS 的内核,并通过 GitHub Actions 实现:

  • ✅ 随 LineageOS 内核源码更新 自动重新编译
  • ✅ KernelSU / SusFS 固定到互相匹配的提交(改 config.env 里的引用即可升级)
  • ✅ 手动一键触发(可覆盖 KernelSU 提交 / 内核分支)
  • ✅ 产出 AnyKernel3 可刷入 zip(+ 原始 Image),并以 GitHub Release 发布

1. 技术方案概览

取值
设备 mondrian(SM8475 "cape",红米 K60 / POCO F5 Pro)
内核源码 LineageOS/android_kernel_xiaomi_sm8450lineage-23.2 分支,Linux 5.10(GKI 2.0)
defconfig gki_defconfig + vendor/waipio_GKI.config + vendor/xiaomi_GKI.config + vendor/mondrian_GKI.config + vendor/debugfs.config
Root 官方 KernelSU(固定提交,与 SusFS 补丁匹配)
隐藏 SusFSgki-android12-5.10 分支,v2.0+ inline hook)
打包 Kernel-SU/AnyKernel3(GKI 变体)
工具链 AOSP clang(LLVM=1,无需额外 binutils)

为什么选官方 KernelSU + gki-android12-5.10:SusFS 补丁是针对特定 KernelSU 源码 编写的,KernelSU 一旦更新可能打不上补丁;因此这里把 KernelSU 与 SusFS 都固定到 互相匹配的提交config.envKSU_REF / SUSFS_REF),保证稳定可复现。


2. 部署到 GitHub(一次性)

  1. 在 GitHub 新建一个公开或私有仓库(如 mondrian-kernelsu)。
  2. 把本项目所有文件上传进去(保留 .github/workflows/build.yml 的相对路径)。 最简单的方式:
    git clone https://github.com/<>/<仓库>.git
    cd <仓库>
    # 把本目录下的 config.env、build.sh、state/、.github/、README.md、.gitignore 复制进来
    git add -A && git commit -m "init mondrian kernelsu builder"
    git push
  3. 打开仓库 Settings → Actions → General
    • Workflow permissions 选择 Read and write permissions(用于写 release 和提交状态文件)。
  4. 无需配置任何 Secret(内核、KernelSU、SusFS 均为公开源,GITHUB_TOKEN 自动可用)。

3. 触发方式

3.1 手动构建(推荐先跑一次)

仓库 Actions → "Build KernelSU + SusFS kernel (mondrian)" → Run workflow

  • ksu_ref:留空 = 用 config.env 里固定的 KSU_REF;也可填某个 commit SHA/tag 临时覆盖。
  • kernel_branch:默认 lineage-23.2(LineageOS 22.2 用 lineage-22.2)。
  • force:默认勾选 = 无条件编译;取消勾选则只在有更新时编译。

3.2 自动构建

  • 每日定时(cron: 30 4 * * *,北京时间 12:30)轮询一次。
  • KSU_REF(config.env 里的 KernelSU 提交)内核分支 HEAD 提交state/last_build.json 记录不同,才触发编译;否则跳过(节省 CI 分钟数)。

4. 刷入方法

产物 KernelSU-<版本>-SusFS-mondrian-<分支>.zip 是 AnyKernel3 包,只在 boot 分区 替换内核,不动 ramdisk / dtb / 数据,风险低。刷入方式任选其一:

  1. KernelSU 管理器:安装 KernelSU 管理器 APK 后,在“安装”里选择本地 zip 刷入。
  2. Recovery(LineageOS Recovery 或 TWRP):Apply update → 从存储选择 zip 侧载刷入。
  3. Magisk/KernelSU 模块方式:等同 AnyKernel3 用法。

⚠️ 刷机前请务必备份当前 boot 分区(dd if=/dev/block/bootdevice/by-name/boot of=/sdcard/boot_backup.img), 以便出问题时回滚。首次刷入建议先手动触发一次构建并确认能正常开机。

刷入后验证:

  • KernelSU 管理器能打开并显示内核版本 → KernelSU 生效。
  • SusFS 需配合 SusFS 的 KernelSU 模块(ksu_module_susfs)使用,模块由 susfs4ksu 仓库提供,可单独下载刷入。

5. 稳定性说明与常见问题

5.1 SusFS 补丁与 KernelSU 版本匹配

SusFS 补丁是针对特定 KernelSU 源码结构编写的。若 KernelSU 上游大改导致补丁打不上, build.sh立即报错中止(fail-fast),绝不产出损坏的内核。此时:

  • 方案 A:在 config.env 里把 KSU_REF / SUSFS_REF 固定到上一组能编译成功的提交;
  • 方案 B:同步升级 KSU_REFSUSFS_REF(SusFS 上游会定期 Sync with official KernelSU main)。

5.2 更换内核分支(LineageOS 版本)

LineageOS 对 mondrian 提供 lineage-22.2 / lineage-23.0 / lineage-23.2 分支。 改 config.envKERNEL_BRANCH_DEFAULT,或手动触发时填 kernel_branch 即可。

换到新分支前请确认 arch/arm64/configs/vendor/mondrian_GKI.config 等文件仍存在 (一般会保留,但不同版本内核目录结构可能微调)。

5.3 clang 下载失败

build.sh 会按 clang-r458507 → r487747 → r510928 → r522817 顺序回退尝试。 若仍失败,在 config.env 修改 CLANG_VERSION 或直接指定 CLANG_URL

5.4 想换 KernelSU-Next

config.envKSU_REPO 改为 https://github.com/rifsxd/KernelSU-Next,并把 KSU_REF 改成 Next 对应的提交(SusFS 同样支持 Next;但 Next 更新更激进,稳定性略低)。

5.5 想关掉 SusFS

config.envSUSFS_* 相关步骤注释掉、并删除 build.sh 中 SusFS 段与 ksu_susfs.config 里的 CONFIG_KSU_SUSFS* 行即可(默认保留 SusFS)。


6. 文件说明

文件 作用
.github/workflows/build.yml 调度/版本检测/构建/发布的主工作流
config.env 所有可调配置(内核、KernelSU、SusFS、clang 等)
build.sh 完整构建脚本(克隆 → 打补丁 → 配置 → 编译 → 打包)
state/last_build.json 记录上次构建的版本号,用于“有更新才编译”判断

7. 致谢 / 参考

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages