KernelSU ksud 完整指南:如何快速获取、部署并管理模块
【免费下载链接】KernelSUA Kernel based root solution for Android项目地址: https://gitcode.com/GitHub_Trending/ke/KernelSU
KernelSU 的 ksud 是连接内核与用户空间的守护进程,本文带你一次完成 ksud 的获取、部署与模块管理。跟着做,你将在设备上得到一个可直接执行的/data/adb/ksud,模块安装、启用、禁用、列表全部用命令行搞定,不用再依赖图形界面。
TL;DR:最快跑通 KernelSU ksud 的路径
如果你已经刷好 KernelSU 内核并安装了管理器,ksud 其实已经就位:
# 1. 打开一次 KernelSU 管理器,等待初始化完成 # 2. 确认二进制与软链接存在 ls -l /data/adb/ksud /data/adb/ksu/bin/ksud # 3. 验证版本(输出形如 x.y.z (uapi: N)) /data/adb/ksud --version三条命令走完,你就拿到了一个可用的 ksud。后面所有细节都是为「出问题时怎么查」准备的。
ksud 到底负责什么
一句话:ksud 是 KernelSU 在用户态的执行体,内核只负责把请求递交上来,真正动手干活(解包模块、挂挂载、改 SELinux 策略、触发启动事件)的都是它。
具体承担四类工作:
- 模块生命周期:安装 zip、挂载/卸载、启用/禁用标记
- 启动事件:响应
post-fs-data、services、boot-completed三个时机,执行模块脚本 - 策略与特性:
sepolicy动态打补丁、feature开关(su_compat、sulog 等) - 系统工具:
resetprop、debug su等兼容工具
它用 Rust 编写,入口在 userspace/ksud/src,命令行定义集中在 cli.rs——读这个文件比读任何教程都快。
按人群选择获取方式 📦
场景 A:开发者,需要自己编译 ksud
前提:本机装好 Rust 工具链和cargo cross(用于交叉编译到 aarch64 安卓目标)。
# 克隆 KernelSU 源码 git clone https://gitcode.com/GitHub_Trending/ke/KernelSU cd KernelSU # 交叉编译 release 版(just 已内置该命令,等价于 cross build --target aarch64-linux-android --release) just bk产物落在target/aarch64-linux-android/release/ksud。推到设备后执行一次安装命令即可完成部署:
# 推送到设备 adb push target/aarch64-linux-android/release/ksud /data/local/tmp/ksud # 在设备 shell 中(需要 root,可用临时 su) chmod 755 /data/local/tmp/ksud /data/local/tmp/ksud installinstall子命令是官方部署入口:它会把自己复制到/data/adb/ksud,释放内置工具(busybox、resetprop、bootctl 等),并在/data/adb/ksu/bin/ksud建好软链接,全程自动。
场景 B:普通用户,直接用管理器部署
普通用户不需要接触源码。安装管理器应用(源码在 manager/app)并打开一次即可:管理器 APK 内已打包 ksud(以libksud.so形式存在),初始化时会自动调用install --libadbroot ... --data-path ...完成部署。之后 ksud 随管理器升级而更新,无感。
两条路的终点完全一致:设备上都出现/data/adb/ksud和/data/adb/ksu/bin/ksud。
部署与自启动:一次说清
先给结论:ksud 不需要你写任何自启动脚本。KernelSU 的启动时序由内核侧驱动——开机各阶段(post-fs-data、services、boot-completed)内核会直接调用 ksud 对应子命令,再执行模块脚本与/metadata下生成的modules.rc。所以手动往/data/adb/service.d/塞脚本既多余,还可能引入重复执行。
手动部署的完整流程(场景 A 的延续)是三步连贯动作:
- 执行安装:
/data/local/tmp/ksud install,二进制、SELinux 标签、内置资产一次就位; - 确认软链接:
ls -l /data/adb/ksu/bin/ksud应指向/data/adb/ksud,这样PATH中的ksud和绝对路径行为一致; - 验证版本:
# 输出版本号与 uapi 接口号,例如 1.2.3 (uapi: 8) /data/adb/ksud --version能看到版本号,部署就算成功。模块数据目录固定为/data/adb/modules/,模块 id 取自各模块module.prop里的id字段,后面所有模块命令都用它寻址。
ksud 模块安装与管理命令速查 🚀
以下命令均假设已在 root shell 中,mymodule为模块 id(ksud module list可查)。
| 操作 | 命令 |
|---|---|
| 从 zip 安装 | ksud module install /sdcard/Download/mymodule.zip |
| 查看模块列表与状态 | ksud module list |
| 启用模块 | ksud module enable mymodule |
| 禁用模块(可再启用) | ksud module disable mymodule |
| 卸载模块 | ksud module uninstall mymodule |
| 误标卸载后恢复 | ksud module undo-uninstall mymodule |
| 触发模块 action.sh | ksud module action mymodule |
调试相关的两条常用命令:
# 申请 root shell(调试用) ksud debug su # 指定管理器包名,需要内核开启 CONFIG_KSU_DEBUG ksud debug set-manager me.weishu.kernelsu.debug模块安装后的生效依赖重启或软重启(ksud soft-reboot),这一点在排查问题前请先确认。
翻车排查:两个高频场景 🔧
现象一:ksud 启动失败或命令无响应
排查命令按顺序执行:
# 看文件与链接是否齐全 ls -l /data/adb/ksud /data/adb/ksu/bin/ksud # 看内核侧与 ksud 的日志(日志 tag 为 KernelSU) logcat -s KernelSU处理:文件缺失或软链接断了,重新跑一次ksud install即可重建;logcat里出现KernelSU not available之类字样,说明内核侧没生效,先确认已刷入带 KernelSU 的内核,而不是去删数据目录——/data/adb/ksu/下存着模块配置与模板,删了不可恢复。
现象二:模块安装成功但不生效
排查命令:
# 确认模块状态(是否被 disable / 标记 update) ksud module list # 确认内核 KMI 在支持范围内(LKM 场景尤其要查) ksud boot-info supported-kmis # 抓模块脚本执行期的日志 logcat -s KernelSU处理:状态是 disabled 就ksud module enable <id>后重启;KMI 不在列表里说明模块依赖的内核接口版本不匹配,换模块适配版本或升级内核;日志里模块post-fs-data.sh报错的,优先看模块自身的兼容性声明,而不是反复重装。
下一步
- 想读实现:从 userspace/ksud/src/cli.rs 的
Commands枚举入手,每个子命令的注释就是最权威的文档 - 想写模块:模块开发指南 覆盖了 zip 结构、
module.prop字段与脚本钩子 - 想玩 metamodule:metamodule 文档
- 想复现编译:看 justfile,
just bk一条命令出产物
把上面的速查表存成你的常用命令清单,然后从ksud module list开始动手吧。
【免费下载链接】KernelSUA Kernel based root solution for Android项目地址: https://gitcode.com/GitHub_Trending/ke/KernelSU
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考