oppo reno3 的 root 步骤
一个月前 oppo reno3 终于开放深度测试了,今天终于申请下来,火速 root,顺带还学习了一波安卓启动保护的知识。关键词:oppo reno3 5g,PDCM00,root,twrp,recovery。
一、手机参数和准备
- 型号:oppo reno3(等于 oppo reno3 5g)PDCM00
- 操作时间:2020年08月23日
- ColorOS 版本:V7
- 安卓版本:10
- 刷机包版本:正式版-A.18
- root 方式:twrp。
下载深度测试 apk,申请,等待 30 天后申请通过。
建议准备:到官网下载最新的 ozip 回来,刷入手机,保证ozip 和手机里的操作系统是一致的,防止刷 image 不匹配。
二、解锁 bootloader(会丢失所有数据)
申请通过后,点击“开始深度测试”会进入bootloader,也可以 adb reboot bootloader 进入。 他家的 bootloader 长的巨丑无比,屏幕上就两行非常非常小的字,本来想拍照展示的,但字实在太小了无法拍摄,这两行小字是:
1 | Oppo Verify pass |
输入 fastboot flashing unlock
1 | ➜ fastboot flashing unlock |
之后根据屏幕提示,进行按键操作,然后会重启并且丢失所有数据,证明 bootloader 已解开。
三、刷入 twrp 错误的实践过程(请全文先看完,不然会变砖,还要救回来)
使用wzsx150大神提供的 recovery-TWRP-3.4.1B-0313-OPPO_RENO3-CN-wzsx150.img
,下载刷入。
1 | fastboot flash recovery recovery-TWRP-3.4.1B-0313-OPPO_RENO3-CN-wzsx150.img |
错误示范:fastboot reboot recovery
,直接“高级——安装 root”。会导致无法再次进入 recovery,导致无法进入 system,只能进入 bootloader。
然后就变成砖了,可以使用下面的【选择二】救回来。
四、刷入 twrp 正确的实践过程
1 | fastboot flash recovery recovery-TWRP-3.4.1B-0313-OPPO_RENO3-CN-wzsx150.img |
以下两步二选一:
选择一:
fastboot reboot recovery 后,一定一定一定要在高级里,关闭 AVB,否则无法再次进入操作系统,无法再次进入 recovey,只能用【选择二】去修复。
选择二:
假设你忘了关闭 AVB 了,下面是唯一的救砖办法,关掉 check 就可以开机或进入 recovery 了。
先到官网 https://www.coloros.com/rom/firmware?id=1769171177539911788 下载完整的、对应版本的 ozip 回来,再用工具转化为 zip(网上很多工具),从里面把 vbmeta.img 提取出来,之后执行:
1 | fastboot --disable-verity --disable-verification flash vbmeta vbmeta.img |
执行时一定要带上 --disable-verity --disable-verification
。
之后,就可以用 twrp 里“高级——安装 root” 的功能进行安装了(它会刷入 SuperSU 和 Magisk,是比较新的版本),据作者说 3.4.1b 的 twrp 不要刷其他 Magisk,可能会抽风,所以就用它自带的了。
wzsx150 也《救假砖》里提到过该方法:
fastboot模式下,使用adb-fastboot工具,刷入vbmeta.img(可以是官方的原版文件,也可以是修改版的)注:要求adb-fastboot工具必须支持这些参数,使用我发布的一键刷入工具里的fastboot工具即可。
五、效果
1 | adb shell |
六、关于变砖的原因猜测
我自己实践的路线是,先进行了错误示范,然后用 【选择二】把砖救回来了,关于这个现象,网上有人提到过,例如:https://www.juyifx.cn/article/354879296.html
PS:首次刷入recovery,进入twrp-recovery后,需先关闭AVB校验,再签名boot或者刷入ROOT,不会可能导致手机系统破坏,不能开机了。 重要说明必须执行关闭avb2.0校验否则刷完root或者rec开机会变假砖提示系统损坏[汗]
毕竟自己是做安卓的,这个知识点还是可以稍微学习一下的。 首先,我们没有主动修改 vbmeta.img,但问题解决了,说明是参数起了作用,于是去追 fastboot 的源码
1 | fastboot --help |
https://android.googlesource.com/platform/system/core/+/master/fastboot/fastboot.cpp#976
1 | // There's a 32-bit big endian flags field at offset 120 where |
可以看到刷入过程中会写一个 flag 到手机里,各自影响 1bit。 这两个 bit 的作用在下方代码: https://android.googlesource.com/platform/external/avb/+/refs/heads/master/libavb/avb_vbmeta_image.h
1 | /* Flags for the vbmeta image. |
说实话,这段注释我读的云里雾里,反正就是跳过两种校验,它们之间的关系我不敢妄言,有点像包含关系,贴三个链接自行理解吧:
- https://android.googlesource.com/platform/external/avb/+/refs/heads/master/README.md
- https://source.android.com/security/verifiedboot/dm-verity
- https://source.android.com/security/verifiedboot/avb
反正就是,vbmeta 会验证其他分区的可信程度;我们修改了 recovery,校验失败,就无法进入 recovery;我们用 twrp 安装了 magisk 和 supersu,就无法进入 system。后来我们关掉了校验,一切就正常了。
关掉校验有两种方式,对应上面的【选择 1】和【选择 2】,一个是用 twrp patch 掉 boot,一个是修改 vbmeta。