裝置的建議啟動流程如下:

圖 1. 驗證開機程序流程。
A/B 裝置的流程
如果裝置使用 A/B 版本,啟動流程會稍有不同。更新回溯保護中繼資料之前,必須先使用 Boot Control HAL 將要啟動的插槽標示為 SUCCESSFUL
。
如果平台更新失敗 (未標示為 SUCCESSFUL
),A/B 堆疊會改回其他位置,其中仍包含舊版 Android。不過,如果已設定復原保護機制中繼資料,則由於復原保護機制,先前版本無法啟動。
向使用者說明驗證開機程序狀態
確定裝置的啟動狀態後,您需要將該狀態傳達給使用者。如果裝置沒有任何問題,請繼續操作,但不要顯示任何內容。已驗證啟動問題可分為以下幾種類別:
- 黃色:針對已鎖定且設定自訂信任根的裝置顯示警告畫面
- 橘色:已解鎖裝置的警告畫面
- RED (eio):警告畫面顯示 dm-verity 損毀
- 紅色 (找不到 OS):找不到有效的 OS
搭載自訂信任根的鎖定裝置
黃色畫面示例:

如果裝置處於鎖定狀態、已設定自訂信任根目錄,且映像檔已使用此自訂信任根目錄簽署,則每次開機時都會顯示黃色畫面。黃色畫面會在 10 秒後關閉,裝置會繼續啟動。如果使用者按下電源鍵,「按下電源鍵可暫停」文字會變更為「按下電源鍵可繼續」,且螢幕不會關閉 (但裝置可能會調低亮度或關閉螢幕,以防螢幕烙印)。如果再次按下,螢幕就會關閉,手機會繼續啟動。
針對 hex-number,請使用用於驗證的公開金鑰的 libavb 表示法 SHA-256 的前 8 位數,例如 d14a028c
。
建議的文字:
裝置已載入其他作業系統。
如要瞭解詳情,請在其他裝置上點選這個連結:
g.co/ABH
ID:hex-number
按下電源鍵可暫停
已解鎖的裝置
範例橘色畫面:

如果裝置處於解鎖狀態,每次啟動時都會顯示橘色畫面。十秒後,橘色畫面會關閉,裝置會繼續啟動。如果使用者按下電源鍵,「按下電源鍵可暫停」文字會變更為「按下電源鍵可繼續」,且螢幕不會關閉 (裝置可能會調暗和/或關閉螢幕,以防螢幕燒印或類似情況)。如果再次按下,螢幕就會關閉,手機會繼續啟動。
針對 hex-number,請使用用於驗證的公開金鑰 libavb 表示法的 SHA-256 前 8 位數,例如 d14a028c
。
建議的文字:
本裝置的系統啟動載入程式已解鎖,因此我們無法保證軟體完整性。任何儲存在裝置中的資料都可能會提供給攻擊者。因此請勿將私密資料儲存在裝置上。
如要瞭解詳情,請在其他裝置上點選這個連結:
g.co/ABH
ID:hex-number
按下電源鍵可暫停。
dm-verity 損毀
RED eio 畫面範例:

如果找到有效的 Android 版本,且裝置目前處於 eio
dm-verity 模式,則會顯示紅色 eio
畫面。使用者必須按下電源鍵才能繼續。如果使用者未在 30 秒內確認警告畫面,裝置就會關機 (以保護螢幕免於影像烙印並節省電力)。
建議的文字:
你的裝置已損毀。無法信任,且可能無法正常運作。
如要瞭解詳情,請在其他裝置上點選這個連結:
g.co/ABH
按下電源鍵即可繼續。
找不到有效的作業系統
RED 畫面範例:

如果找不到有效的 Android 版本,系統會顯示紅色畫面。裝置無法繼續開機。如果使用者未在 30 秒內確認警告畫面,裝置就會關閉,以免螢幕出現燒屏現象並節省電力。
針對 hex-number,請使用用於驗證的公開金鑰的 libavb 表示法 SHA-256 的前 8 位數,例如 d14a028c
。
建議的文字:
找不到有效的作業系統,裝置無法啟動。
如要瞭解詳情,請在其他裝置上點選這個連結:
g.co/ABH
ID:hex-number
按下電源按鈕關機。
解鎖確認
範例畫面:

針對透過 fastboot 介面執行的 fastboot flashing unlock
指令,顯示解鎖確認畫面。焦點一開始會放在「不要解鎖」。如果使用者在 30 秒內未與警告畫面互動,畫面就會消失,指令也會失敗。
建議的文字:
如果你解鎖系統啟動載入程式,就可以在手機上安裝自訂作業系統軟體。自訂作業系統並未接受與原始作業系統相同程度的測試,因此可能會導致手機和已安裝的應用程式停止正常運作。使用自訂 OS 無法保證軟體完整性,因此系統啟動載入程式解鎖時,手機上的資料可能會有風險。
為避免未經授權存取個人資料,解鎖系統啟動載入程式也會刪除手機上的所有個人資料。
按下調高/調低音量鍵,選取是否要解鎖 Bootloader,然後按下電源鍵繼續。
解鎖
解鎖系統啟動載入程式。
不解鎖
請勿解鎖系統啟動載入程式,並重新啟動手機。
鎖定確認
針對透過 fastboot 介面執行的 fastboot flashing
lock
指令,顯示鎖定確認畫面。焦距一開始會設為「不鎖定」。如果使用者在 30 秒內未與警告畫面互動,畫面就會消失,指令也會失敗。
文字:
如果鎖定系統啟動載入程式,就無法在這支手機上安裝自訂作業系統軟體。為防止他人未經授權存取您的個人資料,鎖定系統啟動載入程式也會刪除手機上的所有個人資料。
按下調高/調低音量鍵,選取是否要鎖定 Bootloader,然後按下電源鍵繼續。
鎖定
鎖定系統啟動載入程式。
不鎖定
不要鎖定系統啟動載入程式,並重新啟動手機。
向 Android 傳達驗證開機程序狀態
範例畫面:

啟動載入程式會透過核心指令參數,或從 Android 12 開始透過 bootconfig,將驗證啟動狀態傳送至 Android。將 androidboot.verifiedbootstate
選項設為下列其中一個值:
green
:如果裝置為LOCKED
,且未使用使用者可設定的信任根yellow
:如果裝置是LOCKED
,且使用可由使用者設定的信任根orange
:如果裝置為UNLOCKED
androidboot.veritymode
選項會設為 eio
或 restart
,取決於啟動載入程式在處理 dm-verity 錯誤時的狀態。詳情請參閱「處理驗證錯誤」。