刷机
刷机
刷机圈一直是一个排外的圈子。当 Android 的封闭碰上了刷机圈的封闭……
刷机圈一直岌岌可危。君不见 LSPosed Archived...
Android 的封闭社区内充满了悖论:如果你需要
dd ... of=/sdcard/boot.img
,你需要 root;因为需要 root 所以需要boot.img
。。
刷机工具
- adb/fastboot 套,这个不多说,100% 必备。最方便的安装是 scoop:
scoop install adb
。 - 用来从
payload.bin
提取分区的。(按照推荐顺序排序)- 5ec1cff/payload-dumper:群友激情制作,可以从 URL 里提取部分分区,大幅减少了下载需求。
- FastbootEnhance,提供一个 GUI 界面,解
payload.bin
很好用。但是对于刷入则不太行了,至少我 Oneplus 不行,启到 fastbootd 也卡在半中间。 payload-dumper-go:解,被 FastbootEnhance 上位替代了。payload-dumper 要解就只能解全部,太傻了,不过至少能用。payload.bin
的另一个 CLI 工具
- 小米/红米:
- MIUI 刷机工具:小米官方提供的刷机工具。能用就是好的,至少小米一般不用太担心变砖,只要能进 fastboot 就能活。
- 千万不要在右下角选择 lock(我选择直接删线刷包里的 *lock.sh/bat)
- 最好把 Configuration 中的 CheckPoint 删了。
- 想想一加甚至没有刷全量包的工具。。开始羡慕起小米来了。
MIUI 解锁工具时代结束了,现在的澎湃 OS 解锁要答题(
- MIUI 刷机工具:小米官方提供的刷机工具。能用就是好的,至少小米一般不用太担心变砖,只要能进 fastboot 就能活。
Redmi Note 10 pro
题外话:
高考结束后买的手机,当时还是一个普通人,自然不知道刷机解 bl root 这些东西,等我想解的时候已经太迟了,数据已经太多了。下一部手机必 root。然而等到了一个能够使我无视数据的契机。
忘了备份应用时间了,妈的;后来发现这东西没法备份。
20230614 记一次失败的刷机(redmi note 10 pro, sweet)。
- 解 BL 锁,等了 7days。
- 刷入 twrp 失败。
没有第三方 recovery 就无法卡刷,而一些类原生例如 Havoc OS | Evolution OS 只提供了卡刷包,无法线刷。寄。(据说有 python 脚本能把卡刷包转成线刷包,没试过,有生之年)
退而求其次,想刷 EU 版 MIUI,失败 again,寄。
再退,用国行 MIUI (chopin),不使用 twrp 刷入 magisk。(kernelSU 不支持:非 GKI 设备内核)
- 安装 magisk。
- 从原生线刷包把
boot.img
拷到手机上。 - 在 magisk 中,选择安装 magisk(修补一个文件),选择
boot.img
修补。 - 再将修补后的
magiskxxx.img
拷回电脑,fastboot flash boot magiskxxx.img && fastboot reboot
刷新 boot。 - 好了,之后就是另一个板块了。
mipad 5
20230715,尝试刷我的小米平板 5(nabu)。
折腾了一下 twrp,在 Github 下载了一个不明来源的 twrp 刷入,又寄了,表现为闪屏无法启动。算了,这年头 VAB 分区的我再也不想再折腾 twrp 了。好在有了第一次的刷机经验,没有手忙脚乱,能进 fastboot 就能救。
退而求其次,刷 EU。在这里找了个欧版 ROM,这次倒是没出什么岔子,10min 后顺利刷入。那接下来的 root & magisk 也是水到渠成了,这里按下不表。
但是等我开始搞机,渐渐发现事情没我想象得那么简单。
- EU 的 Google 全家桶也是无法卸载(即使有些边角如 YT Music 能卸载,Play store 也会再悄悄给你下回来),近 20 个 Google 密密麻麻排着嘲笑我,数量甚至比国行还多;
- 后台运行着好多叫不出名字的奇怪服务,有些我 Google 半天也搜不到是什么(例如
com.qti.qcc
); - 也间接导致了之后的系统崩溃。(我承认主要责任在我)
然后使用 miflash 刷回国行;刷入失败。一重启就自动进 fastboot。由于此 ROM 下载地址没有 MD5,于是换了一个重下,校验 MD5,没有任何问题。刷机工具 Configuration 设置 EraseAll,再刷,还是不行。然后刷欧版,就行了。。由于每次刷机都需要 10min 以上,我连着刷了 5 6 次,等待的时间确实紧张难熬。
所以刷欧版是一件非常冒险的事:在只使用初级工具前提下[1],这一步没有后悔药,没法再刷回其他系统[2]。
Oneplus Ace Racing edition
这里是 一加 Ace 竞速版 的 root 过程。
一加的教程基本都是 daxiaamu 的一键工具箱,让人 root 了以后却不知其所以然。这样是不好的。再说了,这个工具箱也无法刷全量包。
找了半天没找到这个机型如何刷 Oxygen OS,也没有提供线刷 ROM daxiaamu 自称官方,怕出问题,还是将就用着并不喜欢的 ColorOS 吧。
解 BL 的过程中,无法通过音量键选择 unlock。。甚至也无法长按开机键重启。用 fastboot reboot
试了一下,第二次还是一样。具体地:
- 在 fastboot 界面,电脑执行
fastboot flashing unlock
,手机出现文字且立刻 timeout,无法选择,无法解锁。 ... failed to record unlock state
- 长按 音量+ 键输入解锁指令,可成功解锁。
- 或者长按 音量- 键输入解锁指令,此时不会弹出 timeout,再按 音量+ 即可。
莫名其妙。我测过音量键,并无问题。总之最终是解锁了。root 的折腾过程中也遇到了很多问题:
下载 rom 包,解出一个 payload.bin
;目的:从中提取出 boot.img
。然后有:
一些血泪史
- 用不知哪下的
payload_dumper.exe
(一眼 python 打包),发现不能自定义输入输出路径。勉为其难地把 rom 拷进同目录,运行闪退。 - 去找 payload_dumper 的源码,搞环境由于前几天迁移 python 导致 pipx 及其安装的软件路径坏了,又搞了好久。运行,报错
_lzma.LZMAError: Input format not supported by decoder
... - 我甚至还重新解压到 RAMDisk 然后 checksum 了一下,不出所料,并没有什么问题。
- 在 issue 中找到另一个 go 版本,亲测可用,速度还快。
- 最后发现 FastbootEnhance 可以选择某些 img 解包。。
- 后来又发现一个 fork 版本可以仅下载某分区。
得到了 boot.img
,剩下的就是用 magisk 修补,刷入了。跟用小米时一样,不再赘述。
关于 KernelSU
在浪费了两个小时后,我想说:如果你不是开发者,别碰 KernelSU。