先说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掉也没用;
如果遇到这类启动的问题,可以尝试一下本文重刷启动模块的经验