尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

5 步把 KernelSU 集成进 4.14~5.3 旧内核:非 GKI 设备适配实战教程

发布时间:2026/9/10 14:16:12

资讯中心
01
ARTICLE

5 步把 KernelSU 集成进 4.14~5.3 旧内核:非 GKI 设备适配实战教程

5 步把 KernelSU 集成进 4.14~5.3 旧内核:非 GKI 设备适配实战教程
5 步把 KernelSU 集成进 4.14~5.3 旧内核非 GKI 设备适配实战教程【免费下载链接】KernelSUA Kernel based root solution for Android项目地址: https://gitcode.com/GitHub_Trending/ke/KernelSUKernelSU 是 Android 基于内核的 root 方案直接在内核空间授予 root 权限但官方只支持 GKI 设备。旧内核4.14~5.3装不上官方镜像管理器显示不支持。本文用 5 步把 KernelSU 集成进设备内核并编译出能开机的内核kprobe 自动集成与手动改源码两条路线都覆盖。 为什么你需要它 / 它能解决什么问题非 GKI 设备适配 KernelSU最常见的场景有这么几类手里的老设备是 4.19 或 5.4 内核管理器显示不支持官方 boot 镜像刷不进去。设备内核源码开源你能编译出可开机的内核但找不到现成可用的 root 方案。你想要的不是孤零零一个su而是内核级 root 加上模块系统、安全模式这些完整能力。不集成集成 KernelSU 后root 权限无内核级 root可按应用授权模块系统无装模块、改 /system需 metamodule救砖能力依赖 Recovery内置安全模式开机按住音量下如果设备内核不开源或者你编译不出可开机的内核本文可以略过——非 GKI 适配完全建立在自己的内核之上。前提都满足的话下面直接动手。️ 动手前的 3 分钟准备一台内核源码开源、且你能编译出可开机内核的设备。编译不出可开机内核就止步于此。arm64 Android 交叉编译工具链aarch64-linux-android-前缀验证命令aarch64-linux-android-gcc --version克隆 KernelSU 源码并切到 v0.9.5——这是最后一个支持非 GKI 内核的版本1.0 起官方放弃支持git clone https://gitcode.com/GitHub_Trending/ke/KernelSU cd KernelSU git checkout v0.9.5确认设备内核版本KernelSU 官方最低支持 4.14adb shell uname -r输出形如4.19.191-android11-8-xxxx记好主版本号。 核心操作分步实现步骤 1把 KernelSU 集成进内核源码树先把 KernelSU 源码放进内核根目录下面的操作等价于官方 setup.sh 脚本做的事情cd /path/to/kernel git clone https://gitcode.com/GitHub_Trending/ke/KernelSU cd KernelSU git checkout v0.9.5 cd .. ln -s KernelSU/kernel drivers/kernelsu注意软链接指向的是 KernelSU 仓库里的kernel/子目录不是仓库根目录。然后把它注册进构建系统drivers/Makefile和drivers/Kconfig各加一行obj-$(CONFIG_KSU) kernelsu/source drivers/kernelsu/Kconfig做完看到什么ls drivers/kernelsu能看到完整的 KernelSU 源码目录内核构建系统会在编译时把它收进来。步骤 2开启 kprobe 相关内核配置KernelSU 默认靠 kprobe 做 hook。在设备的 defconfig 里通常在arch/arm64/configs/或arch/arm64/configs/vendor/下按设备代号找加入CONFIG_KSUy CONFIG_KPROBESy CONFIG_HAVE_KPROBESy CONFIG_KPROBE_EVENTSy CONFIG_MODULESy为什么这么配CONFIG_KSU是集成总开关定义见 Kconfigkprobe 是 KernelSU 挂钩系统调用的前提CONFIG_MODULES是最容易漏的依赖项——没开它kprobe 可能悄悄失效。适配阶段建议再加CONFIG_KSU_DEBUGy开机会有醒目横幅方便排查。重新生成配置并确认生效make ARCHarm64 CROSS_COMPILEaarch64-linux-android- olddefconfig grep ^CONFIG_KSU .config期望输出CONFIG_KSUy。步骤 3手动添加 hook 点kprobe 不工作时才需要编译后设备开不了机或者内核版本太老导致 kprobe 工作不正常就走手动集成修改四个系统调用入口函数并且把CONFIG_KPROBES关掉。四个改动点fs/open.c里的do_faccessatfs/exec.c里的do_execveat_commonfs/read_write.c里的vfs_readfs/stat.c里的vfs_statx内核没有这个函数就改用vfs_fstatat以fs/exec.c为例先声明 hook 函数#ifdef CONFIG_KSU extern bool ksu_execveat_hook __read_mostly; extern int ksu_handle_execveat(int *fd, struct filename **name, void *argv, void *envp, int *flags); #endif再在do_execveat_common函数体开头挂钩#ifdef CONFIG_KSU if (unlikely(ksu_execveat_hook)) ksu_handle_execveat(fd, filename, argv, envp, flags); #endif其余三处套路相同声明对应的ksu_handle_*函数在函数体开头调用。更早的内核低于 4.17没有do_faccessat直接改faccessat系统调用定义即可。强烈建议再补一个安全模式 hook改drivers/input/input.c的input_handle_event同样方式加上ksu_handle_input_handle_event调用。这个功能让你在开机时按住音量下就能进恢复 shell救砖时非常有用。步骤 4编译内核并打包 boot 镜像配置就位编译才是重头戏make ARCHarm64 CROSS_COMPILEaarch64-linux-android- -j$(nproc)产物是内核 Image配合设备原有的 ramdisk 和 dtb 打包成boot.img如果你用设备自带的内核构建系统这一步通常会自动完成。刷机前如果不确定能否开机且设备支持fastboot boot可以先临时引导试一下——重启即回到原内核不会变砖fastboot flash boot boot.img fastboot reboot做完看到什么设备正常开机进系统无卡 logo、无重启循环。⚠️ 踩过的 3 个坑坑1刷机后卡开机 logo现象刷入新内核后卡在 logo无法进入系统。原因内核里 kprobe 有 bugKernelSU 的 hook 在内核态直接崩溃。解法注释掉kernel/ksu.c中ksu_sucompat_init()和ksu_ksud_init()的调用重新编译若能正常开机即确认是 kprobe 问题——转用步骤 3 的手动改源码方案或修复内核 kprobe 本身的 bug。坑2莫名进入安全模式现象手动集成后开机时不小心碰到音量下键就进了安全模式。原因手动集成时没有关闭CONFIG_KPROBESkprobe 输入 hook 和手动输入 hook 同时生效按键事件被重复处理。解法defconfig 里改为CONFIG_KPROBESn重新编译刷机走 kprobe 集成路线则保持开启两者不要混用。坑3root 之后 pm 命令执行失败现象KernelSU 正常显示shell 里执行pm命令却报错。解法老内核的 devpts 私有数据查找缺少 KernelSU hook改fs/devpts/inode.c的devpts_get_priv()void *devpts_get_priv(struct dentry *dentry) { ksu_handle_devpts(dentry-d_inode); /* 原有逻辑保持不变 */ }✅ 怎么确认它真的跑通了adb shell su -c id—— 期望输出uid0(root) gid0(root)。打开 KernelSU 管理器 —— 期望显示已安装和版本号而不是不支持。adb shell dmesg | grep -i -E ksu|kernelsu—— 期望看到 KernelSU 初始化日志没有 kernel panic 或 oops。集成了安全模式的话关机后按住音量下开机 —— 期望进入安全模式 shell可以查看内核日志。 下一步可以玩什么metamodule 体系安装 meta-overlayfs让模块能修改 /system见 Metamodule 指南。应用画像给不同 App 配不同的 root 权限档位见 App Profile。隐藏功能通过/data/adb/ksu/.ksurc自定义 su 的 shell 配置见 隐藏功能。内核跑起来之后剩下的事都在用户态——管理器、模块、安全模式会一件件就位去刷你自己的内核吧。【免费下载链接】KernelSUA Kernel based root solution for Android项目地址: https://gitcode.com/GitHub_Trending/ke/KernelSU创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。