Android 为智能手机的普及立下了汗马功劳,可是开源所导致的「碎片化」问题,一直是 Google 心中难以掩饰的痛。为了改变这一现状,Google 进行了许多尝试,例如在 Android 7.0 引入的「A/B(无缝)系统更新」,Android 8.0 时推出的「Project Treble」,都是为了铺平无障碍更新系统的道路,减轻更新失败导致设备故障的风险,以便厂商可以更轻松地推送系统更新。
而在 Android 11 版本,Google 使用了名为「virtual A/B」的新分区,并将其率先使用在 Google Pixel 5 上。「virtual A/B」更新系统的方法与「A/B」类似,核心功能也相同。在系统进行 OTA 更新时,如果更新失败会自动回滚到上一个系统,成功开机进入之后才会将新数据写入到系统中。且系统更新可在待机状态下完成,无需重启等待新数据写入,可谓是极大地改善了更新系统时的用户体验。只是「A/B」需要准备两个相同的分区,会占用更多的存储空间,而「virtual A/B」删除了「cache」和「recovery」分区,「system」分区只保留一个,以解决上述空间占用问题。1
小米 11 也是使用的「virtual A/B」,可这对我来说并不是什么好消息。因为「virtual A/B」删除了「recovery」分区,没有了「recovery」分区就不能刷入第三方「recovery」。因此在 TWRP 官方解决为这类新分区方式刷入第三方 recovery 之前,我只能使用其他方法来为小米 11 刷机了。
不过我这也算不上啥刷机,只是安装一个 Magisk 而已。这篇文章也会等到能刷上 TWRP 的时候,再继续更新。
刷机有风险,搞机需谨慎,请准备好备用机,做好变砖的心理准备。在确定当地有小米之家可进行售后维修后,再进行刷机操作。
以下是完整的刷机记录。
解锁
到手的手机还是出厂系统,先把系统更新到最新版本。我使用的是 MIUI 12.0.22.0 稳定版本,体验上还不赖。当然不想更新也没啥问题。
1. 启用开发者模式
刚到手的手机,先登录自己的小米账号,然后在设置中打开「开发者模式」。
MIUI 12 系统开启「开发者模式」的步骤是:设置 → 我的设备 → 全部参数,点按「MIUI 版本」七次,会有提示弹出「开发者模式已开启」。
设置「开发者模式」的入口在:设置 → 更多设置 → 开发者选项。勾选「OEM 解锁」、「USB 调试」。在「设备解锁状态」中,绑定账号与设备。
2. 下载解锁工具
前往「解锁小米手机」页面下载解锁工具。
3. 更新驱动
为了避免解锁或是刷机时出现各种不可预测的危险,先更新好驱动。把下载好的压缩包解压,点击miflash_unlock.exe
打开解锁工具。
点击右上角设置。
在将手机连接到电脑前,一定要先在「开发者模式」里打开「USB 调试」,弹出类似「允许此电脑使用USB 调试」的字样,然后再点击「驱动检测」更新驱动。
4. 解锁
然后就可以解锁了。注意解锁会清除所有手机数据,所以不要急着往新手机里转移数据。解锁这个过程解锁工具会有提示,就跳过了。
不过一直有听说新手机解锁的话,需要绑定一段时间(大概是七天)的小米账号才行,但我手机一到手就解锁了……
解锁完后会自动重启,数据会被清空。
提取boot.img
目前刷机的目的仅是刷入 Magisk,Magisk 可以通过修补系统boot.img
的方式刷入,毋需使用 TWRP 或是其他第三方 REC 工具刷入。
所以需要先提取当前系统的原始boot.img
文件。
利用线刷包提取
在小米社区中看看有没有手机当前系统版本的线刷包,下载下来,解压之后,就有boot.img
,可以直接使用。只不过目前只有 MIUI 12 稳定版本的线刷包。
利用卡刷包(手机系统更新包)提取
小米社区还未提供当前使用版本的线刷包的话,也可以在手机系统更新中下载完整卡刷包。首先进入系统更新中点击下载完整更新包,下载开始后把后台全关闭,进入下载管理,手动继续下载,否则更新包会被自动解包更新到系统中去。
但是这类更新包是加密状态的,需要使用工具解密。
手机端
手机端的解密方法参考了 XDA 上的教程(刷入打过 Magisk 补丁的boot.img
还是需要用电脑),步骤如下:
- 下载 Termux(Play 商店 / 酷安)
- 下载 payload_dumper(GitHub)并解压
- 解压下载系统更新包,将解压出来的
payload.bin
放入payload_dumper
文件夹中 - 打开 Termux,执行命令
pkg install python -y
pip install --upgrade pip
apt update && apt upgrade -y
termux-setup-storage
执行到这一步会弹出提示,同意即可。
找到解压后的 payload_dumper 文件夹,长按该文件夹,点击更多 → 详情,复制该文件夹位置。
比如我的 payload_dumper 文件夹位置是在/storage/emulated/0/payload_dumper
,那么接下来在 Termux 的操作指令应该是
cd /storage/emulated/0/payload_dumper
pip install -r requirements.txt
python payload_dumper.py payload.bin
等待解包结束,就可以在payload_dumper/output
文件夹中找到boot.img
。
PC端
PC端的刷入方法参考了酷安教程。
- 把
payload.bin
解压出来 - 下载解密工具:传送门,并解压
- 将
payload.bin
放到payload_input
文件夹中 - 运行
payload_dumper.exe
- 由于只需要
boot.img
,所以不用等全程走完,看到boot.img
解压出来就可以把程序关掉
刷入 Magisk
1. 安装 Magisk
下载 Magisk Manager(GitHub / 备份)安装并打开,可能会因为网络原因无法正常加载相关信息。
可以打开右上角设置,点击「更新通道」将其修改为自定义,然后在网上搜索「Magisk自定义通道」,找个能用的填入自定义通道中。可以使用我的,目前为稳定版23.0
,不过不保证能持续更新。(懒得维护网上搜现成的吧)
设置之后应该就可以正常加载了。
2. 修补 boot.img
然后点击 Magisk 旁边的安装。
选择「选择并修补一个文件」。
找到刚才解密出来的boot.img
并选中,点击开始。
打过 Magisk 补丁的boot.img
放在/Download
文件夹下。
3. 刷入 boot.img
将修补过后的magisk_patched_xxxxx.img
复制到电脑,准备开始刷 Magisk,刷入方法参考了酷安教程。刷机需要使用到 adb 工具(传送门),注意解压。
在开机状态下,将手机连接至电脑。双击 adb 工具中的打开CMD命令行.bat
。
以下命令需要手机上开启「USB 调试」,命令的含义上图中都有说明,不再解释了。
adb devices
需要成功列出 adb 设备才行,失败的话检查驱动、数据线、电脑接口,一一排查。
adb reboot bootloader
重启到 fastboot 模式后,手机显示的是一只维修机器人的米兔。然后就可以刷入打过补丁的boot.img
了。由于修补过后的magisk_patched_xxxxx.img
名字每次都不一样,建议直接拖动,可以参考我之前做的动图。注意命令中的空格。
fastboot flash boot_ab magisk_patched_xxxxx.img
刷入成功后,输入fastboot reboot
重启设备,没有意外的话就可以看到已经成功激活的 Magisk 了。
4. 后续系统更新
之后的更新系统,就不用像第一次这么繁琐地提取boot.img
打补丁再刷入系统之中了。只是需要在更新新版本时,选择「下载完整更新包」。
然后等待更新包写入系统后,提示「重启完成更新」后,不要急着更新,这时候打开 Magisk,选择「安装到未使用的槽位(OTA 后)」,点击确定。
等待刷入完成。
重启系统,就更新完了。
或者,不用下载完整包也可以。在下载增量包前,先在magisk里点击「卸载Magisk」,选择「还原原厂映像」。
然后再增量更新。更新完成后,不要重启,和上面一样,安装 Magisk,选择「安装到未使用的槽位(OTA 后)」,再重启系统。
刷入 TWRP
官方 TWRP 现已正式推出,刷入方法与刷 Magisk 几乎一致。但是,由于小米 11 目前没什么能用的包,这里不建议刷 TWRP。
如果需要可以自行前往 TWRP 官网下载。
刷入方法为在 adb 中命令行刷入。
adb reboot bootloader
fastboot boot twrp.img
magisk 打补丁其实也挺不错的。
一些问题
1. SafetyNet 无法通过
刷了 Magisk 后,SafetyNet 检测就无法通过。无法通过的话,Google Play 保证机制就无法通过,有些游戏就下载不了。
解决方法是:使用下面这两个模块
在magisk中刷入,重启。就可以欺骗系统通过这一检测,使证明通过。(测试系统版本为开发版MIUI 12.5 21.3.25)
Play 商店的话,清除数据就行。
注意开启 magisk hide。
2. Magisk模块出现问题导致手机卡死
停用所有模块即可。
手机连接电脑,打开 adb 工具,输入adb shell
,提示成功连接后会出现venus:/
的字样,再输入magisk --remove-modules
,手机会自动重启,卡得没法重启,就长按开机键强制重启。
然后挨个排查,看看是哪个模块出现的问题。
一定要注意开启USB调试,否则只能靠刷回原厂镜像才能解决。具体可以参考:Magisk Frequently Asked Questions。
MIUI13(Android12)
基于 Android12 的 MIUI13 也是可以直接用 Magisk 给 boot 打补丁的,只是 Magisk 需要使用支持 Android12 的Canary
版本。
你可以点击 这里 下载 GitHub 实时构建的版本,或是访问 这里 下载我存档的备份。
如果用的还是v23
版本,安装完Canary
版的 App 后,应用会提示更新 Magisk,安装时选择「直接安装(推荐)」,重启后,再更新到 MIUI13。
本文作者:mikusa
本文链接:https://www.himiku.com/archives/xiaomi-11.html
版权声明:所有文章除特别声明外均系本人自主创作,转载及引用请联系作者,并注明出处(作者、原文链接等)。
小米11更新澎湃OS,可以按照第四条的方法更新吗
刷入fastboot flash boot_ab magisk_patched_xxxxx.img这个命令是不是和之前的有变化啊,我记得最早是需要分别刷入boot_a 和 boot_b啊,这次一次刷入就可以了吗?MIUI13,安卓12
好像是改了,现在是boot_ab,你按这个刷入试试?
大神nb!
我现在是v23的magisk,miui版本是12.5,能通过下载完整更新包,安装到未使用的槽位的方式升级到Miui13吗
miui13推送稳定版了吗?由于miui13是Android 12,建议更新前先安装下 canary 版的 magisk,文章末尾有提供,再更新到miui13
Miui13已经推送,需要卸载现在的magisk吗,还是新版的magisk可以直接覆盖?
可以直接覆盖
好的,我操作一下
方法太繁琐复杂,root的话可以参考http://www.romleyuan.com/news/readnews?newsid=3410,然后配合adb很方便
繁琐?你看看我写的和你贴的是不是同一个方法?
还好意思贴个内容农场?
请问,我小米11u miui12.5.12稳定版更新miui12.5.20后为什么面具没有安装到另一个槽位的选项?
稳定版OTA?应该是会有的啊,你更新的时候有在magisk内先还原镜像吗?
我开始先是完整包更新,然后没有安装到另一个槽位选项后,我没有重启手机然后又在面具还原了原厂镜像,然后再ota非完整包更新后还是没有,最后我在b站搜到了解决方法后解决了!是因为SELinux的原因
还有一个问题:我现在是安卓11的稳定版12.5,能不能像这样保留面具升级到安卓12的miui13?
酷安有个脚本能直接偷渡,传送
我就是靠这玩意直接从miui12.5稳定版不清数据升级到miui13的。更新完,重启前,重启前在magisk里直接安装到另一个槽位,不用还原镜像。
面具不用换吗?我现在用的还是这个教程magisk 23.0呢
要换,那你更新前先换成canary版的magisk吧,文章末尾有备份档
时隔快一个月,打扰了,老哥;
我刚入搞机坑不久,最近也遇到老哥你说的这个问题情况,看老哥你最后说到B站上找到解决方法了,不知现在还能找到原视频么??我也想看看视频给的解决方法,主要不知如何关闭 selinux φ( ̄∇ ̄o)
呜呜呜X﹏X,又过去一个半多月了,看老哥你还没回复我在上月初给老哥你发的评论提问。。。不知老哥当初是忙着没看到我楼上的评论提问??还是??
麻烦老哥之后看到我这条评论推送通知,麻烦尽快回复下我在楼上2月初所发的提问留言呗,哭惹
可能他没看邮箱吧,所以你现在是遇到了什么问题两个月都没能解决掉?
请问安卓12的miui13怎样root?能不能出一版视频?
miui13一样的,也是用magisk给boot打补丁就行
另外还请下次评论,使用真实的邮箱,否则我回复你也没办法接受到。
最新版欧版系统,刷入magisk修复boot后无法开机,刷原版boot恢复,
Android12要用另一版magisk了
看系统还是安卓11
那也试试开发版本的magisk?原版已经停更了
原来是上一个版本的magisk没卸载掉
神奇,不是会直接覆盖的吗 ⌇●﹏●⌇
不是,之前的版本要刷入卸载包卸载,新版本是直接改名
666 。小米11 pro 实测也可以。 我在下面这个地址找的线刷包,指向的好像是官方的地址:
XiaomiROM.com
fastboot flash boot_a magisk_patched_xxxxx.img这个命令刷成功了,fastboot flash boot_b magisk_patched_xxxxx.img这个命令怎么刷不进去啊,是现在只有一个A系统吗?请老师解惑
不科学,两条命令其实只改了a、b,a能刷进去,b怎么就刷不进去了?
所以我也不知道哪错了,是不是我这手机里面只有一个分区有系统呢?能给个你刷这俩命令的动图吗?我看看是不是哪错了啊
那只刷了一个分区的话,重启系统,magisk有生效吗?
重启系统,magisk生效,但是没试过在magisk里面把系统按照道空白槽位这个
那可以更新系统的时候试下。全量包更新,安装完提示重启的时候,到magisk里安装到另一个插槽
试过了,一切正常