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