安卓10系统Fastboot命令的应用,将Fastboot移至用户空间教程

一、概述 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个小时之内从您的电脑中彻底删除上述内容,否则后果均由用户承担责任;如果您访问和下载此文件,表示您同意只将此文件用于参考、学习而非其他用途,否则一切后果请您自行承担,如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。

(2)
打赏
番茄小子的头像番茄小子盟主
上一篇 2023年 6月 25日 16:58
下一篇 2019年 8月 1日

相关推荐

发表回复

登录后才能评论

评论列表(3条)

  • johnwick6的头像
    johnwick6 2023年 7月 11日 12:55

    楼主,荣耀平板8刷国际版系统或欧洲版系统可以啊?教我,可付费。

    • 番茄小子的头像
      番茄小子 2023年 7月 11日 13:51

      @johnwick6那就比较麻烦了,需要先找人解锁BL锁,然后找对应的国际版系统,能不能刷进去也是一回事,这一圈下来代价不小,还不如重新买个其他的

    • johnwick6的头像
      johnwick6 2023年 7月 11日 15:40

      @番茄小子这么麻烦!好的谢谢您的指导。