这篇文章是 [搞机] MTK Android 刷机 Root,以 Aigo M2 Pro 为例 的改写版本,用于说明针对 OnePlus 设备的情况(高通和 MTK 芯片均可)。

众所周知,OnePlus 是知名的“极客”手机品牌。其 Bootloader 解锁可直接在设置中开启,无须进行注册、申请等手续,折腾起来非常方便。

本文介绍的是 OnePlus 设备通过刷机获取 Root 权限的通法,使用 Magisk 方案。本教程仅介绍了最基本的部分,没有推荐任何应用和模块,因此仅适用于知道自己 Root 后要做什么的用户。

操作以 OnePlus 9R 设备为例,所有操作在 Windows 系统下完成。

现在经常有“设备获取 Root 权限不安全”的说法,这种说法过于绝对。

传统方案 Root 的不安全主要来源于第三方 Recovery 系统,这允许任何人不经验证直接备份数据和修改系统文件。目前的 Root 方案较为完善,用户获取 Root 权限并不一定不安全,善用 Root 还能保护隐私。但是,对于使用不谨慎或喜欢冒险的用户,确实会大大增加隐私泄露、数据丢失、设备损坏的风险。若设备遭已获取 Root 权限的恶意软件攻击,则后果也会比一般的恶意软件攻击严重得多。

Magisk 方案是目前最为完善的方案,该方案不需要使用第三方 Recovery 系统,因而设备丢失后,对设备安全造成的影响也较小。

本文的写作时间是 2022 年第三季度。
请留意文章的时效性。
有效性复核:2024-11-18

部分应用(主要为安全性要求高的银行应用、政府公共服务应用以及反作弊要求高的游戏应用,但不含主流大厂的实用型应用)会检测设备上是否已获取 Root。若检测到,会采取警告、禁用敏感功能、要求登录验证码、拒绝加载等措施来规避可能的风险,游戏可能会不加警告而直接封号

对此,你需要采取 Root 隐藏措施。即便如此,你还需要手动选择隐藏 Root 的对象(如果隐藏方案支持白名单模式则不需要)。因此在安装上述类型软件后,请务必记住要立即对其开启 Root 隐藏,以免造成不必要的麻烦。

本文会介绍几种简单易用的 Root 隐藏措施。

本文仅供参考。若学习操作,导致设备出现系统损坏、无法开机或正常使用以及数据丢失等问题,机主应当自行承担责任。一般的系统损坏无法开机可通过“深度刷机”方式或售后刷机修复(然而实际上很难搞到这个地步)。

为防止操作出现疏漏,请至少完整阅读一遍后再开始操作。建议使用电脑等大屏设备阅读。

刷机,Root,Magisk,为什么?

Root 意味着什么?

Root 意味着自由

Root,指的是 root 用户。该用户对设备有最高的权限。获取 Root 权限,即修改系统,使得用户和应用能够以 root 用户的身份执行操作,也就是说,用户获得对设备的最高访问权,真正实现了“我的设备我做主”。

Root 权限的使用方式主要分为两类。一种是获取系统特权,常见应用如下:

  • 利用文件管理器或破解工具自由备份、还原应用的数据和游戏进度。
  • 利用系统权限禁用/隐藏应用,或禁止应用后台运行。
  • 禁用,或在当前用户空间下卸载系统应用。
  • 自由操纵应用的权限,例如禁止自启动。
  • 使用内存修改器对游戏数据进行破解。
  • 修改受保护的系统设置,例如无障碍服务。
  • 修改系统内存,实现更改设备 MAC 地址保护隐私/绕过身份验证等。
  • 修改隐藏的设置项,例如使状态栏上的时间精确到秒(这个一般不需要 Root 也能做到)。
  • 执行自动化操作。

另一种,为修改系统。常见应用如下:

  • 定制系统的开机动画。
  • 彻底清除、替换系统应用。
  • 将应用安装为系统应用。
  • 修改内核选项。
  • 修改系统构建信息,以实现修改设备的制造商、机型等信息。
  • 对系统核心进行破解,以移除应用覆盖安装时的版本和签名检测(对破解游戏比较有用)。
  • 调校充电速度等行为。
  • 对硬件超频以压榨性能。
  • 注入系统进程,以便调整第三方应用的界面、行为。

同样,Root 意味着风险

  • 若对恶意软件授予 Root 权限,其将具有非常大的破坏力。
  • Root 权限使用时不谨慎,或因为各类天灾人祸,会导致系统损坏与数据丢失。
  • 系统更新变得麻烦。若原厂镜像未备份或系统被修改,设备将无法直接接受增量更新,需要刷机才能升级系统

我需不需要 Root?

是否需要 Root 取决于你需要进行的操作类型。

如果你的需求在 adb shell 下,或使用 adb 授权就能够完成(系统特权型中的大多数均属于此类),则很可能不需要 Root。如今,更加流行一些免 Root 获得系统特权的权宜之计(例如 Shizuku API)。相比于 Root,这种方式的风险小得多,更值得提倡。

如果你需要修改系统,或从事应用/游戏破解、Android 核心破解等工作,则你需要 Root。

为什么是 Magisk?

传统的 Root 权限方案是 SuperSU,该方案主要通过修改系统分区 /system 来安装 Root 权限。

Magisk 是一个较新的方案,主要优势如下:

  • #️⃣ 轻量化修改。相比于 SuperSU,其只修改比系统分区小得多 Boot 分区。因此,刷机过程要快很多,移除 Root 权限并还原原厂镜像容易得多。
  • 🚫 无系统(Systemless)方式。Magisk 不修改系统分区,使得设备接受后续系统更新要容易很多。
  • 🧩 模块(Modules)。Magisk 提供许多使用无系统方式修改系统的模块。
  • 💧 排除(DenyList)。用户可以将既不需要 Root 权限又不需要通过注入代码的方式(LSPosed 等)修改的应用加入排除列表,避免 Magisk 对其进行更改。一般而言,这些软件并不能感受到 Magisk 的存在,这使得对 Root 权限敏感的游戏、银行等软件仍然能正常使用
    一些第三方模块可以在允许 LSPosed 注入的情况下仍然提供 Magisk 隐藏功能。
  • ⚡ 一次性刷机方案。Magisk 的安装只需要一次刷机就能完成,不使用第三方 Recovery 系统。这使得第三方 Recovery 不支持某一设备的问题得到解决,且对系统的安全性影响比较小。

对于较新的设备,Magisk 方案还具有风险极小的特点,具体如下:

  • ✅ 无设备支持问题。Magisk 具有对 Android 系统的通用支持,而非对某特定机型的支持,无须寻找适合你的机型的版本,更不用担心找错版本。
  • 🔧 仅对 Boot 分区进行修改。这意味着刷机修改能在数秒内完成,且 Fastboot 模式下,你始终可以在刷入 Boot 镜像前先进行“试用”,确保刷入后系统不会爆掉
  • 🔒 不使用第三方 Recovery。避免覆盖原厂 Recovery,使得遇到严重问题 Fastboot 无法正常刷机的情况下,也能通过 Recovery 刷原厂镜像还原。也使得 Root 对系统安全性的影响降到最低。
  • 🗑️ 一键卸载。系统更新前,可以一键将被修改的 Boot 镜像恢复原厂,以正常接受增量系统更新(注:OnePlus 设备检测到 Magisk 后,会自动下载全量更新包,故不需要卸载 Magisk 即可进行系统更新)。

现在也出现了一些更加强大、更加抗检测的 Root 方案,例如 KernelSU 和 APatch,但是它们的安装相比 Magisk 略微复杂,不推荐新手直接尝试(其中 APatch 的基本操作步骤一致,只是多了设置超级密钥的环节)。

为什么刷机?

如果早些时候(2014 年左右)你接触过 Root 权限的获取,你可能会知道许多“一键 Root”等免刷机的 Root 权限获取软件,有的系统甚至直接允许用户打开 Root 权限。为什么如今获取 Root 如此麻烦?为什么刷机风险这么大,却又说刷机其实是最明智的选择?

原因之一,是如今“一键 Root”等工具已经不好用了。

这类软件往往使用系统漏洞进行破解。事实上,这是一个很大的安全性问题,因为不只是一键 Root 工具可以使用漏洞,其他的任何软件都可以,而一旦恶意软件获取 Root 权限,Android 权限管理对其就形同虚设。如今,随着安全漏洞的修复,此类工具自然也就越来越难用了。

然而,刷机却不利用奇技淫巧,具有理论可行性,因而成为了公认的“通解通法”。

原因之二,也是最重要的原因,就是“

力越大,责任越大
”。我们常说,如果一个设备制造商允许用户刷机并给了教程,那它确实是在支持用户折腾设备;如果设备制造商直接允许在设置中开启 Root 权限,那么它是在给维修点刷业绩。正因如此,我强烈反对使用人工代刷服务来获取 Root 权限。

获取 Root 权限并非一劳永逸。由于 Root 权限意味着设备最高访问权,一旦后续使用 Root 权限时不谨慎,系统就可能被弄坏。此时,必须使用刷机方式才能修复设备,而使用“一键 Root”工具的人,往往不具备刷机的知识和技能,因此设备只能被送去维修,或者报废。使用刷机方法获取 Root 的过程中,机主锻炼了自身的技能,并已经下载到或者备份好了原厂镜像。只有这样,机主才算是真正拿到了“搞机资格证”。

\large{\text{刷机会不会清除数据?}}

刷机本身不清除数据。但是,下面几种情况需要清空数据。

  • 用正常 Fastboot 方式解锁 Bootloader,会一并清除数据。(通常,这只需要做一次)
  • 安装第三方操作系统,通常要自行清空数据,否则系统无法正常工作。
  • 获取 Root 权限后,不当修改系统数据、禁用系统组件,设备出现无法开机、无限重启的问题,重刷原厂镜像也不能解决时。

各种各样的刷机事故也会导致需要清除数据。因此,开始前,请对重要数据做好备份

我用的是不是 OnePlus 设备?

建议自己检查手机后盖或系统信息界面。

一定能成功吗?

一般是的。但是下面是一些有可能发生的问题。

  • 使用版本不对的 Boot 镜像,系统不能正常启动。
  • Magisk 版本对当前 Android 版本不支持,系统不能正常启动。(这种情况发生后可自行撤销更改)
  • 网上找不到版本合适的全量更新包。(购机前可事先考证。请注意,官网上的更新包肯能不是最新的)
  • 此设备登录了非你本人的 HeyTap 账户且开启了查找设备。(这种情况请不要解锁 Bootloader 刷机,否则会导致设备被锁,输入账户的密码才能解锁)

准备工作

如果需要,学好基础知识

[基础预科] ADB、Android 终端、Android 用户权限

[基础预科] Android 分区、启动模式、Fastboot

确认设备如何强制关机

开始刷机操作前,请确认自己知道如何强制关机或重启设备,并且已经尝试成功过。常见方法有这些:

  • 拔掉充电器,然后拆除内置电池,将会关机。(适用于电池可拆卸的设备)
  • 长按电源按钮 10s,强制重启。(适用于较老的设备)
  • 同时按住电源和音量上按钮,保持 10s,待屏幕熄灭或感受到振动后立即放开,即为强制关机。(适用于较新的设备)

确认如何从关机状态进入 Fastboot

请确认自己知道如何从关机状态下进入 Fastboot 模式,并且已经尝试成功过

有些文章会告诉你可以通过 USB 调试从开机状态下重启进入 Fastboot。请不要仅仅满足于这么做,因为若刷机中途失误,你可能必须直接进入 Fastboot 进行修复,而无法开机,再通过 USB 调试进入。

你看,这篇文章的“准备工作”章节就根本没要求你打开 USB 调试。

对于 OnePlus 设备,具体有两种情况。

较老设备:

操作 按键组合 功能
关机长按 电源 + 音量上 Recovery 模式
关机长按 电源 + 音量下 Fastboot 模式
关机长按 电源 + 音量上 + 音量下 无法启动[待考证]

较新设备:

操作 按键组合 功能
关机长按 电源 + 音量上 正常启动
关机长按 电源 + 音量下 I. 若 Bootloader 未解锁,则 Recovery 模式
II. 若 Bootloader 已解锁,则 Fastboot 模式
关机长按 电源 + 音量上 + 音量下 Fastboot 模式

▲ OnePlus 6T 的 Fastboot 界面实拍。请注意 START 的意思是重启进入正常系统。

▲ 效果图。此界面可执行几个简单的操作。按音量键选择要进行的操作,电源键确认。

注:如果你的机型无法退出 Fastboot 模式,请参照强制关机的方法。

确认 USB 接触良好

接触良好的 USB 接口和数据线是刷机的基础。若刷机过程中连接断开,将产生无法开机的后果(重新刷入受损的分区可以恢复)。

建议使用 Type-C 接口的 USB 集线器,刷机过程中不要在集线器上插拔设备。

提示:Fastboot 刷入 Boot 分区,大约需要 2.5s。

安装 ADB 环境

若电脑上没有 ADB,请先安装。方法参照此处

你安装的 ADB 中应该会有 fastboot.exe,否则寄。

安装后,在命令行中执行命令 fastboot --version 验证你的安装。【搜索“Windows 命令行”】

允许 OEM 解锁

进入开发者选项,打开“允许 OEM 解锁”开关,按提示输入设备锁屏密码,以允许后续解锁 Bootloader。【搜索“OnePlus 开启开发者选项”】

此开关一般位于开发者选项第一屏内。

注:该操作并没有解锁 Bootloader,只是允许解锁。

关闭系统自动更新

系统更新过程会移除已安装的 Magisk。为防止这种意外,应当禁止系统自动更新。

确认云账户状态

如果设备已登录云账户且已经开启“查找设备”,请确保自己知道这个云账户的密码,并在解锁 Bootloader 前退出账户。

若没有退出,则再次启动后设备会被锁定,输入云账户密码方可解锁

调整心态

刷机是有风险的操作。然而,对于 OnePlus 设备和 Magisk 方案,风险实际上极小。请放松心态。

刷机时,请选择安排不紧张的时间段,保证至少一小时的连续空闲时间,切忌仓促行事,否则容易犯错。

操作过程中,时刻记住,设备不会被轻易搞坏,即使搞坏了大概率也能自己救。由于采用 Magisk 方案,你可以告诉自己任何更改前,都有机会先“试用”待刷的镜像,观察其能否正常工作(本文章也会让你这么干)。

本文章会告诉你一些常见的故障如何处理。请看下文每个步骤后的“快速故障排除”表。

概览

Magisk 要修改 Boot 镜像,然而,在没有 Root 权限时,并没有办法直接提取 Boot 镜像,也无法将修改的镜像直接写入设备。因此,我们必须先从系统更新全量包中提取镜像,交给 Magisk App 进行“修补”,然后自己刷入。

这只是概览,不要直接对着操作。预计用时假设操作者是新手,但操作顺利。

  • 安装 Magisk App 5分钟
    • 🎇 选择合适的 Magisk 版本 2分钟
    • 🔰 下载并安装 App 3分钟
    • 👀 查看 Ramdisk 是否为“是”,确认是否受支持 0分钟
  • 从全量包提取原厂镜像 16分钟
    • 💻 下载全量包 15分钟
    • 🧵 取出全量包中的 Boot 镜像 1分钟
  • 解锁 Bootloader 6分钟
    • ⭕ 进入 Fastboot 0分钟
    • 🔌 安装驱动,调试 Fastboot 连接 2分钟
    • 🔓 发起解锁命令并确认 1分钟
    • ⭕ 重启设备,待数据清除完毕并开机一次 2分钟
    • 👀 检查解锁状态 1分钟
  • 测试原厂镜像 4分钟
    • ⭕ 进入 Fastboot 0分钟
    • 🪄 传入你提取的原厂镜像进行试用 1分钟
    • ✅ 确认设备工作正常 3分钟
  • 修补镜像 6分钟
    • 🔰 重新安装 Magisk App 2分钟
    • 🩹 利用 Magisk App 修补镜像 3分钟
    • ⏏️ 导出新镜像 1分钟
  • 试用镜像并确认安装 5分钟
    • ⭕ 进入 Fastboot 0分钟
    • 🪄 传入修补后的镜像进行试用 1分钟
    • ✅ 确认设备工作正常 3分钟
    • ⚡ 确认安装 1分钟
    • ⭕ 重启设备 0分钟
  • 开机体验 1分钟
    • ✨ 打开需要 Root 权限的应用,或安装模块,开始使用

共计 43 分钟。

请注意,接下来请按照下面的指示进行操作,不要中断。教程未要求重启时,请勿自行重启。

选择确认安装前,设备的系统并没有受到更改。

若要中断 Magisk 的安装,只须断开 USB 连接,重启设备,然后卸载 Magisk App。

若安装后需要恢复,建议直接使用 Recovery 模式刷入官方全量包。

安装 Magisk App

选择合适的 Magisk 版本

目前主流的 Magisk 版本有原版和 Kitsune Mask。原版 Magisk 的优势在于维护较为积极,稳定版更新较快;Kitsune Mask 的优势在于具有内置的 Root 隐藏功能(隐藏后仍然可以通过代码注入修改应用)以及白名单模式(默认对所有应用隐藏 Root,只有用户指定的应用可以检测到并使用 Root)。

原版 Magisk Kitsune Mask

下载到合适的 APK 文件后,将其传输至手机完成安装。

查看支持情况

打开 Magisk App,观察主页上的参数。

若 Ramdisk 一栏为“是”,则你的设备可以安装 Magisk。提示:目前没有已知的 OnePlus 设备存在不支持问题,且 Ramdisk 在 Android 11 之后被强制要求,故后续也不会出现类似问题。

快速故障排除
Q:Ramdisk 显示“否”,能否继续?
A:不建议继续。这里可能存在误检测情况,但目前已知的误检测只会发生在小米设备上。

从全量包提取原厂镜像

下载全量包

先打开系统设置,查看你设备的系统版本号。

在网络上搜索 <你的设备名称> + “官方固件”,找到对应版本的固件并下载。若没有找到对应版本,尽量下载更新的版本;如果还是没有,请找到与当前版本尽可能接近的版本。

注:目前官方网站上版本不全。可以找一找民间的下载。

快速故障排除
Q:应当去哪里找全量包?
A:没有固定答案,请自行搜索。

刷入全量包

若你的全量包版本比当前系统版本新,可以先利用“系统更新”应用的本地安装功能,将系统变为该版本。【搜索“OnePlus 系统更新本地安装”】

提取 Boot 镜像

将全量包解压,将得到若干个 zip 压缩包。请逐一查看,找出含有 boot.img 文件的压缩包并解压出来。

解锁 Bootloader

连接 Fastboot

将设备关机,启动进入 Fastboot 模式,然后使用数据线连接至电脑(操作顺序请勿颠倒)。

在命令行中执行命令 fastboot devices,查看设备是否连接并识别。

C:\Users\[redacted]>fastboot devices
0123456789ABCDEF        fastboot

\large{\text{上述命令无输出的解决方法}}

  1. 打开 Windows 设备管理器。【搜索“Windows 设备管理器”】
  2. 找到无法识别的 “Android” 设备,右键,选择“更新驱动程序”。
  3. 选择“浏览我的电脑以查找驱动程序”“让我从计算机的可用驱动程序列表中选取”。
  4. 选择 Android Composite ADB Interface。

    如果这一步系统找不到驱动程序,则系统存在 ADB 驱动缺失问题。对于 Windows 11 或更高版本,可以检查 Windows 更新的 高级选项 -> 可选更新 中是否出现了 ADB Interface 驱动,如有请选择安装。其他情况下,请搜索“adb 驱动缺失”,然后像安装 ADB 驱动一样安装 Fastboot 的驱动。
  5. 完成后,将看到设备为可用状态。
  6. 重新执行 fastboot devices,将能够看到设备。

若能够看到设备已连接,则说明连接成功

快速故障排除
Q:始终无法检测到设备。
A:请按上面说明安装驱动。如果仍然遇到问题,请自行搜索解决。

发送解锁命令

请注意,解锁 Bootloader 将清空你的用户数据。请对重要内容做好备份。

解锁后不建议重新锁定。若设备镜像未恢复原厂状态,这会导致无法开机。

连接好 Fastboot 模式下的设备,运行命令 fastboot flashing unlock

此时设备上将弹出警告文字,请仔细阅读全部文字(以你设备上显示的文字为准)。读完后,按音量键,使得 UNLOCK THE BOOTLOADER 被选中,然后按电源键确认。完成后,电脑上将显示 OKAY 字样。

接下来请看 Fastboot 界面上的 DEVICE STATE。请确保显示 unlocked。

快速故障排除
Q:无法解锁,显示 Permission Denied。
A:请确保已经在设置中开启“允许 OEM 解锁”。若不是 OnePlus 手机,解锁会更加麻烦,请参考该品牌的官方说明。
Q:解锁是否会对数据安全造成威胁?
A:一定程度上会(具体表现为设备加密失效,设备丢失后数据更容易被窃取)。请慎重对待。
Q:解锁后开机出现 Orange State 警告。
A:这是正常现象,用于提醒用户设备处于解锁状态。
Q:如何重新锁定?
A:fastboot flashing relock。然而一旦修改过系统,不建议重新锁定。

重启清空数据

完成后,运行命令 fastboot reboot(或在手机上选择操作 START)重启。

接下来,手机会先重启进入 Recovery 模式以清空数据。完成后,手机将再次重启,这一次重启会花费比往常更多的时间。重启后,请再次完成手机的初次使用设置。

然后不妨进入开发者选项(你需要重新启用开发者选项)看一眼。此时,“允许 OEM 解锁”设置的开关应当为开启状态并变为灰色,下方显示字样“引导加载程序已解锁”

据测试,ColorOS 中一些用于调试代码会通过 Bootloader 解锁状态判断当前设备是否是工程机。如果 Bootloader 已解锁,系统的部分行为可能出现变化,包括:

  • 耗电量增加;
  • USB 调试功能将自动授权任意设备对手机进行调试,对于用户,这是很大的安全隐患,因此请在不使用 USB 调试时直接关闭 USB 调试开关。

如果由于某些原因,你需要中断 Magisk 的安装(或需要完全卸载并且以后不再使用 Magisk),建议在确保所有系统镜像都为原厂状态(一般可通过刷入系统更新的本地安装功能刷入当前版本全量包进行完全还原)的情况下重新锁定 Bottloader。需要注意,这一操作也会清空数据

如果你正确完成了 Magisk 的安装,那么你可以利用 Magisk 模块让系统以为 Bootloader 未解锁,稍后将提到这一点。

快速故障排除
Q:开发者选项中的 OEM 解锁开关状态不正常。
A:这可能不是大问题。请以 Fastboot 界面上的 DEVICE STATE 为准。
Q:重启大概需要多久?
A:根据系统预编译的程度,30s 至 5min 不等。如果超过 10min,则为不正常状况,请强制重启。

测试原厂镜像

在开始修改原厂镜像前,我们应当先试试你拿到的“原厂”Boot 镜像能否正常工作,特别是其版本与你系统版本不一致时。

原厂镜像试用启动

将设备关机,启动进入 Fastboot 模式,然后使用数据线连接至电脑(操作顺序请勿颠倒)。

运行命令 fastboot boot <boot 镜像文件>,将会把此镜像传输至手机。手机会暂时地使用这一镜像进行启动,而不会直接将其刷入。你将会看到手机先回到带有“Fastboot Mode”字样的 Logo 界面,然后播放开机动画,进入系统。

C:\Users\[redacted]>fastboot boot "E:\__my_workspace\BrushMachine\Oneplus 9R\[redacted]\boot-20220710.img"
Sending 'boot.img' (98304 KB)                      OKAY [  2.271s]
Booting                                            OKAY [  0.169s]
Finished. Total time: 2.490s

注意,开机动画显示异常、开机时间比正常开机长、开机后的卡顿比正常情况长、开机后一段时间不显示锁屏等,都不是正常现象。如果出现这类情况,说明此镜像不能正常工作。

请注意区分 fastboot bootfastboot flash boot

  • 前者是试用启动,只是暂时地用镜像启动设备,而不会修改设备。
  • 后者是刷入镜像,会将镜像直接写入 Boot 分区。
快速故障排除
Q:错误 Permission Denied。
A:请再次检查 Bootloader 是否已解锁。
Q:错误 Unknown Command。
A:你的设备不支持试用启动。如果你头铁,请跳过这一步继续(可能需要同时参考其他教程)。
Q:错误 is not a boot image。
A:请检查传入的镜像是否正确。

检查是否工作正常

请依次检查这些硬件是否正常工作。

  • 显示与触屏
  • 屏幕指纹(如果有)
  • 重力/加速度传感器
  • 摄像头
  • 麦克风
  • WiFi 连接
  • 移动数据连接
  • 扬声器
  • 耳机接口(如果有)
  • 静音开关(如果有)

请确保通知栏、导航等系统界面功能正常。

如果出现任何异常,都请返回重新下载合适的镜像,不要继续操作。

快速故障排除
Q:试用启动期间是否会保存我产生的数据?
A:会。除 Boot 镜像是临时的以外,试用启动与正常启动没有其他区别。

修补镜像

如果上述测试一切正常,你可以选择重启设备,也可以直接在试用状态下继续。现在,使用 Magisk App 修补你的原厂镜像。

重新安装 Magisk App

由于前面清空过数据,Magisk App 已经无了。请将你下载的 APK 传输到手机重新安装。

修补镜像

将你的原厂镜像传输到手机中。

打开 Magisk App,点击“安装”,选择“选择并修补一个文件”,完成镜像修补。


修补后的镜像存在 /sdcard/Download/ 下。请对其进行重命名或移动,然后传输至电脑。请仍然保管好修补前的镜像,并做好区分以防混淆

快速故障排除
Q:要不要选择修补 vbmeta?
A:正常情况下不需要,且开启这个选项可能导致修补后的系统不能正常启动。

试用镜像并确认安装

接下来,我们测试修补后的镜像是否正常工作。如果正常工作,接下来可以直接用 Magisk App 确认安装,不需要自行刷入。

修补后镜像试用

将设备关机,启动进入 Fastboot 模式,然后使用数据线连接至电脑(操作顺序请勿颠倒)。

运行命令 fastboot boot <boot 修补后镜像文件>,使用修补后镜像启动。此次启动,你的系统将暂时具有 Magisk。

检查是否工作正常

先参照上文章节,检查设备各种功能是否工作正常。

完成后,打开 Magisk App,主页上将检测出 Magisk 版本。

快速故障排除
Q:设备不能正常启动。
A:这说明你的 Magisk 版本与 Android 版本不兼容,请使用更新的版本。
Q:Magisk 检测不到版本。
A:这说明你的设备不支持 Magisk。

确认安装

确认一切无误后,点击 Magisk App 主页上的“安装”,此时将能够选择“直接安装”选项。选择该选项完成安装即可。

完成后重启,就正式完成了安装。

接下来...

接下来请看附录部分,提前了解系统更新的方法以及隐藏 Root 的方法。今后大概率会用到。

刚才提到,ColorOS 中一些用于调试代码会通过 Bootloader 解锁状态判断当前设备是否是工程机,因此解锁 Bootloader 会导致耗电量增加,并可能导致安全隐患。因此,接下来强烈建议开启 Zygisk,然后安装 Zygisk Assistant 模块以向系统框架隐藏 Bootloader 已解锁的事实(只需要安装模块,不需要额外设置)。

要检查隐藏是否成功,请进入开发者选项,确认“允许 OEM 解锁”开关已经恢复到解锁之前的样子(处于打开状态且没有变灰,可以切换)。注意,不建议关闭这个开关

附录:系统更新的方法

系统更新后不需要重新解锁,但需要重新刷入 Magisk。(设备支持 A/B 无缝系统更新的除外,见下文)

对于已安装 Magisk 需要更新系统的设备,可以通过某些手段从官方渠道下载更新包中的分包(大小约为全量包的一半),提取可靠的 boot.img

此处关于提取全量包下载网址的说明以 OnePlus 9R 为例,其他设备情况不尽相同。

前置要求

  • 设备已获取 Root 权限
  • OnePlus 系统更新检测到 Magisk,决定下载全量包(系统更新界面此时会显示文件大小是 3GB 以上)

提示:如果你的系统安装了 Magisk 却没有自动下载全量包(即文件大小小于 3GB),请先选择下载这个更新包,然后安装。更新将会失败,失败后系统将改用全量包。

下载更新

请先确保关闭“夜间自动安装”。然后下载更新,直至下载完成。先不要选择安装。

查询地址并下载分包

使用合适的文件管理器取出 /data/data/com.oppo.ota/databases/ota.db(或 /data/data/com.oplus.ota/databases/ota.db),复制到合适位置,然后使用合适的 SQLite 查看器打开。另拷一份到电脑备用。

找到 system_vendor 包对应的行,然后找到 url 列,复制出单元格的内容。这就是包含 boot.img 的分包的下载地址。

用浏览器访问该地址,下载分包,提取出其中的 boot.img。如果服务器出现 403 Forbidden 错误,请尝试将 User-Agent 设为以下值:

Dalvik/2.1.0 (Linux; U; Android 14; LE2100 Build/UKQ1.230924.001)

在浏览器上可以使用一些 User-Agent 修改插件来修改 User-Agent。

镜像修补

boot.img 传输至手机进行修补,然后重新传输到电脑。


安装更新

在手机上直接安装系统更新,待所有流程完成后,关机。

试用并确认

打开 Fastboot 模式,试用启动修补后的 boot.img。参照上文检查设备工作是否正常。

E:\__my_workspace\BrushMachine\Oneplus 9R\[redacted]>fastboot boot "E:\__my_workspace\BrushMachine\Oneplus 9R\[redacted]\magisk_patched-24308_rqYSN.img"
Sending 'boot.img' (98304 KB)                      OKAY [  2.276s]
Booting                                            OKAY [  0.165s]
Finished. Total time: 2.495s

若无问题,打开 Magisk App 确认安装。

附录:A/B 无缝系统更新

此类系统更新可以在后台静默执行。更新完后,重启即可立即体验新版本。

此类系统更新完成后,请先不要重启。打开 Magisk App,点击“安装”,选择“安装到未使用的槽位(OTA 后)”,然后重启即可使用。

附录:隐藏 Magisk 和 Root

Magisk 和 Root 好用好玩之处固然多,然而有的应用会检测用户的 Magisk 与 Root,若发现会警告用户甚至拒绝加载。为防止它们受到影响,需要对 Magisk 和 Root 进行隐藏。

使用伪装的 Magisk App

尽管检测应用是不正确的做法,但少数应用可能仍然通过检测系统上的 Magisk App 来发现 Magisk(例如“中国工商银行”应用)。这种检测利用的是包名。通过使用 Magisk App 的隐藏功能,可以为 Magisk App 随机生成包名,重新安装。

伪装应用的名称一般不影响效果。

请特别注意,禁止应用读取应用列表并不能阻止 Magisk App 被发现,因为这只是禁止应用直接获取应用列表,该应用仍然可以查询某些特定的其他应用是否存在。

如果隐藏 Magisk App 没有效果,请尝试使用 LSPosed 模块“隐藏应用列表”来完全禁止特定应用查询应用列表。

内置 Magisk 隐藏功能

在 Magisk 设置中,可启用 MagiskHide/排除列表 开关。接下来,打开排除列表,选择你需要对其隐藏 Magisk 的应用。

这项功能在原版 Magisk 中称为“排除列表”,而在 Kitsune Mask 中称为 MagiskHide。二者工作原理不同,使用上的主要区别在于,若应用加入排除列表,LSPosed 等代码注入框架也将无法修改这个应用;而 MagiskHide 没有这个限制。

Kitsune Mask 中的“SuList”功能就是 MagiskHide 白名单模式——只有在 SuList 中的应用可以检测到并调用 Root,其他应用不能感受到 Root 的存在。

第三方隐藏工具

第三方 Magisk 模块 Shamiko 或者 Zygisk Assistant 也可以隐藏 Root。更推荐使用后者,因为前者并不开源,且目前可能已经不再积极维护,容易出现兼容性问题。

  • 如果你使用原版 Magisk,那么这两个模块(选一个,不要一起用)可以代替“排除列表”功能,解决 LSPosed 等框架无法注入排除列表内应用的限制。
  • 如果你使用 Kitsune Mask,使用这两个模块(选一个,不要一起用)可以增强隐藏效果。

将下载的 zip 作为 Magisk 模块安装。随后进入 Magisk 设置,关闭“遵循排除列表”开关。仍然需要在排除列表界面中选择你需要对其隐藏 Magisk 的应用。

除了对应用隐藏 Root 外,这两个模块还会对系统框架隐藏 Root 以及 Bootloader 解锁状态。

附录:救砖常见方法

刷机或使用 Root 不当可能造成系统被破坏无法启动,手机变得如同板砖一样,这种情况被称为“变砖”。

通过安全模式禁用 Magisk 模块

如果安装某 Magisk 模块后导致无法启动或无限重启,可采用此方法。

当系统以安全模式启动时,Magisk 会自动禁用所有模块(包括 MagiskHide)。OnePlus 大部分机型安全模式启动的方法是:

  1. 在关机状态下长按电源键;
  2. 第一屏亮起后,先等待,直到开机动画开始出现,此时立即按住音量减小键不放;
  3. 等待系统启动完成或者出现三次短促的振动,即松开音量键。

成功启动后应有“安全模式”字样。此时请勿解锁进入桌面,否则会导致桌面布局丢失。请直接在锁屏界面下再重启一次。

再次重启后系统应当退出安全模式,但是 Magisk 模块仍然会保持禁用。要恢复正常使用,你可能需要这些操作:

  • 重新启用 MagiskHide 以及没有问题的 Magisk 模块。
  • 重新选择输入法,如果你的偏好输入法并非系统默认。
  • 重新选择默认应用。

其他可能的 Magisk 模块导致无法启动的预防及恢复方法参见这篇文章,但是较为麻烦,在能够使用安全模式的情况下不推荐。

使用 TWRP 恢复(一般不建议)

TWRP(Teamwin Recovery Project)是一个适用于解锁后设备的第三方恢复模式程序,支持在系统不能正常使用的情况下管理文件以及备份一些重要分区。你可以利用 TWRP 来恢复各种导致系统无法正常启动的问题,例如从 /data/adb/modules 中删除导致问题的模块。但是,鉴于其功能强大,请确保你知道自己在做什么。错误使用可能进一步破坏系统。

TWRP 一般需要对每个机型进行适配。要找到你的 TWRP,请搜索 <机型> <系统口味> twrp,例如 oneplus 9r coloros twrp 或者 oneplus 8t oxygenos twrp。由于 Recovery 镜像与 Boot 镜像的启动方式相同,你可以在 fastboot 下使用 fastboot boot <镜像文件> 来试用启动 TWRP(注意第一次使用可能需要几分钟的启动时间)。如果机型适配正确,应当能进入 Recovery 主屏幕,并且输入密码后能解密用户数据。

一般而言,建议每次需要 TWRP 时试用启动,不建议将 TWRP 直接刷入 recovery 分区,因为这样可能导致系统更新不能正常进行。如果你确实需要将其刷入,请确保你已经通过某种方式备份好了原厂的 recovery.img 并试用启动成功。一种可行的方式是通过 TWRP 备份,然后直接将备份文件的 .emmc.win 后缀改为 .img

使用原厂 Recovery

使用原厂 Recovery 的功能,可能可以重新安装原厂系统(注意不要使用“格式化数据分区”),从而修复因修改系统导致的损坏。这样做也会移除 Magisk。


undefined