记一次 fastboot 拯救手机过程

在 2021年3月3日 10点01分 发布于 Android 分类

升级氢OS beta3后 这充电声音搞得我整个人听力都不好了 于是在某个寂静的夜里 刷到某酷友提供的充电声文件路径 找过去把 charging.ogg 删了 结果就是 重启后无限系统界面FC

Android 11到目前还没有可用的TWRP,猜到一些酷友到这里可能会建议9008,咳咳,在此记录一下不丢数据的拯救方法

法一

原理就是切换系统分区 回滚到 beta2 分区,先做到能开机一切都好说。

# 查看当前启动分区 输出的结果是当前 beta3 所在的分区
fastboot getvar current-slot

# 切换到另一个(beta2)分区 如果上面查到a下面就搞成b
fastboot set_active <a或者b>

知识链接(划掉): fastboot getvar all 可以查看所有变量

法二

法一尝试无果后 想到之前在XDA上看到过一种fastboot刷机包 原理就是通过fastboot线刷OTA解包后的所有分区 这里是system_ext出了问题 所以重刷 system 分区就好了。

# 如果已经尝试过法一 记得先切回 beta3 的分区
fastboot set_active <a或者b>

# 搞个文件夹方便后续整理
mkdir rescue
cd rescue
# 某hub 上拉取 android OTA 解包工具
git clone https://github.com/vm03/payload_dumper
# 解压下载好的 beta3 OTA包
7z x OnePlus7ProHydrogen_13.X.57_OTA_0570_all_2102261638_d79f16.zip
# 把 payload.bin 放到 payload_dumper 目录里方便操作
cd payload_dumper
# 安装 解包工具 依赖库
pip install -r requirements.txt
# 解包
python payload_dumper.py payload.bin
# 进入输出文件目录
cd output
# 刷写 system 分区,注意替换,下面是 system_a 还是 system_b 取决于 beta3 在a还是b
sudo fastboot flash system_a system.img
# 出现 Invalid sparse file format at header magic 报错为正常现象