website: Add docs for LKM mode

This commit is contained in:
weishu
2024-03-23 16:05:21 +08:00
parent 7451d0fb83
commit f73885fc95
2 changed files with 186 additions and 4 deletions

View File

@@ -57,7 +57,98 @@ w .x .y -zzz -k -something
## 安装介绍 {#installationintroduction}
KernelSU 的安装方法有如下几种,各自适用于不同的场景,请按需选择
`0.9.0` 版本以后,在 GKI 设备中KernelSU 支持两种运行模式
1. `GKI`:使用**通用内核镜像**GKI替换掉设备原有的内核。
2. `LKM`:使用**可加载内核模块**LKM的方式加载到设备内核中不会替换掉设备原有的内核。
这两种方式适用于不同的场景,你可以根据自己的需求选择。
### GKI 模式 {#gki-mode}
GKI 模式会替换掉设备原有的内核,使用 KernelSU 提供的通用内核镜像。GKI 模式的优点是:
1. 通用型强,适用于大多数设备;比如三星开启了 KNOX 的设备LKM 模式无法运作。还有一些冷门的魔改设备,也只能使用 GKI 模式;
2. 不依赖官方固件即可使用;不需要等待官方固件更新,只要 KMI 一致,就可以使用;
### LKM 模式 {#lkm-mode}
LKM 模式不会替换掉设备原有的内核而是使用可加载内核模块的方式加载到设备内核中。LKM 模式的优点是:
1. 不会替换掉设备原有的内核;如果你对设备原有的内核有特殊需求,或者你希望在使用第三方内核的同时使用 KernelSU可以使用 LKM 模式;
2. 升级和 OTA 较为方便;升级 KernelSU 时,可以直接在管理器里面安装,无需再手动刷写;系统 OTA 后,可以直接安装到第二个槽位,也无需再手动刷写;
3. 适用于一些特殊场景;比如使用临时 ROOT 权限也可以加载 LKM由于不需要替换 boot 分区,因此不会触发 avb不会使设备以外变砖
4. LKM 可以被临时卸载;如果你临时想取消 root可以卸载 LKM这个过程不需要刷写分区甚至也不用重启设备如果你想再次 root只需要重启设备即可
:::tip 两种模式共存
打开管理器后,你可以在首页看到设备当前运行的模式;注意 GKI 模式的优先级高于 LKM如你你既使用 GKI 内核替换掉了原有的内核,又使用 LKM 的方式修补了 GKI 内核,那么 LKM 会被忽略,设备将永远以 GKI 的模式运行。
:::
### 选哪个? {#which-one}
如果你的设备是手机,我们建议您优先考虑 LKM 模式如果你的设备是模拟器、WSA 或者 Waydroid 等,我们建议您优先考虑 GKI 模式。
## LKM 安装
### 获取官方固件
使用 LKM 的模式,需要获取官方固件,然后在官方固件的基础上修补;如果你使用的是第三方内核,可以把第三方内核的 boot.img 作为官方固件。
获取官方固件的方法有很多,如果你的设备支持 `fastboot boot`,那么我们最推荐以及最简单的方法是使用 `fastboot boot` 临时启动 KernelSU 提供的 GKI 内核,然后安装管理器,最后在管理器中直接安装;这种方法不需要你手动下载官方固件,也不需要你手动提取 boot。
如果你的设备不支持 `fastboot boot`,那么你可能需要手动去下载官方固件包,然后从中提取 boot。
与 GKI 模式不同LKM 模式会修改 `ramdisk`,因此在出厂 Android 13 的设备上,它需要修补的是 `init_boot` 分区而非 `boot` 分区;而 GKI 模式则永远是操作 `boot` 分区。
### 使用管理器
打开管理器,点击右上角的安装图标,会出现若干个选项:
1. 选择并修补一个文件;如果你手机目前没有 root 权限,你可以选择这个选项,然后选择你的官方固件,管理器会自动修补它;你只需要刷入这个修补后的文件,即可永久获取 root 权限;
2. 直接安装;如果你手机已经 root你可以选择这个选项管理器会自动获取你的设备信息然后自动修补官方固件然后刷入你可以考虑使用 `fastboot boot` KernelSU 的 GKI 内核来获取临时 root 安装管理器,然后再使用这个选项;这种方式也是 KernelSU 升级最主要的方式;
3. 安装到另一个分区;如果你的设备支持 A/B 分区,你可以选择这个选项,管理器会自动修补官方固件,然后安装到另一个分区;这种方式适用于 OTA 后的设备,你可以在 OTA 后直接安装到另一个分区,然后重启设备即可;
### 使用命令行
如果你不想使用管理器,你也可以使用命令行来安装 LKMKernelSU 提供的 `ksud` 工具可以帮助你快速修补官方固件,然后刷入。
这个工具支持 macOS、Linux 和 Windows你可以在 [GitHub Release](https://github.com/tiann/KernelSU/releases) 下载对应的版本。
使用方法:`ksud boot-patch` 具体的使用方法你可以查看命令行帮助。
```sh
oriole:/ # ksud boot-patch -h
Patch boot or init_boot images to apply KernelSU
Usage: ksud boot-patch [OPTIONS]
Options:
-b, --boot <BOOT> boot image path, if not specified, will try to find the boot image automatically
-k, --kernel <KERNEL> kernel image path to replace
-m, --module <MODULE> LKM module path to replace, if not specified, will use the builtin one
-i, --init <INIT> init to be replaced
-u, --ota will use another slot when boot image is not specified
-f, --flash Flash it to boot partition after patch
-o, --out <OUT> output path, if not specified, will use current directory
--magiskboot <MAGISKBOOT> magiskboot path, if not specified, will use builtin one
--kmi <KMI> KMI version, if specified, will use the specified KMI
-h, --help Print help
```
需要说明的几个选项:
1. `--magiskboot` 选项可以指定 magiskboot 的路径如果不指定ksud 会在环境变量中查找;如果你不知道如何获取 magiskboot可以查阅[这里](#patch-boot-image)
2. `--kmi` 选项可以指定 `KMI` 版本,如果你的设备内核名字没有遵循 KMI 规范,你可以通过这个选项来指定;
最常见的使用方法为:
```sh
ksud boot-patch -b <boot.img> --kmi android13-5.10
```
## GKI 安装
GKI 的安装方法有如下几种,各自适用于不同的场景,请按需选择:
1. 使用 KernelSU 提供的**通用内核镜像**使用 fastboot 安装
2. 使用内核刷写 App如 KernelFlasher安装