2020-04-23

Android 10.0 Fastboot 动态分区烧录

1.概览

1.Fastbootd简介

动态分区(Dynamic Partitions)是Android 10新增功能,是用户空间的分区系统(userspace partitioning system to Android)。

Fastbootd模式是伴随动态分区功能而引入的一项新功能。动态分区是用户空间的分区,而Bootloader是不能访问用户空间的动态分区的。因此,Android 10将原Bootloader一分为二,将用户空间的功能移动到recovery镜像形成Fastbootd模式,剩下的Bootloader功能即形成Bootloader模式。

从分区烧录角度看,Bootloader模式用于烧录和管理bootloader、radio、boot、recovery等物理分区,Fastbootd模式用于烧录和管理动态分区及super分区。

烧录和管理动态分区必须先解锁Bootloader。动态分区一般包括:system、vendor、product、odm等。

2.依赖条件

依赖条件至少包含如下:

  • Android版本为10(或以上),且支持动态分区功能。
  • 烧录动态分区前必须先解锁设备。

2.动态分区烧录和管理

1.烧录前准备工作

1.烧录工具

手机连接PC后,通过fastboot来烧录动态分区。

fastboot工具是Android原生的,可从Android原生SDK Platform-Tools中获取,包括Linux版本和Window版本:

Linux版Platform Tools

Windows 版Platform Tools

2.进Fastbootd模式

进入Fastbootd模式的方法有3种:

  • 在正常开机后,执行adb reboot fastboot进入。
  • 进入recovery模式,再通过菜单选择“Enter fastboot”进入。
  • 进入Bootloader模式,执行fastboot reboot fastboot进入。
3.确保设备已解锁

烧录和管理动态分区的前提是设备解锁。在Fastbootd模式下,执行下面命令获取设备解锁状态。

fastboot getvar unlocked

yes为解锁状态,no为上锁状态。如图所示,设备处于解锁状态。

image

若设备未解锁,则不能烧录和管理动态分区。如图所示,执行烧录命令,会提示错误“Command not available on locked devices”。

image

只要bootloader解锁设备成功,Debug版本、User版本都可以烧录动态分区。

2.管理动态分区

1.判断逻辑分区

判断逻辑分区命令格式如下:

fastboot getvar is-logical:

若是逻辑分区,则返回yes;若是物理分区,则返回no。由下图可知,system分区的返回结果是yes,所以system分区是逻辑分区;boot分区返回结果是no,所以boot分区是物理分区。

image
2.查询逻辑分区

可以根据fastboot getvar all的结果以及关键字is-logical过滤所有的分区,在根据yes找到所有的逻辑分区。

根据以上过滤方法,可以查询到逻辑分区,如图所示:

image

在Linux环境下,可以使用grep命令来过滤逻辑分区

image
3.创建逻辑分区

创建逻辑分区命令格式如下:

fastboot create-logical-partition  

创建逻辑分区如下图所示

image

在创建逻辑分区后,可以检查是否真的创建成功。通过fastboot getvar all过滤出所有的逻辑分区,检查是否包含自己创建的逻辑分区。

image
4.调整逻辑分区

调整逻辑分区命令格式如下:

fastboot resize-logical-partition  

如下图所示,逻辑分区是4K字节对齐,调整逻辑分区大小为4K+1字节(4096+1字节)

image

执行完成后,查询此逻辑分区大小调整为8K字节,如图所示。

image
5.删除逻辑分区

删除逻辑分区命令格式如下:

fastboot delete-logical-partition 

删除“logicaltest”的逻辑分区

image

在删除逻辑分区后,可以检查删除成功没有。通过fastboot getvar all过滤出所有逻辑分区查看。

3.烧录动态分区

烧录动态分区命令格式如下:

fastboot flash  

动态分区都可以使用此命令烧录。如图所示。

image

动态分区烧录后,需要同步烧录动态分区对应的vbmeta分区,否则设备烧录后在上锁,验证启动会失败。

3.Super镜像烧录

super镜像烧录命令格式如下:

fastboot flash super super.img

烧录super镜像

image

4.Vbmeta镜像烧录

动态分区烧录后,需要同步烧录动态分区对应的vbmeta分区,否则设备烧录后在上锁,重启后可能无法开机。

动态分区和对应vbmeta

动态分区 对应vbmeta 镜像
System vbmeta_system vbmeta_system.img
Product vbmeta_system vbmeta_system.img
Vendor vbmeta_vendor vbmeta_vendor.img

烧录vbmeta镜像

image

从分区烧录角度看,Bootloader模式可烧录bootloader、radio、boot、recovery分区,Fastbootd模式可烧录system、vendor、product等动态分区及super、vbmeta分区。

参考https://source.android.google.cn/devices/bootloader/fastbootd

你可能感兴趣的:(2020-04-23)