一加手机ROOT全流程&记一次误操作后救砖经历


先说ROOT,再说这次非常愚蠢的操作。。

本文不为ROOT失败导致的任何异常结果负责

一、ROOT(Magisk为例)

1. 准备工作

  • 手机打开「开发者模式」:「设置」>「关于本机」>「版本信息」> 连续点击,直到进入开发者模式
  • 手机开启「OEM解锁」和「USB调试」:「设置」>「系统与更新」>「开发者选项」> 找到这两项并打开
  • 确保电脑安装了 ADB 和 Fastboot 驱动,测试方法:
    • 手机连接电脑,文件传输模式
    • 打开命令行输入 adb devices,如果能看到一串代码和 device,说明 ADB 驱动正常
    • 输入 adb reboot bootloader 进入 Fastboot 模式,输入 fastboot devices,如果能看到代码和 fastboot,说明驱动装好了

如果没装驱动,自行去网上装一下吧~

2. 解锁Bootloader(会清空所有数据!)

  • 用USB线连接手机和电脑
  • 电脑下载adb-fastboot,解压后双击 打开CMD命令行.bat,输入 adb reboot bootloader
  • 等待手机重启、进入bootloader模式
  • 手机进入bootloader模式后,继续在cmd输入 fastboot flashing unlock
  • 手机显示一串英文代码,此时长按「音量+键」以确定解锁bootloader;解锁成功后cmd会显示 (bootloader)Start unlock flow

英文代码仅持续 5-6 秒,如果消失了请重新执行 解锁命令

  • 继续在cmd输入 fastboot reboot,开机有黄色警告即成功;
    也可在「设置」>「系统与更新」>「开发者选项」>「OEM解锁」看是否变灰了

3. 提取 init_boot.img

  • 下载payload-dumper-go并解压
  • 下载大侠阿木提供的匹配机型和版本的ROM包,解压并找到 payload.bin 文件
  • 复制 payload.bin 文件到 payload-dumper-go 文件夹
  • 双击 打开CMD命令行.bat,按需提取.img文件

boot.img:存放系统内核
init_boot.img:存放启动脚本

这里说一下提取哪个:
执行 payload-dumper-go -l payload.bin,然后分情况:

  • 情况 A(新机型,Android 13+):如果在 payload 列表里看到了 init_boot.img,提取并修补 init_boot.img(不动 boot.img)
  • 情况 B(老机型):如果在 payload 列表里找不到 init_boot.img,提取并修补 boot.img

4. Magisk修补 init_boot.img

  • 手机上下载 Magisk
  • 打开Magisk,点击首页Magisk卡片右侧的「安装」,点击「选择并修补一个文件」,找到刚才复制到「Download」下的 init_boot.img,点击「开始」
  • 看到 All done! 就可以了

5. 刷入修补后的文件

  • 打开手机「Download」目录,把 magisk-xxxxxx.img 复制到电脑「adb-fastboot」 目录
  • 双击 打开CMD命令行.bat,输入 adb reboot bootloader
  • 进入bootloader模式后,cmd中输入 fastboot flash boot magisk-xxxxxx.img,其中 magisk-xxxxxx.img 要注意是自己上面修补的那个
  • 看到 “Finished” “OKAY” 就可以了,输入 fastboot reboot 重启

6. 验证Magisk刷入成功

  • 打开Magisk,看到Magisk卡片中「当前」能显示版本即可

二、提示

  • 除了用adb命令,也可以关机后长按「关机键」+「音量-键」进入bootloader模式
  • 可以用大侠阿木的工具箱: 一加全能工具箱,但本人没用
  • 只要电脑连接手机,手机选择文件传输模式
  • 一定要注意ROM版本对应,因为从对应 payload.bin 中提取的.img文件
  • 本机版本为 一加 Ace5 竞速版,型号PLF110

三、救砖

严格来说也不是砖,而是处在“Orange State”并陷入无限重启的循环中

1. 我做错了什么

  • 由于之前刷过一次Magisk,忘记关手机的自动更新了,它更了一个版本,原有的Magisk失效了;
  • 因此我想重新刷一次,结果忘记要刷的是 init_boot.img 了,刷成了 boot.img
  • 然后发现失败了,这个时候求助Qwen来着(我再也不相信Qwen了),它认为 AVB 2.0 的 vbmeta 验证阻止了 Magisk 加载
  • 于是Qwen叫我下载github开源的 vbmeta.img,但给了个空链接,后面又让我自己写了一个,反正一直叫我刷进去,刷进去就成这样了

确实这种事情不能让大模型搞,明知有幻觉,居然不小心相信他了。

2. 怎么解决

  • 由于不想丢数据,所以不想重刷;
  • 问题出在启动上,因此要把跟“启动”有关的所有原厂零件,全部一次性换回去;
  • 还好有 payload.bin,执行:
payload-dumper-go -p vbmeta,vbmeta_system,vbmeta_vendor,boot,vendor_boot,init_boot payload.bin
  • 这些6个文件被提取到了extracted文件夹,然后依次刷回去(由于无限重启,进bootloader只能通过长按「关机键」+「音量-键」进入,而且最好趁没显示Orange State等告警信息时的间隙去按),执行:
fastboot flash boot_a boot.img
fastboot flash init_boot_a init_boot.img
fastboot flash vendor_boot_a vendor_boot.img
fastboot flash vbmeta_a vbmeta.img
fastboot flash vbmeta_system_a vbmeta_system.img
fastboot flash vbmeta_vendor_a vbmeta_vendor.img
  • 然后 fastboot reboot ,看看怎么样,如果还不行,可以尝试强制禁用官方校验,执行:
fastboot flash boot_a boot.img
fastboot flash init_boot_a init_boot.img
fastboot flash vendor_boot_a vendor_boot.img
fastboot flash vbmeta_a vbmeta.img --disable-verity --disable-verification
fastboot flash vbmeta_system_a vbmeta_system.img --disable-verity --disable-verification
fastboot flash vbmeta_vendor_a vbmeta_vendor.img --disable-verity --disable-verification
  • 然后 fastboot reboot ,应该没问题了

这个问题换slot没用;简单把误刷入的vbmeta.img给erase掉也没用;
如果遇到这类启动的问题,可以尝试一下本文重刷启动模块的经验


文章作者: Fetyloi
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Fetyloi !
  目录