一、通用镜像(GSI)和动态分区
通用镜像(GSI)
动态分区
Google在Android10开始引入了动态分区(Dynamic Partitions)
简单来说,就是把原来的system , vendor , product还有odm分区整合到了一起,构成super分区 ,在刷入设备的时候动态调整system等分区的大小,这个改变给让我们刷机、修改system分区等操作带来了困难,在Twrp里挂载后并不能直接刷入分区镜像
二、动态分区刷GSI的方法
- 针对以下内容,
- 解锁Bootloader ,开启ADB调试后食用
- 适合具备相关刷机、救砖经验者进行尝试
- 你的设备因此损坏,与我没有关系
方法1.使用动态系统更新(DSU)
Goole介绍:WhatIsDSU
步骤1.启用 DSU 功能标志
安卓10正式版及以上,可以在开发者选项中Feature flags > settings_dynamic_system 中启用该功能。国内系统UI大多隐藏了,可以尝试用下面的adb 命令开启:
1 | adb shell setprop persist.sys.fflag.override.settings_dynamic_system true |
步骤2.安装前的准备
通过DSU安装的GSI需要是可直接刷写的raw格式镜像,在开始前先检查你的镜像是不是raw格式
linux或者mac系统可以用file system.img
命令查看
1 | file system.img |
若返回值是这样的就是raw格式
若为稀疏格式(simg),可以使用以下命令把system镜像转为raw格式镜像
1 | simg2img system.img system_raw.img |
- 一般gsi镜像都是simg格式,先检查转换
步骤3.将镜像打包为gz格式
1 | gzip -c system_raw.img > system_raw.gz |
*也可以直接用压缩工具压缩为gzip压缩包
步骤4.用adb推到手机内置储存
1 | adb push system_raw.gz /storage/emulated/0/Download/ |
步骤5.安装动态系统更新
- 下面的命令要全部一起复制执行
1 | adb shell am start-activity \ |
这里第五行的$(du -b system_raw.img|cut -f1)
可直接用 system_raw.img 的大小代替,不然用windows刷会报错
比如我的个system_raw.img的大小为2370265088
命令就改为
1 | adb shell am start-activity \ |
然后你就会看到状态栏有正在安装的动态更新的提示,安装完重启进入第二个系统
小米10出厂安卓10,必然是支持DSU的
你可以用此方法尝试安装phh的aosp gsi
方法2.通过fastbootd刷入GSI镜像(推荐)
fastbootd
——用户空间中的fastboot
注意,fastbootd和fastboot是两个不同的模式
- 针对以下内容
- Android 10引入了 启动时验证 (AVB),在刷写 GSI之前,先下载并刷入vbmeta.img以停用 AVB
- 以下步骤请使用最新版android-platform-tools进行操作
- 如果不知道说的是什么,建议先百度fastboot刷机
vbmeta.img
一般包含会随gsi镜像一起发布
步骤1.重启到fastboot
关机状态同时按电源+音量减 或者开启adb调试后adb reboot bootloader
步骤2.刷入vbmeta.img停用AVB验证
1 | fastboot --disable-verification flash vbmeta vbmeta.img |
步骤3.还原MIUI官方recovery
目的是可以启动fastbootd
或者使用twrp里的用户空间fastboot也可以,注意如果twrp有这个功能可以不用刷回miui recovery
1 | fastboot flash recovery recovery.img |
步骤4.在fastboot模式下进入fastbootd模式
1 | fastboot reboot fastboot |
一定是要通过fastboot命令运行这句,才能启动到fastbootd模式
- 到这里如果卡在waiting for any devices就是没有安装小米usb驱动,设备管理器会识别你的手机,右键更新驱动程序。
PS:小米USB驱动
步骤5.刷入system镜像
安装好驱动,进入fastbootd之后,这时候fastboot命令已经可以识别system分区了
1 | fastboot flash system system.img |
步骤6.清楚数据
*会格式化data,防止加密(注意提前备份)
1 | fastboot -w |
步骤7.重启系统
1 | fastboot reboot |