Super empty
简介
它是任何动态分区设备在系统构建时可选的产物。它一个定义了动态分区信息的空镜像。它的主要作用是为设备提供一个初始的分区表。
对原生动态分区来说
它自身包含了对逻辑分区的映射信息及逻辑分区大小。可以用于清除或更新super分区,比如后期重新分区逻辑分区大小。
对改造动态分区来说
它定义了维护者定义的设备自身分区和分区大小,将它们合并成一个大的“super”供刷入第三方ROM使用,甚至可以让老旧设备运行DSU。并且针对这类设备它的意义远不止类原生,对PT(Project Treble)也有帮助,有经验的维护者可以通过改造动态分区的方式让用户无需扩容即可体验深度定制UI。
使用方法
原生动态分区
fastboot wipe-super super_empty.img的绝对路径
改造动态分区
类原生
以我个人维护的小米6X(wayne)为例
1.设备重启至fastboot
2.连接电脑
3.准备最新版本的adb工具包和维护者提供的super_empty.img和ROM包
4.打开命令行进入工具包目录,输入fastboot wipe-super super_empty.img的绝对路径
5.刷写完毕后继续刷入维护者提供的Recovery,fastboot flash recovery recovery.img的绝对路径
6.重启设备至recovery
7.选择格式化data(format data)
8.连接电脑,使用adb sideload刷入ROM,adb sideload ROM包绝对路径
GSI
改造动态分区之后,使用Aosp recovery或TWRP的fastbootd,刷入system分区,即可不需扩容也能使用上超过system物理空间大小的镜像。
对开发者的一些帮助
改造动态分区的示例commit 如果分区大小还是不够,您可以考虑切换到erofs或squashfs等等压缩文件系统。必须在内核中有文件系统相关支持且fstab中正确指定挂载参数。
对于在Mac上正常刷写super_empty在win或linux下不能正常刷写的情况,请检查device tree内定义的数值是否100%匹配。