KernelSU
顾名思义,KernelSU
就是基于内核的 SU
。它通过自定义内核,直接在内核中赋予目标进程 Root
权限。
前身
大约 2018 年的时候,XDA 上的 zx2c4
就给出了一个 KernelSU 的简单实现;虽然整个实现非常简单,但它的确给我们展示了另外一种可能。
后来,LSPosed 团队在实现 WSA 的 Magisk 方案的时候,也曾通过 KernelSU
来 root WSA。
在 GKI 2.0 出现之前,各厂商的内核都是各自为战,因此内核碎片化严重,因此当时 KernelSU
并不能成为一个通用的 Root 方案。而随着 GKI 2.0 的出现,内核逐渐在各个手机之间通用,使得 KernelSU
的推广也成为了可能。
特性
- 基于内核的 su 和权限管理。
- 基于 overlayfs 的模块系统。
KernelSU 安装
1. 检查您的设备是否被支持
从 GitHub Releases 或 酷安 下载 KernelSU
管理器应用,然后将应用程序安装到设备并打开:
- 如果应用程序显示 “不支持”,则表示您的设备不支持
KernelSU
,你需要自己编译设备的内核才能使用,KernelSU
官方不会也永远不会为你提供一个可以刷写的boot
镜像。 - 如果应用程序显示 “未安装”,那么
KernelSU
支持您的设备;可以进行下一步操作。
任何刷机操作都是有风险的,请务必做好备份。
2. KMI 查看
KMI
全称 Kernel Module Interface
,相同 KMI
的内核版本是兼容的 这也是 GKI
中“通用”的含义所在;反之,如果 KMI
不同,那么这些内核之间无法互相兼容,刷入与你设备 KMI
不同的内核镜像可能会导致死机。
具体来说,对 GKI
的设备,其内核版本格式应该如下:
KernelRelease :=
Version.PatchLevel.SubLevel-AndroidRelease-KmiGeneration-suffix
w .x .y -zzz -k -something
其中,w.x-zzz-k
为 KMI
版本。例如,一个设备内核版本为5.10.101-android12-9-g30979850fc20
,那么它的 KMI 为 5.10-android12-9
;理论上刷入其他这个 KMI
的内核也能正常开机。
请注意,内核版本中的
SubLevel
不属于KMI
的范畴!也就是说5.10.101-android12-9-g30979850fc20
与5.10.137-android12-9-g30979850fc20
的KMI
相同!(只看前两个版本号)同时,内核版本与 Android 版本也并不一定相同。如果您发现您的内核版本是
android12-5.10.101
,然而你 Android 系统的版本为 Android 13 或者其他这并不会影响什么。如果你需要刷机,请以内核版本为准。
3. 安装
KernelSU 的安装方法有如下几种,各自适用于不同的场景,请按需选择:
- 使用自定义 Recovery(如 TWRP)安装
- 使用内核刷写 App,如 (Franco Kernel Manager)安装
- 使用 KernelSU 提供的 boot.img 使用 fastboot 安装
- 手动修补 boot.img 然后安装
具体操作过程可以查看官方文档。
如何为非 GKI 内核集成 KernelSU
一些现成的第三方 KernelSU 提供请查看非官方支持设备。
必备模块
- ZygiskOnKernelSU: 使用
KernelSU
运行Zygisk
刷入上面的模块后,其他常用模块直接刷入,部分模块可能存在问题。