Pixel8保留Magisk进行OTA升级

每月月初谷歌都会推送系统更新(OTA),更新的时候,会检测验证system分区是否完整,如果被修改,则会导致OTA失败,手机可能变“砖”。刷Magisk时修改了boot.img这个system分区的文件,所以刷Magisk后不能直接安装OTA更新。

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

A/B 系统分区是 Google 在 Android 7.0 时代引入的新机制,顾名思义,采用这个机制的设备拥有 A、B 两套系统分区,用户数据则能够在这两套系统分区之间共用。A/B 分区同样也是安装了 Magisk 状态下进行无痛 OTA 系统更新的前提条件。

验证支持系统更新的 A/B 分区

执行adb shell命令:

1
2
$ adb shell
$ getprop ro.build.ab_update

执行 getprop ro.build.ab_update 返回结果为 true 则表示你的设备采用了 A/B 系统分区。

准备工作

关闭 开发者设置中的系统自动更新

开发者设置 -> 系统自动更新 -> 关闭

卸载Magisk

  1. 打开应用 magisk
  2. 点击卸载Magisk
  3. 点击弹出窗口的还原原厂映象

提示*stock backup does not exist或者原厂镜像备份不存在*

解决原厂镜像不存在的问题

如果还原成功则不需要进行这一步操作

  1. 打开应用设置->关于手机->版本号

    我这里的版本号UQ1A.240105.004

  2. 下载对应的镜像,找到对应手机型号对应的版本号

    下载地址

    我这里的手机型号Pixel8,所有我下载的镜像应该是shiba-uq1a.240105.004

  3. 解压boot.img

    在下载好的压缩包找到 image- 开头的压缩包 再从这个image-开头的压缩包里面提取boot.img

  4. 制作准备还原的boot.img

    在电脑上push boot.img到手机上

    1
    $ adb push boot.img /sdcard/boot.img

    进入adb shell

    1
    2
    $ adb shell
    $ su

    依次执行以下命令

    1
    2
    3
    4
    5
    6
    # SHA1=$(cat $(magisk --path)/.magisk/config | grep SHA1 | cut -d '=' -f 2)
    # gzip -9f /sdcard/boot.img
    # mkdir /data/magisk_backup_${SHA1}
    # mv /sdcard/boot.img.gz /data/magisk_backup_${SHA1}/boot.img.gz
    # chmod -R 755 /data/magisk_backup_${SHA1}
    # chown -R root.root /data/magisk_backup_${SHA1}

    上面的操作都成功了就可以了。

升级系统

再次尝试升级系统,如果这个时候还是报升级失败的话,只能重启系统后再升级,但是如果可以直接升级了就直接升级,升级完成之后千万别重启

升级系统后不重启安装Magisk

打开应用Magisk->安装Magisk->安装到未使用的槽位(OTA后),完成后重启。

卸载Magisk还是不能升级系统

以下步骤其实就是重新刷入Magisk,此步骤需要在打开 USB 调试后将手机与电脑相连。

  1. 重启手机

  2. 进入系统后打开应用Magisk确认一下Magisk是否安装,如果未安装可以进行以下步骤。

    img

    Ramdisk的结果决定了您的设备启动分区中是否有ramdisk。

    如果您的设备启动 ramdisk,请获取boot.img的副本(或init_boot.img ,如果存在)。

    如果您的设备没有启动 ramdisk,请获取recovery.img的副本。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    开始
    |
    v
    设备是否有启动 ramdisk?
    |
    +------> 获取 boot.img (或 init_boot.img)
    |
    +------> 获取 recovery.img
    |
    v
    结束

    相对应的,请使用:

    fastboot flash boot /path/to/magisk_patched_xxx.img

    fastboot flash init_boot /path/to/magisk_patched_xxx.img

    fastboot flash recovery /path/to/magisk_patched_xxx.img

    使用哪个img制作的patched需要刷入到对应分区。

  3. 直接点击升级系统,等待升级完成,重启系统。

  4. 下载新系统对应的镜像

    打开应用设置->关于手机->版本号

    下载对应的镜像,找到对应手机型号对应的版本号

    下载地址

  5. 解压出boot.img

  6. 上传boot.img到手机

    1
    $ adb push boot.img /sdcard/Download/boot.img
  7. 打开Magisk Manager 安装程序

  8. 制作Magisk镜像并安装

    依次点击安装-> 选择并修补一个文件-> 刚刚push到手机上的boot.img 等待执行完成会告诉你文件名

  9. pull制作好的Magisk镜像到电脑上

    1
    $ adb pull /sdcard/Download/magisk_pathced_xxx.img ./
  10. 在电脑上刷入magisk

    1
    2
    3
    $ adb reboot bootloader 
    $ fastboot flash boot /xx/xx/magisk_pathced_xxx.img
    $ fastboot reboot

执行fastboot一直wait device的解决办法

下载安装usb驱动即可。

  1. 下载驱动latest_usb_driver_windows
  2. 解压到文件
  3. 打开 设备管理器 -> 操作 -> 添加驱动程序
  4. 选择刚刚解压的usb驱动文件夹确认安装即可。
  5. 再次执行fastboot flash boot命令。