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

图 1. 验证启动流程。
A/B 设备流程
如果设备使用 A/B 分区,启动流程会略有不同。必须首先使用 启动控制 HAL 将要启动的槽位标记为 SUCCESSFUL
,然后更新回滚保护元数据。
如果有平台更新失败(未标记为 SUCCESSFUL
),A/B 堆栈会回退到另一个槽位,该槽位仍然包含之前版本的 Android。但是,如果已设置回滚保护元数据,则由于回滚保护,之前的版本无法启动。
向用户传达验证启动状态
确定设备的启动状态后,您需要将该状态传达给用户。如果设备没有任何问题,则无需显示任何内容即可继续。验证启动问题分为以下几类:
- 黄色:针对设置了自定义信任根的 LOCKED 设备发出的警告屏幕
- 橙色:针对 UNLOCKED 设备发出的警告屏幕
- 红色 (eio):针对 dm-verity 损坏发出的警告屏幕
- 红色(未找到操作系统):未找到有效的操作系统
设置了自定义信任根的 LOCKED 设备
黄色屏幕示例

如果设备已 LOCKED、已设置自定义信任根且映像已使用此自定义信任根签名,则每次启动时都显示黄色屏幕。黄色屏幕会在十秒钟后消失,设备继续启动。如果用户按下电源按钮,“按下电源按钮暂停”文本会变为“按下电源按钮继续”,并且屏幕永远不会消失(但设备可能会调暗或关闭屏幕以防止老化)。如果再次按下,屏幕会消失,手机会继续启动。
对于 十六进制数字,请使用用于验证的公钥的 libavb 表示形式的 sha256 的前 8 位数字,例如 d14a028c
。
建议文本
您的设备已加载不同的操作系统。
在另一台设备上访问此链接以了解详情:
g.co/ABH
ID:十六进制数字
按下电源按钮暂停
UNLOCKED 设备
橙色屏幕示例

如果设备已 UNLOCKED,则每次启动时都显示橙色屏幕。橙色屏幕会在十秒钟后消失,设备继续启动。如果用户按下电源按钮,“按下电源按钮暂停”文本会变为“按下电源按钮继续”,并且屏幕永远不会消失(设备可能会调暗和/或关闭屏幕,以防止老化或类似情况)。如果再次按下,屏幕会消失,手机会继续启动。
对于 十六进制数字,请使用用于验证的公钥的 libavb 表示形式的 sha256 的前 8 位数字,例如 d14a028c
。
建议文本
启动加载程序已解锁,无法保证软件完整性。设备上存储的任何数据都可能被攻击者获取。请勿在设备上存储任何敏感数据。
在另一台设备上访问此链接以了解详情:
g.co/ABH
ID:十六进制数字
按下电源按钮暂停。
dm-verity 损坏
红色 eio 屏幕示例

如果找到有效版本的 Android 且设备当前处于 eio
dm-verity 模式,则显示红色 eio
屏幕。用户需要点击电源按钮才能继续。如果用户在 30 秒内未确认警告屏幕,设备将关机(以保护屏幕免受老化并节省电量)。
建议文本
您的设备已损坏。它不可信,可能无法正常工作。
在另一台设备上访问此链接以了解详情:
g.co/ABH
按下电源按钮继续。
未找到有效的操作系统
红色屏幕示例

如果找不到有效版本的 Android,则显示红色屏幕。设备无法继续启动。如果用户在 30 秒内未确认警告屏幕,设备将关机,以保护屏幕免受老化并节省电量。
对于 十六进制数字,请使用用于验证的公钥的 libavb 表示形式的 sha256 的前 8 位数字,例如 d14a028c
。
建议文本
找不到有效的操作系统。设备将无法启动。
在另一台设备上访问此链接以了解详情:
g.co/ABH
ID:十六进制数字
按下电源按钮以关机。
解锁确认
屏幕示例

为响应通过 fastboot 接口执行的 fastboot flashing unlock
命令,显示解锁确认屏幕。焦点最初位于不解锁。如果用户在 30 秒内未与警告屏幕互动,屏幕将消失,命令将失败。
建议文本
如果您解锁了 Bootloader,则可以在这部手机上安装自定义操作系统软件。自定义操作系统未经过与原始操作系统相同级别的测试,可能会导致您的手机和已安装的应用停止正常工作。使用自定义操作系统无法保证软件完整性,因此 Bootloader 解锁后,手机上存储的任何数据都可能面临风险。
为防止未经授权访问您的个人数据,解锁 Bootloader 还会删除手机上的所有个人数据。
按下音量调高/调低按钮以选择是否解锁 Bootloader,然后按下电源按钮以继续。
解锁
解锁 Bootloader。
不解锁
不解锁 Bootloader 并重启手机。
锁定确认
为响应通过 fastboot 接口执行的 fastboot flashing lock
命令,显示锁定确认屏幕。焦点最初位于不锁定。如果用户在 30 秒内未与警告屏幕互动,屏幕将消失,命令将失败。
文本
如果您锁定 Bootloader,则无法在这部手机上安装自定义操作系统软件。为防止未经授权访问您的个人数据,锁定 Bootloader 还会删除手机上的所有个人数据。
按下音量调高/调低按钮以选择是否锁定 Bootloader,然后按下电源按钮以继续。
锁定
锁定 Bootloader。
不锁定
不锁定 Bootloader 并重启手机。
向 Android 传达验证启动状态
屏幕示例

Bootloader 通过内核命令行参数或从 Android 12 开始通过 bootconfig 将验证启动状态传达给 Android。它会将 androidboot.verifiedbootstate
选项设置为以下值之一:
green
:如果设备为LOCKED
且未使用用户可设置的信任根yellow
:如果设备为LOCKED
且使用了用户可设置的信任根orange
:如果设备为UNLOCKED
根据启动加载程序在处理 dm-verity 错误方面的状态,androidboot.veritymode
选项设置为 eio
或 restart
。如需了解详情,请参阅处理验证错误。