ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

KernelSU 旧内核手动移植教程:4.14 以上非 GKI 设备如何集成内核级 root

2026/9/9 16:47:49 拓冰建站 浏览量
KernelSU 旧内核手动移植教程:4.14 以上非 GKI 设备如何集成内核级 root KernelSU 旧内核手动移植教程4.14 以上非 GKI 设备如何集成内核级 root【免费下载链接】KernelSUA Kernel based root solution for Android项目地址: https://gitcode.com/GitHub_Trending/ke/KernelSU打开 KernelSU 管理器设备栏显示不支持adb shell uname -r出来的是4.19.191-android11-8-gb2f41e6——这是典型的老设备。官方 FAQ 给出的边界是最低支持到 Linux 4.14低于 4.14 需要自行移植而自 v1.0 起KernelSU 已放弃对非 GKI 设备的官方支持最后支持非 GKI 内核的版本是 v0.9.5见 website/docs/zh_CN/guide/faq.md 和 website/docs/zh_CN/guide/how-to-integrate-for-non-gki.md。结论先说4.14–5.3 区间可以集成但前提是你拥有设备开源内核源码且能从源码编译出一个能正常开机的内核。如果内核不开源、或者没有编译过 Linux 内核的经验这条路不适合你别往下走。动手前核对这份清单事项性质内核版本 ≥ 4.14uname -r主版本号硬性要求Bootloader 已解锁硬性要求无法绕过设备内核源码开源且你有能力编译出可开机的内核硬性要求官方文档原话源码不开源时这通常难以做到交叉编译工具链与内核基线匹配硬性要求设备支持fastboot boot临时引导可绕过没有 TWRP 等自定义 Recovery 也行原厂 boot.img 已备份硬性要求刷坏后的唯一恢复手段特别提醒一点判断用哪个内核只看内核版本不看 Android 版本。android12-5.10的内核可能跑在 Android 13 系统上website/docs/zh_CN/guide/faq.md 明确警告混用会导致 bootloop。集成 KernelSU 到内核源码树并配置编译第 1 步确认内核版本与 KMI 标识执行adb shell uname -r拿到完整版本号例如4.19.191-android11-8-gb2f41e6。预期结果记下主版本号4.19确认 ≥ 4.14。失败时的第一反应连不上 ADB 先检查驱动和线缆这一步没有替代手段。第 2 步备份原厂 boot 镜像刷机前把原厂 boot 存下来。已有 root 时可直接从块设备导出adb shell su -c dd if/dev/block/by-name/boot of/sdcard/boot-backup.img adb pull /sdcard/boot-backup.img没有 root 就从官方线刷包/固件包里提取 boot.img。by-name/boot不是每台设备都有找不到时用ls /dev/block/by-name/列出实际分区名。这一步失败别硬刷——后续所有排错都依赖这个备份。第 3 步把 KernelSU 挂进内核源码树在设备内核的根目录执行仓库里的安装脚本指定 v0.9.5sh /path/to/KernelSU/kernel/setup.sh v0.9.5脚本会克隆 KernelSU、检出指定 tag、在内核drivers/下建kernelsu符号链接并自动向drivers/Makefile和drivers/Kconfig追加挂载条目逻辑见 kernel/setup.sh。预期输出以[] Done.结尾。注意版本必须用 v0.9.5v1.0 之后的主线已移除非 GKI 集成能力。失败时的第一反应如果脚本拉取源码失败手动git clone https://gitcode.com/GitHub_Trending/ke/KernelSU进入目录git checkout v0.9.5再把kernel/目录软链到drivers/kernelsu并补上 Makefile/Kconfig 两行即可脚本做的事一共就这三件。第 4 步打开 CONFIG_KSU 与 kprobe 选项找到你设备的 defconfig通常在arch/arm64/configs/或arch/arm64/configs/vendor/加上# KernelSU CONFIG_KSUy再确认 kprobe 相关配置已启用未启用则补上CONFIG_KPROBESy CONFIG_HAVE_KPROBESy CONFIG_KPROBE_EVENTSykernel/Kconfig 里KSU依赖KPROBES EXT4_FS所以make menuconfig搜索KSU时如果看不到选项先查这两个依赖kprobe 又依赖CONFIG_MODULES依赖链任何一环没开hook 都不会生效。第 5 步编译内核用该内核自带的构建流程编译沿用你平时出 boot 镜像的方式make ARCHarm64 CROSS_COMPILEaarch64-linux-gnu- -j$(nproc)CROSS_COMPILE换成你的工具链前缀。预期得到 boot.img或 Image 打包脚本的产物。编译报错先查头两个错误十有八九是工具链版本和内核基线不匹配。第 6 步用 fastboot boot 临时引导验证不要直接刷分区先临时启动fastboot boot boot-backup目录里的新镜像.img设备正常进系统即通过卡 logo 就重启系统会回到原内核无副作用。失败时的第一反应判定是 kprobe 在这个内核上工作不正常。官方给出的验证法是注释掉kernel/ksu.c中的ksu_sucompat_init()和ksu_ksud_init()重编译若能开机就是 kprobe 的锅转手动补丁路线第 7 步。第 7 步兜底手动改内核源码挂 hookkprobe 用不了时按官方存档教程在四个位置插入调用fs/open.c的do_faccessat、fs/exec.c的do_execveat_common、fs/read_write.c的vfs_read、fs/stat.c的vfs_statx。两个版本差异要注意老内核没有vfs_statx就改用vfs_fstatat4.17 之前没有do_faccessat直接改faccessat系统调用定义处补丁全文见 website/docs/zh_CN/guide/how-to-integrate-for-non-gki.md。同时强烈建议一并改drivers/input/input.c的input_handle_event把安全模式接进来——救砖时这是保命功能。⚠️ 走手动路线必须把CONFIG_KPROBES关掉否则开机时按音量下会误触发安全模式。第 8 步刷入并重启fastboot flash boot boot-ksu.img fastboot reboot刷完进系统即算完成。开机异常立刻fastboot flash boot boot-backup.img fastboot reboot回滚。典型故障速查现象集成后开机卡 logo重启能恢复原因该内核的 kprobe 实现有 bug 或配置不完整 处理按第 6 步的方法注释 sucompat/ksud 初始化验证确认后用手动补丁路线重做现象make 报CONFIG_KSU相关 undefined或 menuconfig 找不到 KernelSU 菜单原因drivers/Kconfig没被 source或 defconfig 没加CONFIG_KSUy处理检查drivers/Kconfig中是否有source drivers/kernelsu/Kconfig行没有就重跑 setup.sh 或手动补上现象能开机但 hook 不生效su 注入不出现原因CONFIG_MODULES未启用kprobe 依赖链断了 处理make menuconfig里从KPROBES项逐级查依赖全部补y后重编译现象手动集成后开机时误按音量下导致模块全部被禁原因手动模式没关CONFIG_KPROBES处理defconfig 设CONFIG_KPROBESn重编译临时可用管理器卸载问题模块恢复现象刷入后无法开机或卡在 avb 校验原因内核基线与设备不匹配或触发防回滚/安全补丁校验 处理刷回原厂 boot 恢复重新核对内核源码基线版本参考 website/docs/zh_CN/guide/rescue-from-bootloop.md验证生效与安全回滚确认 root 生效执行adb shell su -c id返回uid0(root)即成功同时确认/data/adb/ksu/目录存在且里面有ksud。管理器安装后应显示已安装状态管理器 APK 与内核版本需配套统一用 v0.9.5 时期的包。回滚只有一条路fastboot flash boot boot-backup.img fastboot reboot把第 2 步的备份刷回去即恢复原状。之后想继续用装模块时凡是模块要改/system文件的需要先装 metamodule如meta-overlayfs纯脚本/sepolicy 类模块直接装模块刷坏导致不开机开机第一屏后快速点按音量下三次进 KernelSU 安全模式在管理器里卸载问题模块即可。【免费下载链接】KernelSUA Kernel based root solution for Android项目地址: https://gitcode.com/GitHub_Trending/ke/KernelSU创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考