Skip to content

通过 KernelSU 获取 Root

第一章:基础知识

一、KMI & GKI

1. GKI

GKI 全称为 Generic Kernel Image,是谷歌为 Android 设备引入的一种通用内核方案。GKI 的主要目的是通过标准化和模块化内核来提高 Android 生态系统的兼容性和可维护性。

特点:

  • 通用性

    GKI 通过定义一个标准的内核接口(KMI,Kernel Module Interface),确保不同设备可以使用相同的内核镜像,只要它们的 KMI 版本一致。

    这意味着设备制造商可以使用一个通用的内核镜像来支持多个设备,减少了内核定制的复杂性和维护成本。

  • 模块化

    GKI 内核将设备特定的代码和通用代码分离。设备特定的驱动程序和模块可以作为独立的模块加载,而不是直接编译进内核。

    这种模块化的设计使得内核更新更加灵活,可以在不影响设备特定功能的情况下进行内核更新。

2. KMI

KMI 全称 Kernel Module Interface,相同 KMI 的内核版本是兼容的。这也是 GKI 中“通用”的含义所在;反之,如果 KMI 不同,那么这些内核之间无法互相兼容,刷入与你设备 KMI 不同的内核镜像可能会导致死机。

具体来说,对 GKI 的设备,其内核版本格式应该如下:

txt
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-g30979850fc205.10.137-android12-9-g30979850fc20 的 KMI 相同!

二、KernelSU 运行模式

KernelSU 提供两种主要的安装模式:LKM(Loadable Kernel Module)和 GKI(Generic Kernel Image)。

  • **LKM 模式:**通过可加载内核模块方式,将 KernelSU 注入现有的 Kernel 中,无需替换原始 Kernel。 此模式适合希望保留原厂 Kernel 或使用第三方 Kernel 的用户。
  • **GKI 模式:**直接使用 KernelSU 提供的通用 Kernel 映像,替换设备原有的 Kernel。此模式适用于需要更高通用性或在 LKM 模式无法运作的情况下。

三、与 Magisk 不同?

KernelSU 使用 Overlayfs,通过内核层创建虚拟文件层覆盖系统分区,依赖 Linux 内核的 OverlayFS 特性实现模块加载,会生成 1t 的稀疏文件。

Magisk 使用 Magic Mount,利用绑定挂载(Bind Mount)动态替换系统文件路径,直接修改挂载命名空间实现模块注入,不会生成 1t 的稀疏文件。

四、ksu 其他分支

  • KernelSU (ksu)

  • MKSU

    Magic-KSU 是 KernelSU 的一个分支,由开发者 5ec1cff 维护,基于 tiann 的原始 KernelSU 项目。

  • SukiSU Ultra

    与 SukiSU 是同一作者,此版增加了 KPM。

  • SukiSU

    基于 5ec1cff 的 Magic Mount 的模块系统。

  • KernelSU Next (ksun)

  • Wild KSU (wksu)

五、AK3 搜罗

  • WildKernels / GKI Kernels With WildKSU & SUSFS

    这个编译了一加、GKI 及其他 AK3。

    WildKernels 针对不同的 Android 版本与 KMI,分别提供对应 KernelSU 与 KernelSU-Next 两套 Root 工具所使用的编译版本。

    每组版本会包含:

    • boot.img:提供给用户手动处理刷入,文件压缩格式有 .gz、.lz4 及 raw。
    • AK3 压缩包(AnyKernel3.zip):可直接通过工具刷入,操作简便,适合一般用户。
  • Action_OKI_KernelSU_SUSFS

    OKI 全名 Oneplus Kernel Image 即“一加内核镜像”。它不同于 GKI,其编译内核源码来自一加官方,保留官核特性。

第二章:安装 KernelSU

一、检查手机是否支持 KernelSU

安装 KernelSu Manager 以判断设备支持情况。

  • 若显示 Unsupported,代表官方不会提供该装置任何形式的 Kernel,若要使用 KernelSU,则必须自行编译 Kernel。
  • 若显示 Not installed(尚未安装),则表示该装置为 KernelSU 官方认证支持的设备,可直接进行安装作。

二、LKM 模式安装

1. 修补启动映像文件

启用 KernelSU Manager,画面会显示目前尚未安装 KernelSU,请点击红色区块的「尚未安装」来开始作,接着选择「init_boot 分区的映像文件」作为修补目标。

INFO

Android 13 以前的设备,KernelSU 会针对 boot.img 进行 patch;但从 Android 13 开始,引入了 init_boot.img 作为开机阶段的独立映像文件,因此后续操作将改为处理 init_boot.img

2. 刷入修补后的启动映像文件

  1. 打开「命令提示字符」,并切换工作目录至先前解压缩的 platform-tools 文件夹。 使用 USB 数据线将手机与电脑连接后,输入 adb devices 指令确认 ADB 是否连线成功,若连线正常,画面将显示手机序列号。
  2. 输入 adb pull /storage/emulated/0/Download/kernelsu_patched_20250506_131103.img 指令,将事前通过 KernelSU 修补产生的映像文件下载至目前的 platform-tools 文件夹。
  3. 输入 adb reboot bootloader 指令,让手机重新启动并进入 Fastboot 模式。
  4. 在 Fastboot 模式下,输入 fastboot devices 指令,确认手机是否与电脑保持连线。
  5. 输入 fastboot getvar current-slot 指令,系统回传 current-slot: a,代表目前使用的是 A 分割区。
  6. 接着输入 fastboot flash init_boot_a kernelsu_patched_20250506_131103.img 指令,将修补后的映像档刷入对应分割区。
  7. 最后输入 fastboot reboot 指令,让手机重新开机。

3. 验证设备是否成功取得 LKM 模式 Root 权限

三、GKI 模式安装

方法一:手动修补 boot.img 并刷入设备

提示

GKI 模式一律针对 boot 分区进行修改,不需要依照 Android 系统版本额外考虑 boot 与 init_boot 分区的差异。 也就是说,即便是在 Android 13 或以上版本,GKI 模式仍旧是处理 boot.img。

1. 查询设备 Kernel 版本与对应的 KMI

在安装 KernelSU Manager 后开启,装置核心显示的就是目前手机的 Kernel 版本,以上图为例,版本为 6.1.99-android14-11-gd7dac4b14270-ab12946699,KMI就会是 android14-6.1.99

2. 准备修补所需文件

提示

MagiskBoot 是用于解包和重新打包安卓 boot images。
AnyKernel 是一个 update.zip 模板,可以将任何内核应用于任何 ROM,而不管 ramdisk。

1)从 GitHub 下载 Windows 版本的 magiskboot,并将 magiskboot.exe 解压缩至 c:\platform-tools 目录下。

2)前往 KernelSU GitHub Releases 页面,根据目前设备的 Kernel 版本与 KMI 对应项目,下载合适的 AnyKernel3 安装包(例如:AnyKernel3-android14-6.1.99_2024-10.zip),并将压缩文件内的 Image 解压缩至 c:\platform-tools

3)准备提取到的目前手机系统所使用的 boot.img

3. 使用 magiskboot 修补 boot.img

在命令提示字符 c:\platform-tools 下执行 magiskboot unpack boot.img 指令来将原厂固件中的 boot.img 给解压缩,这时候后看到 KERNEL_FMT 显示的压缩格式为 lz4_legacy

执行完上面的命令,其实 c:\platform-tools 文件夹下方会多出一个 kernel 文件。

这时输入 move /Y Image kernel 指令,这时会将 AnyKernel3 安装包中的 Image 文件取代原厂 kernel。

接着输入 magiskboot repack boot.img,会重新封装成 new-boot.img 文件

4. 刷入修补后的启动映像文件
  1. 打开「命令提示字符」,并切换工作目录至先前解压缩的 platform-tools 文件夹。 使用 USB 数据线将手机与电脑连接后,输入 adb devices 指令确认 ADB 是否连线成功,若连线正常,画面将显示手机序列号。
  2. 输入 adb reboot bootloader 指令,让手机重新启动并进入 Fastboot 模式。
  3. 在 Fastboot 模式下,输入 fastboot devices 指令,确认手机是否与电脑保持连线。
  4. 输入 fastboot getvar current-slot 指令,系统回传 current-slot: b,代表目前使用的是 B 分割区。
  5. 接着输入 fastboot flash boot_b new-boot.img 指令,将手动修补后的映像文件刷入对应分割区。
  6. 最后输入 fastboot reboot 指令,让手机重新开机。
5. 验证设备是否成功取得 GKI 模式 Root 权限

方法二:使用 Kernel Flasher【推荐】

适用于已取到 root 权限,或可通过 fastboot boot 临时启动取得权限的设备,搭配第三方 Kernel 安装工具(如 Kernel Flasher)将对应 KMI 的 AnyKernel3 安装包刷入系统。

内核刷写 App:

1. 寻找版本并下载

参见第一章的第五小结。

2. 下载 AK3 刷写工具

下载 HorizonKernelFlasher 工具(下载直链)并安装,然后在 KernelSU (Alpha 等) 内给予其超级用户权限。

3. 选择并刷入

打开 HorizonKernelFlasher,自动弹出选择界面,选择你下载的 AK3 包(名称应为 AnyKernel3-oneplus_xxx_x-x,x-MKSU-xxxxx-SUSFS-x.x.x.zip)。

刷入完成弹出是否重启请选择“否”。

4. 安装 MKSU 管理器

危险

确保管理器的模块挂载方式为 Magic Mount 或类似方法,而非 overlayfs 等方式。也就是说当前的 Root 管理器必须为 alpha、ksunext、apatchnext、mksu 其中一种才行,否则手机会睡觉 😴。
为什么是这样?主要看你之后使用的是什么管理器。

安装之前下载的 MKSU 管理器(名称应为 KernelSU_xxxxxxxx_xxxxx-release.apk)。

安装完成后你可能会发现为什么 MKSU 的名字依然为 KernelSU,请放心,并不是你下载错文件了,而是 5ec1cff 在编写此项目时没有修改软件名字,但修改了包名和签名,故不用担心与原版 KSU 出现冲突。

之后重启你的手机就可以愉快玩耍啦!

方法三:custom Recovery

若设备本身已安装定制 Recovery,亦可直接通过该环境刷入对应 KMI 的 AnyKernel3 安装包完成 KernelSU GKI 模式。

步骤:

  1. 在 KernelSU 的 Release 页面 下载与你手机版本匹配的以 AnyKernel3 开头的 zip 刷机包;如果你不知道下载哪一个,请仔细查阅上述文档中关于 KMI安全补丁级别的描述;下载错误的刷机包很可能导致无法开机,请注意备份。
  2. 重启手机进入 TWRP。
  3. 使用 adb 将 AnyKernel3-*.zip 放到手机 /sdcard,然后在 TWRP 图形界面选择安装;或者你也可以直接 adb sideload AnyKernel-*.zip 安装。

PS: 这种方法适用于任何情况下的安装(不限于初次安装或者后续升级),只要你用 TWRP 就可以操作。

第三章:过环境

一、隐藏 KernelSU

隐藏 KernelSU 就是内核支持 SuSFS,且启用 SuSFS 模组。

第一步:寻找支持 SuSFS 的内核

SuSFS 需要内核支持,如果不支持,则要自己编译。这里推荐一些大佬编译好的。

第二步:刷入 SuSFS Patched Kernel(AK3 格式)

  1. 在设备上作前往 Horizon Kernel Flasher 官方页面下载 APK 并安装。 安装完成后,请到 KSUN 管理接口授予该应用「超级用户」权限。

  2. 启用 Kernel Flasher,确认当前挂载中的为插槽 B,按下「查看」后点击「刷入」按钮。

  3. 选择“刷入 AK3 压缩包”,接着挑选先前下载的支持 SuSFS 的内核。

  4. 完成刷入后,系统会显示的信息。 此时即可重启手机。

  5. 重启后打开 KSUN 管理界面,将会看到 SuSFS: Supported 的状态。

  6. 安装 SUSFS-FOR-KERNELSU 模块。

    susfs4ksu-module 下载模块压缩文件,通过 KSUN 模块管理接口安装即可。

二、隐藏 Bl & 解决 tee 损坏

第一步:Tricky Store (TS)

下载 magisk 模块 Tricky Store,且安装。

重要配置文件:

  • /data/adb/tricky_store/keybox.xml
  • /data/adb/tricky_store/target.txt:需要对哪个应用生效。

第二步:Tricky Addon module

Tricky Addon module 也叫 TS 插件。

下载 magisk 模块 Tricky Addon module,且安装。

第三步:Play Integrity Fix (PIF)

Play Integrity Fix 模块专注于修复 Play Integrity 和 SafetyNet 的验证结果,以便获取有效的认证。

Play Integrity Fix 已经删库跑路了。

推荐新的 PlayIntegrityFix NEXTPlay Integrity Fork

第四章:移除 ksu

一、LKM 模式移除流程

开启 KernelSU Manager 后,点击右上角齿轮图标进入设定菜单,找到「解除安装」功能。

点击永久性解除安装选项,即可彻底移除 KernelSU,包含 Root 权限本体及所有已安装的模块。 解除安装并将手机重新启动后,变更才会生效。

二、GKI 模式移除与 boot.img 还原

在 GKI 模式下,KernelSU Manager 并不会显示「解除安装」选项。 若要反安装,建议透过刷回原始 boot.img 的方式完成。 作流程如下:

  1. 将原厂 boot.img 放置于 c:\platform-tools 目录,并将手机进入 fastboot 模式。
  2. 执行 fastboot getvar current-slot,确认目前启用中的分割区(例如回传 current-slot: b 代表使用的是 B 分区)。
  3. 根据查得结果,执行 fastboot flash boot_b boot.img (或 boot_a),将原始 boot.img 刷入对应分区。
  4. 刷写完成后输入 fastboot reboot,重新启动设备。
  5. 系统启动后,将 KernelSU Manager 移除,即完成 GKI 模式反安装流程。

第五章:推荐模块

参见 Magisk 文章。

附录

一、参考文章

Kernel 安装

后续 OTA 更新系统,保留 ksu

Released under the MIT License.