本文翻译自 官方文档 Magisk Installation,
2021.04.20 第一次更新
2022.02.28 第二次更新
2023.01.27 第三次更新
注: 官方文档中删除的内容,本文有所选择地作了保留。此外,在某些地方,额外添加了一些解释说明。
其他章节
下面的章节是为开发者准备的
安装
如果你已经安装了 Magisk,那么我 强烈建议 你在 Magisk App 内使用 “直接安装” 的方式来进行更新。
此教程是为第一次安装的用户准备的。
准备开始
开始之前:
- 此教程假设你已经懂得如何使用
adb
和fastboot
- 你的设备必须已经解锁 bootloader
- 在安装 Magisk 之前,请确保移除所有的 boot 镜像改动,例如其他 root 解决方案。最简单的方法是使用原厂包还原 boot ,或者重新刷一个不自带 root 的第三方ROM
- 如果你还想安装第三方内核,请在安装完 Magisk 之后再做。
下载并安装最新的 Magisk App。我们使用该应用程序收集有关你设备的一些信息。在主屏幕中,你应该看到以下内容:
Ramdisk 的结果表示你设备的分区中是否含有 ramdisk。如果你的设备没有 ramdisk,请先阅读 将 Magisk 安装到 Recovery 分区 部分。
然而,这里有一些例外情况,有些设备的 bootloader 会接受 ramdisk,尽管它不应该这样做。也就是说,有的设备虽然 MagiskApp 显示有 Ramdisk,但实际上是没有的。因为没有办法检测到这一点,所以唯一确定的方法是,把你的设备当作含有 Ramdisk 的设备进行实际尝试。幸运的是,据我们所知,只有部分小米设备具有这个特点,因此大多数人可以忽略此信息。)
如果你使用的是三星设备,并且安卓版本 ≥ 安卓9.0,请阅读 三星章节 部分。
对于出厂安卓版本 ≥ 13 的设备(例如:小米13),ramdisk 的情况有所不同,此时 ramdisk 被单独放置在一个名为 init_boot
的分区中,而那些安卓版本低于13的以及从安卓12升级到安卓13的设备,ramdisk 依然在 boot 分区中。阅读这里以了解变更详情。
如果你的设备 含有 boot ramdisk, 你需要复制一份 boot.img
或 init_boot.img
(如果有的话)
如果你的设备 没有 boot ramdisk, 你需要复制一份 recovery.img
你应该能够从官方固件包或自定义ROM zip中解压缩所需的文件。
现如今,固件包中的各分区镜像都被打包成 payload.bin
文件,不再是分散的镜像文件,因此需要借助 payload_dumper 等工具进行提取,你可以从 github、XDA、酷安中找到相关工具,也有人制作了安卓版本的提取工具。
接下来,我们需要知道你的设备是否有单独的 vbmeta
分区。
- 如果您的官方固件包包含
vbmeta.img
,那么你的设备有一个单独的vbmeta
分区 - 您还可以通过将设备连接到 PC 并运行以下命令进行检查:
adb shell ls -l /dev/block/by-name
如果你找到了vbmeta
、vbmeta_a
或vbmeta_b
,那么你的设备有一个单独的vbmeta
分区 - 否则,你的设备没有单独的
vbmeta
分区。
快速回顾一下,此时,你应该已经知道并准备好了:
- 你的设备是否含有 ramdisk
- 你的设备是否有单独的
vbmeta
分区 - 一份
boot.img
、init_boot.img
或recovery.img
文件(根据1的情况来)
让我们继续进行接下来的步骤 修补镜像。
修补镜像
- 将 boot.img 或 init_boot.img 或 recovery.img 复制到你的设备中。
- 在 Magisk App 中,点击 Magisk 卡片中的 安装 按钮。
- 如果你要修补 recovery 镜像,请选中 “恢复模式” 选项。(含有 ramdisk 的设备不显示此选项)
- 如果您的设备没有单独的
vbmeta
分区,请选中 “Patch vbmeta in boot image” 选项。(含有 vbmeta 分区的设备不显示此选项) - 点击 选择并修补一个文件,然后选择事先准备好的 boot.img 或 init_boot.img 或 recovery.img 文件。
- 修补完成后,使用 ADB 将修补好的镜像文件复制到你的电脑上。
adb pull /sdcard/Download/magisk_patched_[random_strings].img
- 将修补好的镜像刷写到设备中。
对于大多数设备,重启并进入 fastboot 模式之后,使用如下格式的命令刷入:
如果你要刷入的是 boot 镜像:
fastboot flash boot /path/to/magisk_patched.img
,
如果你要刷入的是 init_boot 镜像,则是:
fastboot flash init_boot /path/to/magisk_patched.img
,
如果你要刷入的是 recovery 镜像,则是:
fastboot flash recovery /path/to/magisk_patched.img
。 - (可选)如果您的设备有单独的
vbmeta
分区,您可以使用以下命令修补vbmeta
分区:
fastboot flash vbmeta --disable-verity --disable-verification vbmeta.img
- 重启设备,就完成了!
卸载 Magisk
卸载 Magisk 的最简单方法是直接点击 Magisk App 界面上 “卸载 Magisk” 按钮。
如果你坚持使用第三方 Recovery,请将 Magisk APK 重命名为uninstall.zip
,然后像其他任何普通的刷机包一样对其进行刷入。
将 Magisk 安装到 Recovery 分区
如果你的设备在 boot 镜像中没有 ramdisk,则 Magisk 别无选择,只能安装在 recovery 分区中。对于这些设备,每次需要 Magisk 时,你都必须 “重启至 Recovery 模式”。
当 Magisk 安装在 Recovery 分区时,你不能使用第三方 Recovery 来安装/升级 Magisk! 安装/升级 Magisk 的唯一方法是通过 Magisk App,它将知道你的设备状态,并安装到正确的分区并重新启动到正确的模式。
由于 Magisk 现在劫持了设备的 recovery 功能,因此设计了另外一种机制可以让你在实际需要时引导至真正的 recovery 模式:这取决于 你按下recovery组合键的时间长短。
每个设备都有其自己的组合键来进入 recovery 模式。例如,Galaxy S10 的示例是(Power + Bixby + Volume Up)。快速的 Google 搜索应该可以轻松为你获取设备的此信息。按下组合键,设备在启动屏幕上振动时,立即松开所有按键将会启动 Magisk。如果想要进入实际的 recovery 模式,请继续长按音量+键,直到进入 recovery 模式为止。
安装 Magisk 到 Recovery 分区之后(从断电开始):
- (正常开机)→(无 Magisk 的系统)
- (Recovery 组合键)→(启动画面)→(释放所有按钮)→(带有 Magisk 的系统)
- (Recovery 组合键)→(启动画面)→(长按音量+键)→(Recovery 模式)
三星章节
如果你的三星设备出厂安卓版本低于 Android 9.0,请不要阅读此章节。
安装 Magisk 之前
- 安装 Magisk 将会使 KNOX 失效。
- 首次安装 Magisk 需要进行一次完整的数据擦除(虽然在解锁 Bootloader 时,已经进行了数据清除,但是仍然需要重新清除所有数据)。
所以在继续操作之前,请备份数据。 - 下载支持您设备的 Odin(仅在 Windows 上运行)
解锁 Bootloader
在现代三星设备上解锁 Bootloader 有一些注意事项:新引入的 VaultKeeper
服务将使 bootloader 在某些情况下拒绝任何非官方分区。
- 在 开发者选项→OEM解锁 中允许 Bootloader 解锁。
- 重启至 Download 模式:关机,然后按下设备的 Download 模式组合键。
- 长按音量+键解锁 Bootloader,这将擦除你的数据并自动重启。
- 完成初始设置。跳过所有步骤,因为稍后在安装 Magisk 时将再次擦除数据。 在安装过程中将设备连接到 Internet。
- 启用开发者选项,并 确认OEM解锁选项存在且显示为灰色, 这意味着
VaultKeeper
服务已释放 bootloader。 - 你的 bootloader 现在可以在 download 模式下接受非官方镜像了。
开始安装 Magisk
- 你可以使用由 samfirm.js,Frija, 或 Samloader 提供的工具直接从三星服务器上下载你设备对应的最新固件包。
- 解压缩固件并将
AP
tar文件复制到你的设备。通常命名格式如下:AP_[device_model_sw_ver].tar.md5
- 在 Magisk App 中,点击 Magisk 卡片中的 安装 按钮。
- 如果你的设备 没有 boot ramdisk,请确保在选项中选中了 “恢复模式”。
在大多数情况下,应该已经对其进行了自动检查。 - 点击 选择并修补一个文件,然后选择
AP
tar文件。 - Magisk App 会将修补完成的固件文件存储在
[Internal Storage]/Download/magisk_patched_[random_strings].tar
。 - 使用 ADB 将修补好的固件文件复制到你的电脑上。
adb pull /sdcard/Download/magisk_patched_[random_strings].tar
请勿使用MTP,因为已知它会损坏大文件。 - 重启至 Download 模式。在你的电脑上打开 Odin,将
magisk_patched.tar
作为AP
,与从原始固件中提取的BL
,CP
和CSC
一同刷入设备。(注意:不是HOME_CSC
,因为我们要擦除数据)。这可能需要一段时间(> 10分钟)。 - 完成 Odin 后,你的设备应重新启动。你可以继续进行标准的初始设置。
如果卡在引导循环中,且有出现提示的话,请同意恢复出厂设置。 - 如果你的设备 没有 boot ramdisk,请立即重启至 Recovery 以使用 Magisk 引导 Android(原因在 将 Magisk 安装到 Recovery 分区 中已经说明)。
- 尽管已安装 Magisk,但仍需要一些其他设置。请连接到互联网。
- 安装最新的 Magisk App 并启动该应用程序。它应该显示一个对话框,并请求一些其他设置。让它完成工作,该应用将自动重启你的设备。
- 大功告成! 享受 Magisk 吧! 😃
升级系统
一旦 root 了你的三星设备,你就不能再通过 OTA 来升级你的系统。要想升级系统,你必须手动下载新的固件压缩包,然后参照上述步骤重来一遍 AP
修补过程。这里唯一的区别在于 Odin 刷入步骤:不要使用 CSC
tar,而是使用 HOME_CSC
tar,因为我们正在执行升级,而不是初始安装。
重要说明
- 永远不要 尝试将
boot
、recovery
或vbmeta
分区还原!否则,你将轻松获得一块板砖,唯一的出路是通过数据擦除进行完整的 Odin 还原。 - 如果你要使用新固件升级系统,出于上述原因,绝对不要直接使用官方的
AP
tar文件。应 始终先在 Magisk App 中对AP
进行修补,然后再在 Odin 中刷入。 - 将来进行固件升级时,请使用
HOME_CSC
保存数据。仅在 Magisk 初次安装中才需要使用CSC
。 - 永远不要只刷入
AP
,否则 Odin 会缩小你的/data
文件系统。在升级时,请刷入完整的AP
+BL
+CP
+HOME_CSC
。
使用第三方 Recovery 安装 Magisk
警告:此安装方法已被弃用,基本不再维护。
仅当您的设备具有 boot ramdisk 时,才可以使用第三方 Recovery 进行安装。
在某些第三方 Recovery 中,安装可能会静默失败(看起来像成功,但实际上它会无限重启)。这是因为安装程序脚本无法检测到正确的设备信息,或者 recovery 环境不符合其预期。如果遇到任何问题,请使用 修补镜像 方法,因为它可以保证100%正常工作。由于这个原因,不再建议通过第三方 Recovery 在现代设备上安装 Magisk。通过第三方 Recovery 安装 Magisk 的方法仅用于旧版支持。
- 下载 Magisk apk。
- 将
.apk
文件扩展名重命名为.zip
,例如:Magisk-v24.0.apk
→Magisk-v24.0.zip
。如果你在重命名文件扩展名时遇到麻烦(例如在Windows上),请使用Android上的文件管理器或TWRP中包含的文件管理器来重命名文件。 - 像其他任何普通的刷机包一样,刷入此 zip 文件。
- 重启检查 Magisk App 是否已安装,如果未自动安装,请手动安装 APK。
警告:模块的 sepolicy.rule 文件可能存储在
cache
分区中。不要擦除cache
分区。
关于华为
Magisk 不再正式支持现代华为设备,因为其设备上的 bootloader 不可解锁,更重要的是,它们不遵循标准的 Android 分区方案。