老设备 4.14+ 内核 root:KernelSU 旧内核适配完整指南
【免费下载链接】KernelSUA Kernel based root solution for Android项目地址: https://gitcode.com/GitHub_Trending/ke/KernelSU
KernelSU 是运行在内核空间的 Android root 方案,官方只认 GKI(通用内核镜像,一套内核通吃多设备)5.10+ 的设备。你的老设备内核 ≥ 4.14,手动集成后照样能拿到 root。这是 KernelSU 旧内核适配路线。
30 秒自检:3 个问题定位你的处境
3 个问题问完,路线就定了。
- bootloader 能解锁吗?不能(常见于华为系)→ 停止,所有路线都走不通;能 → 问 2。
- 装上 KernelSU 管理器后显示 "Not installed" 吗?显示 → 你的设备被官方支持,直接走路线 A;显示 "Unsupported" → 问 3。
- 内核版本 ≥ 4.14 吗?执行
adb shell uname -r,看版本号前两段,如4.19.191-android11-8就是 4.19。低于 4.14 → 停止,在官方回移基线之下,不建议动手;≥ 4.14 → 先去社区列表搜机型:搜到现成预编译内核走路线 C,搜不到走路线 B(本文主体)。
支持边界速览(一张表)
官方基线是 5.10+ 的 GKI 内核;4.14–5.3 能跑但必须自己动手,4.14 以下不建议新手碰。
| 设备场景 | 结论 | 推荐路线 | 说明 |
|---|---|---|---|
| 出厂 Android 12+ 的 GKI 设备(5.10+) | 官方支持 | A | 管理器里直接刷,零编译 |
| 非 GKI 设备,内核 4.14–5.3 | 可用,需自行集成 | B | 官方已回移到 4.14,手动挂进内核即可 |
| 社区列表里搜到你的机型 | 可用 | C | 别人编译并集成好的内核,拿来就用 |
| 内核低于 4.14 | 未达基线 | 无稳妥路线 | 得自己回移核心模块,翻车成本高 |
边界依据见 官方 FAQ 关于旧内核的说法:最低支持到 4.14,更老的版本需手动回移。
路线选择:三条适配路径及怎么选
多数老设备走 B;动手前花 1 分钟查 C,能省一整天的编译。
路线 A:官方镜像直刷
只适合 GKI 设备(5.10+ 内核)。成本几乎为零:下载对应 boot.img 直接刷,或在管理器里用 LKM(可加载内核模块模式,不替换原内核)打补丁。老设备走不到这条,跳过。
路线 B:旧内核手动移植
判断标准就两条:内核 ≥ 4.14,且内核源码公开、你能编出可启动的 boot 镜像。满足就按第 6 节的最小步骤做。非 GKI 集成教程是官方参照,注意它明确要求用 v0.9.5——v1.0 起官方已放弃非 GKI 支持。
路线 C:社区补丁 / 预编译
非官方支持设备列表收录了上百台老设备的现成内核,Redmi、Poco、OnePlus、Pixel 都有。按机型代号搜索:搜到就用,省下自己编译;搜不到,走 B。
实战:最小可行移植步骤
用 kprobe(内核自带的挂钩机制)方式集成,5 步跑通,每步都有验收点。
- 目的:先有一个能编译的基线。动作:拿到你设备的公开内核源码,原样编出一个可启动的 boot 镜像。预期:不加任何修改就能正常开机。
- 目的:把 KernelSU 挂进内核源码树。动作:在内核源码根目录克隆仓库并切到最后一个支持非 GKI 的版本:
git clone https://gitcode.com/GitHub_Trending/ke/KernelSU cd KernelSU && git checkout v0.9.5然后回到内核源码根目录执行bash KernelSU/kernel/setup.sh v0.9.5。预期:setup 脚本自动建好drivers/kernelsu软链,并在 Makefile、Kconfig 中加好CONFIG_KSU条目。 3.目的:打开内核钩子。动作:在内核配置里确认CONFIG_KPROBES=y、CONFIG_HAVE_KPROBES=y、CONFIG_KPROBE_EVENTS=y,并在你的 defconfig 设CONFIG_KSU=y(选项定义见 kernel/Kconfig)。预期:kprobe 全开,无需手动改 4 个内核文件。 4.目的:装一个自救开关。动作:按官方教程给drivers/input/input.c的input_handle_event打安全模式补丁。预期:开机画面出现后连按音量减 3 次以上可进安全模式、禁用模块,防启动循环。 5.目的:验证。动作:编出新 boot 镜像,先fastboot boot boot.img临时测试(fastboot 是 bootloader 模式下的刷机工具,此命令只写内存、不落分区)。预期:正常开机、管理器显示 Not installed、su可用。全过再进入安全刷写。
翻车排查:启动循环与失效自救
翻车就两类:刷进去起不来,或者起来了但没生效。按症状对号入座。
- 刷入新镜像后卡在 logo(启动循环)→ 最可能原因:镜像压缩格式与原 boot 不一致,或内核 kprobe 本身有问题。30 秒自救:立即重刷备份的 stock
boot.img恢复开机,再核对压缩格式,启动循环自救指南列了全部情况。 - 能开机,但管理器仍显示 "Unsupported" 或
su无反应→ 最可能原因:CONFIG_KSU没设为y,或误用了 v1.0 之后的主线版本。30 秒自救:查 defconfig 和 checkout 的 tag,重新编译,先别动分区。 - 裸集成能开机,一装模块就循环重启→ 最可能原因:模块与老内核的挂载机制冲突。30 秒自救:开机画面处连按音量减进安全模式,禁用或删除问题模块。
fastboot flash成功,重启后内核版本却没变→ 最可能原因:A/B 设备没刷到活动槽,或刷错了分区。30 秒自救:重刷后adb shell uname -r核对版本,A/B 设备确认当前 slot。
安全刷写清单:验证 + 回滚
先临时、后永久、留后路,三点齐了再碰分区。
- 刷写前备份 boot 分区:从系统导出 stock
boot.img(没有 ADB root 就从官方固件包提取),存到电脑上。 - 先以
fastboot boot boot.img临时测试:只写内存,重启即恢复原状;确认能开机、su生效。 - 确认无误后再永久刷写:
fastboot flash boot boot.img,然后fastboot reboot。 - 留好回滚路径:启动循环时重刷第 1 步的 stock
boot.img,即可恢复出厂内核。 - 刷好后别装来路不明的模块——root 权限的模块是变砖头号原因。
结尾
行动清单:
- 先做 30 秒自检,确认走 A、B 还是 C;
- 动手前备份 boot 分区,一切验证用
fastboot boot临时跑; - 集成只用 v0.9.5,开
CONFIG_KSU=y和安全模式补丁。
社区入口:非 GKI 集成教程与非官方支持设备列表。翻车前先搜一遍,大概率有人踩过同样的坑。
【免费下载链接】KernelSUA Kernel based root solution for Android项目地址: https://gitcode.com/GitHub_Trending/ke/KernelSU
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考