启动流程

建议的设备启动流程如下:

Verified boot flow

图 1. 验证启动流程。

A/B 设备流程

如果设备使用 A/B 分区,启动流程会略有不同。必须首先使用 启动控制 HAL 将要启动的槽位标记为 SUCCESSFUL然后更新回滚保护元数据。

如果有平台更新失败(未标记为 SUCCESSFUL),A/B 堆栈会回退到另一个槽位,该槽位仍然包含之前版本的 Android。但是,如果已设置回滚保护元数据,则由于回滚保护,之前的版本无法启动。

向用户传达验证启动状态

确定设备的启动状态后,您需要将该状态传达给用户。如果设备没有任何问题,则无需显示任何内容即可继续。验证启动问题分为以下几类:

  • 黄色:针对设置了自定义信任根的 LOCKED 设备发出的警告屏幕
  • 橙色:针对 UNLOCKED 设备发出的警告屏幕
  • 红色 (eio):针对 dm-verity 损坏发出的警告屏幕
  • 红色(未找到操作系统):未找到有效的操作系统

设置了自定义信任根的 LOCKED 设备

黄色屏幕示例

Yellow device warning screen

如果设备已 LOCKED、已设置自定义信任根且映像已使用此自定义信任根签名,则每次启动时都显示黄色屏幕。黄色屏幕会在十秒钟后消失,设备继续启动。如果用户按下电源按钮,“按下电源按钮暂停”文本会变为“按下电源按钮继续”,并且屏幕永远不会消失(但设备可能会调暗或关闭屏幕以防止老化)。如果再次按下,屏幕会消失,手机会继续启动。

对于 十六进制数字,请使用用于验证的公钥的 libavb 表示形式的 sha256 的前 8 位数字,例如 d14a028c

建议文本

您的设备已加载不同的操作系统。

在另一台设备上访问此链接以了解详情:

g.co/ABH

ID:十六进制数字

按下电源按钮暂停

UNLOCKED 设备

橙色屏幕示例

Orange device warning screen

如果设备已 UNLOCKED,则每次启动时都显示橙色屏幕。橙色屏幕会在十秒钟后消失,设备继续启动。如果用户按下电源按钮,“按下电源按钮暂停”文本会变为“按下电源按钮继续”,并且屏幕永远不会消失(设备可能会调暗和/或关闭屏幕,以防止老化或类似情况)。如果再次按下,屏幕会消失,手机会继续启动。

对于 十六进制数字,请使用用于验证的公钥的 libavb 表示形式的 sha256 的前 8 位数字,例如 d14a028c

建议文本

启动加载程序已解锁,无法保证软件完整性。设备上存储的任何数据都可能被攻击者获取。请勿在设备上存储任何敏感数据。

在另一台设备上访问此链接以了解详情:

g.co/ABH

ID:十六进制数字

按下电源按钮暂停。

dm-verity 损坏

红色 eio 屏幕示例

Red eio device warning screen

如果找到有效版本的 Android 且设备当前处于 eio dm-verity 模式,则显示红色 eio 屏幕。用户需要点击电源按钮才能继续。如果用户在 30 秒内未确认警告屏幕,设备将关机(以保护屏幕免受老化并节省电量)。

建议文本

您的设备已损坏。它不可信,可能无法正常工作。

在另一台设备上访问此链接以了解详情:

g.co/ABH

按下电源按钮继续。

未找到有效的操作系统

红色屏幕示例

Red corrupt device warning screen

如果找不到有效版本的 Android,则显示红色屏幕。设备无法继续启动。如果用户在 30 秒内未确认警告屏幕,设备将关机,以保护屏幕免受老化并节省电量。

对于 十六进制数字,请使用用于验证的公钥的 libavb 表示形式的 sha256 的前 8 位数字,例如 d14a028c

建议文本

找不到有效的操作系统。设备将无法启动。

在另一台设备上访问此链接以了解详情:

g.co/ABH

ID:十六进制数字

按下电源按钮以关机。

解锁确认

屏幕示例

UNLOCK device warning screen

为响应通过 fastboot 接口执行的 fastboot flashing unlock 命令,显示解锁确认屏幕。焦点最初位于不解锁。如果用户在 30 秒内未与警告屏幕互动,屏幕将消失,命令将失败。

建议文本

如果您解锁了 Bootloader,则可以在这部手机上安装自定义操作系统软件。自定义操作系统未经过与原始操作系统相同级别的测试,可能会导致您的手机和已安装的应用停止正常工作。使用自定义操作系统无法保证软件完整性,因此 Bootloader 解锁后,手机上存储的任何数据都可能面临风险。

为防止未经授权访问您的个人数据,解锁 Bootloader 还会删除手机上的所有个人数据。

按下音量调高/调低按钮以选择是否解锁 Bootloader,然后按下电源按钮以继续。

解锁

解锁 Bootloader。

不解锁

不解锁 Bootloader 并重启手机。

锁定确认

为响应通过 fastboot 接口执行的 fastboot flashing lock 命令,显示锁定确认屏幕。焦点最初位于不锁定。如果用户在 30 秒内未与警告屏幕互动,屏幕将消失,命令将失败。

文本

如果您锁定 Bootloader,则无法在这部手机上安装自定义操作系统软件。为防止未经授权访问您的个人数据,锁定 Bootloader 还会删除手机上的所有个人数据。

按下音量调高/调低按钮以选择是否锁定 Bootloader,然后按下电源按钮以继续。

锁定

锁定 Bootloader。

不锁定

不锁定 Bootloader 并重启手机。

向 Android 传达验证启动状态

屏幕示例

LOCK confirmation device warning screen

Bootloader 通过内核命令行参数或从 Android 12 开始通过 bootconfig 将验证启动状态传达给 Android。它会将 androidboot.verifiedbootstate 选项设置为以下值之一:

  • green:如果设备为 LOCKED 且未使用用户可设置的信任根
  • yellow:如果设备为 LOCKED 且使用了用户可设置的信任根
  • orange:如果设备为 UNLOCKED

根据启动加载程序在处理 dm-verity 错误方面的状态,androidboot.veritymode 选项设置为 eiorestart。如需了解详情,请参阅处理验证错误