无论从我平时接触到的 Android 用户还是从此前与 root 相关的讨论来看,很多人在要不要 root 这件事情上反复纠结的最大原因在于 OTA。

对移动平台操作系统而言,OTA 更新也许是最为常见也最为方便的系统升级方式,以 Google 自家的 Pixel 设备为例,一次没有太多功能更新的月度安全补丁推送也许只需要下载几十兆大小的更新包,与之形成对比的则是以 GB 为单位计算的全量工厂镜像。

因此无论从便利性还是从带宽、流量角度出发,为 OTA 而放弃 root 的行为都值得理解了:大部分 root 工具都会直接对系统分区内的文件进行修改,经过修改的系统文件显然是过不了 OTA 流程中「系统完整性验证」这一关的

而我们在 上一篇 中已经提到,得益于 systemless 特性,能够无痛 OTA 更新也是 Magisk 的一大优点。本文就将介绍如何在安装了 Magisk 的前提下进行无痛 OTA 系统更新。

确认 A/B 系统分区支持状态

A/B 系统分区是 Google 在 Android 7.0 时代引入的新机制,顾名思义,采用这个机制的设备拥有 A、B 两套系统分区,用户数据则能够在这两套系统分区之间共用。

这种分区机制带来的最大好处,在于让无缝系统更新(seemless updates)成为了可能——举个例子,当我们在 A 系统中进行 OTA 更新时,接受更新的很有可能是当前并未启用的 B 系统。这样一来,OTA 更新的过程可以在不干扰当前使用的前提下顺利完成,手机重启后,系统分区从 A 切换到 B,用户自然也就用上了新系统。

A/B 分区的系统更新流程

此外,采用 A/B 系统分区的设备在遭遇 OTA 事故时,还能在系统启动失败后自动切换回更新前能够正常工作的系统分区。得益于这些便利,Android 7.0 正式推出后的主流 Android 设备很多都已经支持了 A/B 系统分区方式。

A/B 分区同样也是安装了 Magisk 状态下进行无痛 OTA 系统更新的前提条件,那么该如何确定自己的设备支持这种分区方式呢?

首先,如果你已经在电脑端正确配置好了 ADB 环境,不妨在手机端打开 USB 调试后将手机连上电脑,然后在电脑端按照下列步骤检查设备是否采用了支持无缝系统更新的 A/B 分区:

  1. 运行 CMD 命令行工具或终端
  2. 执行 adb shell 指令,此处应返回 设备代号:/$
  3. 随后执行 getprop ro.build.ab_update 指令

返回结果为 true 则表示你的设备采用了 A/B 系统分区。

使用 CMD 鉴定 A/B 分区兼容性

当然,你也可以通过 Treble Check 这款小应用来检测 Project Treble 和 A/B 系统分区的兼容性,这款工具无需 root,下载安装后直接运行即可看到结果。

确认设备支持 A/B 系统分区后,我们就可以接着进行下一步了。


做好准备工作

由于 A/B 分区在系统更新过程中几乎不会对用户造成打扰,一些 OEM 厂商也顺势将 OTA 更新做成了一个可以在后台自动完成的任务。

但问题在于,伴随着自动完成 OTA 更新后系统分区的切换,我们在更新前借助 Magisk 获取的 root 权限和已经安装过的 Magisk 模块都会一一失效。鉴于本文要讨论的 OTA 更新特指既能通过 OEM 官方通道进行 OTA 更新,又能在 OTA 更新后保留 Magisk 的 root 权限和已安装模块。如果你想在安装了 Magisk 后的使用过程中均采用本文介绍的 OTA 方式,就必须做好一些事前准备,

首先,找到并关闭自动系统更新选项。这个选项位于开发者选项的第一部分设置当中,因此还算好找。

关闭自动更新并还原原厂件镜像

然后,在厂商发布系统更新或确认能检测到 OTA 更新后,点击进入 Magisk Manager 应用,找到位于主界面的「卸载 Magisk」选项,然后点击「还原原厂镜像」。

注意,如果你在此时遇到了 stock backup does not exist 这样的提示,则表明 Magisk 未能在安装时成功创建 boot 分区的备份(自然也就无法还原原厂镜像),此时建议使用我们在 第一篇 文章中提到的 boot 镜像修补法来重新安装 Magisk,这样就能保证原厂镜像得到正确备份了。

另外,和第一步操作不同的是,自动系统更新选项我们建议保持长期关闭,还原原厂镜像操作在每次进行 OTA 更新操作前都要执行

科学的 OTA 更新流程

接下来我们要做的就是执行正常的 OTA 更新流程了。

在执行完毕「还原原厂镜像」操作后,大部分机型在系统设置中应该都能成功检测并安装来自 OEM 厂商的 OTA 更新了。

正如上文所言,OTA 更新流程结束后,系统应该会提示我们重启,重启后系统就自动切换到了更新过的另一个系统分区上。只是此时另一个系统分区并没有保留 Magisk 的安装和 root 状态,相关模块也无从启用。

因此在安装完 OTA 更新后,请先不要重启

无视系统的重启提示,直接打开 Magisk Manager 应用,找到「安装」选项,然后在点击后的弹出菜单中选择「安装到未使用的槽位(Install to Inactive Slot)」。

跳过重启并安装 Magisk 到另一分区

随后,Magisk 就会在已经顺利进行过 OTA 更新的另一系统分区中进行安装。安装完成后直接点击安装界面右下角的「重启」按钮,即可重启到既保留了 Magisk,又应用了 OTA 更新的另一系统分区了。

关联阅读:

> 下载少数派 客户端、关注 少数派公众号 ,发现更多 Android 玩机技巧 😃

> 特惠、好用的硬件产品,尽在 少数派sspai官方店铺 🛒