拓冰建站拓冰建站
首页 / 资讯中心 / 正文

老内核也能 Root:KernelSU 非 GKI 设备适配避坑手册

老内核也能 RootKernelSU 非 GKI 设备适配避坑手册【免费下载链接】KernelSUA Kernel based root solution for Android项目地址: https://gitcode.com/GitHub_Trending/ke/KernelSU你的设备内核是 4.14 到 4.19 这一代装上 KernelSU 管理器后却提示不支持先别放弃。KernelSU 官方最低支持到 Linux 4.14 内核只是不再为这类设备提供现成的 boot 镜像——你需要把 KernelSU 集成进自己设备的内核源码里自己编译。本文带你走通老设备适配 KernelSU 的完整路径并把最容易踩的坑提前讲清楚。先确认三件事再决定要不要动手✅内核版本连上电脑执行下面这条命令输出的前两段就是你要的版本号adb shell uname -r4.14 到 5.3 属于要自己编的阵营如果你的设备能被管理器识别为 GKI 并直接刷官方镜像那这篇可以不看。✅内核源码能不能拿到、能不能独立编译出可开机的内核。这是硬性前提厂商不开源源码的话这条路基本走不通。⚠️版本选择官方自 v1.0 起放弃了对非 GKI 设备的维护最后一个支持非 GKI 的版本是v0.9.5。所以集成时务必用 v0.9.5 标签而不是最新代码。开始动手前把原厂 boot 分区备份一份新镜像先用fastboot boot临时验证能正常开机再考虑永久刷写。一条主线走通kprobe 自动集成kprobe 你可以理解成内核自带的探针机制——不用改源码运行时把钩子挂到目标函数上。KernelSU 的默认 hook 模式就依赖它内核侧的实现放在kernel/hook/目录。只要 kprobe 在你的内核上正常工作集成基本就是跑一个脚本的事。先克隆仓库再回到你的内核源码根目录执行集成脚本脚本位于kernel/setup.sh并指定版本git clone https://gitcode.com/GitHub_Trending/ke/KernelSU bash /path/to/KernelSU/kernel/setup.sh v0.9.5脚本会自动把 KernelSU 挂到drivers/kernelsu并在 Makefile、Kconfig 里注册构建入口你不用手动搬文件。接着打开 menuconfig确认这几项都启用了defconfig 常见于arch/arm64/configs/下不同设备位置可能不同CONFIG_KSUy CONFIG_KPROBESy CONFIG_HAVE_KPROBESy CONFIG_KPROBE_EVENTSy然后正常编译、打包 boot 镜像即可。如果编译期 kprobe 报错多半是依赖项CONFIG_MODULES没开进 menuconfig 搜 KPROBES 把缺失的依赖补齐。kprobe 不通切手动补丁模式老内核上 kprobe 经常有 bug典型症状就是集成后开不了机。这时改走手动集成在四个关键函数里插入 KernelSU 的调用点。do_faccessatfs/open.c4.17 之前的内核没有这个函数直接改faccessat系统调用入口do_execveat_commonfs/exec.cvfs_readfs/read_write.cvfs_statxfs/stat.c内核里没有它就改用vfs_fstatat每处插入的都是十几行带#ifdef CONFIG_KSU保护的外部函数调用官方文档里附了完整 diff照着改就行不用自己发明写法。⚠️ 走手动模式时请顺手关掉CONFIG_KPROBES否则开机时的按键事件可能误触发安全模式让人摸不着头脑。排障矩阵按症状对号入座症状大概率原因处理编译期 kprobe 相关报错CONFIG_MODULES未开启menuconfig 里补齐 kprobe 的依赖项集成后无法开机kprobe 在你的内核上不工作先按文档方法验证是 kprobe 问题再切手动集成莫名其妙进入安全模式手动集成且没关 KPROBES关闭CONFIG_KPROBES重新编译pm命令执行失败devpts 未适配按文档给fs/devpts/inode.c打补丁模块无法卸载旧内核缺path_umount从 5.9 内核 backport 这个函数装完模块后变砖模块自身问题开机第一屏连按 3 次音量下进安全模式或 adb 里用ksud module disable处理按需开启救砖与模块卸载能力安全模式强烈建议开启给drivers/input/input.c里的input_handle_event打上补丁后开机第一屏连按 3 次音量下键就能禁用全部模块是救砖的保底手段。模块卸载把path_umount从 5.9 内核移植回来后旧内核上才能用ksud module unload卸载模块。调试模式适配阶段打开CONFIG_KSU_DEBUGy方便定位问题稳定后再关掉。刷完后这样验证新内核刷进去后跑这两条命令就够adb shell su -c id adb shell ksud module list第一条能返回 root 身份说明提权链路通了第二条能列出模块说明用户空间管理端正常。接着重启两三次确认模块行为稳定。你多半还会搜这几个问题为什么不能用最新版 KernelSUv1.0 起官方移除了非 GKI 支持老内核只能集成 v0.9.5 及更早的版本用错版本是白忙一场的最常见原因。怎么判断是不是 kprobe 的问题官方文档给了验证思路临时注释掉 ksud 相关的初始化代码再开机测试若能正常启动就是 kprobe 的锅。文档已存档不再更新具体函数位置以你集成的版本源码为准。开不了机怎么救只要你只刷了 boot 分区恢复原厂 boot 就能回来这也是备份放第一位的原因模块导致的变砖走安全模式或ksud module disable。4.14 以下还能装吗理论上可以但没有适配经验兜底风险自担建议先在备用机上试。建议你先按临时验证、再永久刷写的顺序操作完整的 diff 补丁和救砖细节以官方文档为准非 GKI 集成指南、救砖手册项目背景与社区入口见 什么是 KernelSU。【免费下载链接】KernelSUA Kernel based root solution for Android项目地址: https://gitcode.com/GitHub_Trending/ke/KernelSU创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门