KernelSU是一款基于Linux内核的Android系统超级用户权限管理工具,采用创新的内核级实现方案,为开发者和高级用户提供更安全、更高效的root管理体验。与传统的用户空间root方案相比,KernelSU通过直接在内核层进行权限管控,实现了更细粒度的权限管理和更低的性能开销。
内核级实现:直接在内核空间处理root请求,避免传统方案的用户态-内核态切换开销,执行效率更高
模块化设计:支持动态加载内核模块(KPM),无需刷机即可实现功能扩展和热更新
精细权限控制:可为每个应用单独配置root权限策略,包括临时授权、自动拒绝等灵活选项
安全审计机制:完整记录所有root操作日志,支持权限使用追溯和安全分析
广泛设备兼容:支持Android 8.0及以上系统,适配主流芯片平台(高通/联发科/麒麟等)
1、构建设备内核
同步内核源码:
<kernel_manifest.xml> 是一个可以唯一确定构建的清单文件,您可以使用该清单进行可重新预测的构建。 您应该从通用内核映像 (GKI) 发布构建下载清单文件
2、构建内核镜像
例如,我们需要构建 aarch64 内核镜像:
不要忘记添加 LTO=thin, 否则,如果您的计算机内存小于 24GB,构建可能会失败。
从 Android 13 开始,内核由 bazel 构建:
3、使用 KernelSU 构建内核
如果您可以成功构建内核,那么构建 KernelSU 就很容易,根据自己的需求在内核源代码根目录中运行以下任一命令:
最新tag(稳定版本)
main分支(开发版本)
指定tag(比如v0.5.2)
然后重建内核,您将获得带有 KernelSU 的内核映像!
1、KernelSU是否支持我的设备?
首先,您的设备应该能够解锁 bootloader。如果不能,则不支持。
然后在你的设备上安装 KernelSU 管理器并打开它,如果它显示 不支持 ,那么你的设备没有官方支持的开箱即用的boot image;但你可以自己编译内核集成KernelSU进而使用它。
2、KernelSU 是否需要解锁Bootloader?
当然需要。
3、KernelSU 是否支持模块 ?
支持,但它是早期版本,可能有问题。请等待它稳定 ??
4、KernelSU 是否支持 Xposed ?
支持。Dreamland 和 TaiChi 可以正常运行。LSPosed 可以在 Zygisk on KernelSU 的支持下正常运行。
5、KernelSU 支持 Zygisk 吗?
KernelSU 本体不支持 Zygisk,但是你可以用 Zygisk on KernelSU 来使用 Zygisk 模块。
6、KernelSU 与 Magisk 兼容吗 ?
KernelSU 的模块系统与 Magisk 的 magic mount 有冲突,如果 KernelSU 中启用了任何模块,那么整个 Magisk 将无法工作。
但是如果你只使用 KernelSU 的 su,那么它会和 Magisk 一起工作:KernelSU 修改 kernel 、 Magisk 修改 ramdisk,它们可以一起工作。
7、KernelSU 会替代 Magisk 吗?
我们不这么认为,这也不是我们的目标。Magisk 对于用户空间 root 解决方案来说已经足够好了,它会存活很久。KernelSU 的目标是为用户提供内核接口,而不是替代 Magisk。
8、KernelSU 可以支持非 GKI 设备吗?
可以。但是你应该下载内核源代码并将 KernelSU 集成到源代码树中并自己编译内核。
9、KernelSU 支持 Android 12 以下的设备吗?
影响 KernelSU 兼容性的是设备内核的版本,它与设备的 Android 版本没有直接的关系。唯一有关联的是:出厂 Android 12 的设备,一定是 5.10 或更高的内核(GKI设备);因此结论如下:
出厂 Android 12 的设备必定是支持的(GKI 设备)
旧版本内核的设备(即使是 Android 12,也可能是旧内核)是兼容的(你需要自己编译内核)
10、KernelSU 可以支持旧内核吗?
可以,目前最低支持到 4.14;更低的版本你需要手动移植它,欢迎 PR !
11、为什么我手机系统是 Android 13,但内核版本却是 “android12-5.10”?
内核版本与 Android 版本无关,如果你需要刷入 KernelSU,请永远使用内核版本而非 Android 版本,如果你为 “android12-5.10” 的设备刷入 Android 13 的内核,等待你的将是 bootloop.
12、KernelSU 支持 –mount-master/全局挂载命名空间吗?
目前没有(未来可能会支持),但实际上有很多种办法手动进入全局命名空间,无需 su 内置支持,比如:
nsenter -t 1 -m sh 可以获得一个全局 mount namespace 的 shell.
在你要执行的命令之前添加 nsenter –mount=/proc/1/ns/mnt 就可以让此命令在全局 mount namespace 下执行。 KernelSU 本身也使用了 这种方法
13、我是 GKI1.0, 能用 KernelSU 吗?
GKI1 跟 GKI2 完全是两个东西,所以你需要自行编译内核。