一、概述 Android 10通过将fastboot从bootloader转移到用户空间,增加了对可调整大小分区的支持。此重定位使得可以将代码移动和烧录到可维护且可测试的公共位置,其中仅由HAL实现fastboot的vendor专属部分。
二、统一fastboot和recovery
由于用户空间fastboot和recovery类似,因此可以将它们合并为一个分区/二进制文件。优点包括:占用空间更少,整体分区更少,以及fastboot和recovery共享kernel和lib的能力。
要支持fastbootd,bootloader必须实现boot-fastboot的新引导控制块(BCB)命令。要进入fastbootd模式,
bootloader应将boot-fastboot写入BCB消息的命令字段,并保持BCB的恢复字段不变(以启用中断恢复任务的重启)。状态,阶段和保留字段也保持不变。在BCB命令中看到boot-fastboot后,预计bootloader将加载并引导到 recovery映像中。然后recovery会解析BCB消息并切换到fastbootd模式。
1.新增的adb指令:
命令 | 说明 |
---|---|
adb reboot fastboot | 在system中重启会进入fastbootd;在recovery中无需重启直接进入fastbootd。 |
2.新增的fastboot 命令:
命令 | 说明 |
---|---|
reboot recovery | 在bootloader 模式下会重启进入recovery。在 fastboot 模式无需重启即可直接进入 recovery 模式。 |
reboot fastboot | 重启进入 fastboot 模式。 |
getvar is-userspace | 返回 yes 表示正处于fastboot 模式,返回 no 表示正处于bootloader 模式。 |
getvar is-logical: | 若给定分区是逻辑分区,则返回yes,否则返回no。 |
getvar super-partition-name | 返回super分区的名称。如果super分区是 A / B 分区,则该名称包括当前slot后缀。 |
create-logical-partition | 创建具有给定名称和大小的逻辑分区。该名称不得作为逻辑分区存在。 |
delete-logical-partition | 删除给定的逻辑分区(有效擦除分区)。 |
resize-logical-partition | 将逻辑分区的大小调整为新大小而不更改其内容。 |
update-super | 合并对 super 分区元数据的更改。 如果无法进行合并,则此命令将失败。可选的“erase”参数会覆盖设备的元数据,而不是执行合并。 |
3.仍支持旧的fastboot指令:
命令 | 说明 |
---|---|
flash <partition> [<filename>] |
解锁状态下向指定分区烧录image。 |
erase <partition> |
解锁状态下擦除指定分区。 |
getvar <variable> all |
显示bootloader变量,如果不存在则返回error。 |
set_active <slot> |
A/B系统用于设置active slot。 |
reboot | 重启设备。 |
reboot-bootloader (reboot bootloader) | 重启进入bootloader模式。 |
三、bootloader的变更
bootloader继续支持烧录 bootloader,radio和boot/recovery分区,之后设备将引导至 fastboot(用户空间)并烧录所有其他分区。bootloader还支持以下指令:
命令 | 说明 |
---|---|
download | 下载image。 |
flash recovery <image> /flash boot <image> /flash bootloader <image> |
烧录boot/recovery.bootloader。 |
oem | OEM定义的指令。 |
bootloader不允许烧录动态分区,会返回error,而应该在 fastbootd 中烧录分区。对于动态分区设备,fastboot 工具支持强制模式,以便在 bootloader 模式下直接烧录动态分区。例如,如果 system 是设备上的动态分区,则 fastboot –force flash 系统允许bootloader烧录分区而不是fastbootd。此强制模式旨在为工厂烧录提供灵活性,不建议开发人员使用。
四、启用 fastbootd
(1)将 fastbootd 添加到 device.mk 中的 PRODUCT_PACKAGES:
PRODUCT_PACKAGES + = fastbootd
|
(2)确保将 fastboot HAL,引导控制 HAL 和运行状况 HAL 打包为recovery image的一部分。
(3)添加 fastbootd 所需的任何特定于设备的 sepolicy 权限。例如,fastbootd 需要对特定于设备的分区进行写访问才能烧录该分区。此外,fastboot HAL 实现还可能需要特定于设备的权限。
五、GSI的烧录
(1)在Settings模块打开Developer options,勾选OEM unlock选项;
(2)执行adb reboot bootloader进入bootloader模式;
(3)执行fastboot flashing unlock并根据界面提示unlock设备;
(4)执行fastboot reboot-bootloader重启进入bootloader模式;
(5)执行fastboot flash boot_a boot-debug.img用于VTS测试;
(6)执行fastboot reboot fastboot进入fastbootd模式;
(7)执行fastboot flash system_a aosp-system.img烧录Google System Image;
(8)执行fastboot –disable-verification flash vbmeta_a vbmeta.img禁用AVB;
(9)执行fastboot reboot bootloader重启进入bootloader模式;
(10)执行fastboot -w(或fastboot flash userdata userdata.img / fastboot flash metadata meta.img)擦除用户数据;
(11)执行fastboot flashing unlock锁定设备;
(12)执行fastboot reboot进入Android准备测试。
注1:需要适用Android Q最新SDK中的fastboot.ext/adb.exe文件:https://www.xtdiguo.com/2380.html
注2:若GSI是ext4格式文件(可用file aosp-system.img查看),请先用img2simg(若out/hose/linux-x86/bin目录没有该文件可编译system/core/libsparse来生成)将其转换为sparse格式再烧录。
可能对你有帮助的内容:极客币获取 | 话费充值 | 下载帮助 | 刷机必看 | 阿里云代金券
文章名称:安卓10系统Fastboot命令的应用,将Fastboot移至用户空间教程
文章链接:https://www.xtdiguo.com/15346.html
免责声明:根据《计算机软件保护条例》第十七条规定“为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。”您需知晓本站所有内容资源均来源于网络,仅供用户交流学习与研究使用,版权归属原版权方所有,版权争议与本站无关,用户本人下载后不能用作商业或非法用途,需在24个小时之内从您的电脑中彻底删除上述内容,否则后果均由用户承担责任;如果您访问和下载此文件,表示您同意只将此文件用于参考、学习而非其他用途,否则一切后果请您自行承担,如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
评论列表(3条)
楼主,荣耀平板8刷国际版系统或欧洲版系统可以啊?教我,可付费。
@johnwick6:那就比较麻烦了,需要先找人解锁BL锁,然后找对应的国际版系统,能不能刷进去也是一回事,这一圈下来代价不小,还不如重新买个其他的
@番茄小子:这么麻烦!好的谢谢您的指导。