啟動流程

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

驗證開機程序流程

圖 1. 驗證開機程序流程。

A/B 裝置的流程

如果裝置使用 A/B,啟動流程會稍有不同。必須先使用 Boot Control HAL 將要啟動的插槽標示為 SUCCESSFUL才能更新回溯保護中繼資料。

如果平台更新失敗 (未標示 SUCCESSFUL),A/B 堆疊會回復到另一個插槽,其中仍有先前的 Android 版本。不過,如果已設定復原保護機制中繼資料,由於復原保護機制,先前的版本無法啟動。

向使用者說明驗證開機程序狀態

判斷裝置的啟動狀態後,您需要將該狀態告知使用者。如果裝置沒有任何問題,請繼續操作,不要顯示任何內容。已驗證啟動問題可分為以下幾類:

  • 黃色:警告畫面,適用於設定自訂信任根的已鎖定裝置
  • 橘色:未解鎖裝置的警告畫面
  • 紅色 (eio):dm-verity 損毀的警告畫面
  • 紅色 (找不到 OS):找不到有效的 OS

搭載自訂信任根的 LOCKED 裝置

黃色裝置警告畫面
圖 2:黃色畫面示例

如果裝置已鎖定、已設定自訂信任根,且映像檔已使用這個自訂信任根簽署,則每次開機時都會顯示黃色畫面。黃色畫面會在十秒後消失,裝置會繼續啟動。如果使用者按下電源鍵,「按下電源鍵即可暫停」文字會變更為「按下電源鍵即可繼續」,且畫面不會關閉 (但裝置可能會調暗或關閉螢幕,以防螢幕烙印)。再次按下按鈕後,畫面會關閉,手機會繼續啟動。

對於 hex-number,請使用用於驗證的公開金鑰 libavb 代表項目的前 8 位數 sha256,例如 d14a028c

建議文字:

裝置已載入其他作業系統。

如要瞭解詳情,請在其他裝置上點選這個連結:

g.co/ABH

ID:hex-number

按下電源鍵即可暫停

已解鎖的裝置

橘色裝置警告畫面
圖 3:橘色畫面範例

如果裝置已解鎖,每次啟動時都會顯示橘色畫面。橘色畫面會在十秒後消失,裝置會繼續啟動。如果使用者按下電源鍵,「按下電源鍵即可暫停」文字會變更為「按下電源鍵即可繼續」,且螢幕不會關閉 (裝置可能會調暗及/或關閉螢幕,以防螢幕烙印或類似情況)。如果再次按下,畫面就會關閉,手機會繼續啟動。

對於 hex-number,請使用用於驗證的公開金鑰 libavb 代表項目的 sha256 前 8 位數,例如 d14a028c

建議文字:

本裝置的系統啟動載入程式已解鎖,因此我們目前無法保證軟體完整性。Any data stored on the device may be available to attackers. 請勿將私密資料儲存在裝置上。

如要瞭解詳情,請在其他裝置上點選這個連結:

g.co/ABH

ID:hex-number

按下電源鍵可暫停。

dm-verity 損毀

紅色 eio 裝置警告畫面
圖 4:紅色 eio 畫面範例

如果找到有效的 Android 版本,且裝置目前處於 eio dm-verity 模式,請顯示紅色 eio 畫面。使用者必須點選電源按鈕才能繼續。如果使用者在 30 秒內未確認警告畫面,裝置就會關機 (保護螢幕免於烙印並節省電力)。

建議文字:

裝置已損壞。這類憑證無法信任,且可能無法正常運作。

如要瞭解詳情,請在其他裝置上點選這個連結:

g.co/ABH

按下電源鍵繼續。

找不到有效的作業系統

紅色裝置損毀警告畫面
圖 5:紅色畫面範例

如果找不到有效的 Android 版本,系統會顯示紅色畫面。裝置無法繼續啟動。如果使用者在 30 秒內未確認警告畫面,裝置就會關機,避免螢幕烙印並節省電力。

對於 hex-number,請使用用於驗證的公開金鑰 libavb 代表項目的前 8 位數 sha256,例如 d14a028c

建議文字:

找不到有效的作業系統。裝置無法開機。

如要瞭解詳情,請在其他裝置上點選這個連結:

g.co/ABH

ID:hex-number

按下電源鍵關機。

確認解鎖

解鎖裝置警告畫面
圖 6:解鎖確認畫面範例

在透過 Fastboot 介面執行 fastboot flashing unlock 指令後,顯示解鎖確認畫面。焦點一開始會放在「不要解鎖」。如果使用者在 30 秒內未與警告畫面互動,該畫面就會消失,且指令會失敗。

建議文字:

解鎖啟動載入程式後,即可在這部手機上安裝自訂作業系統軟體。自訂作業系統的測試程度不如原廠作業系統,可能會導致手機和已安裝的應用程式無法正常運作。自訂 OS 無法保證軟體完整性,且系統啟動載入程式解鎖時,手機上的資料可能會有風險。

為防止未經授權存取個人資料,解鎖系統啟動載入程式時,系統也會刪除手機上的所有個人資料。

按下調高音量/調低音量鍵,選取是否要解鎖開機載入程式,然後按下電源鍵繼續操作。

解鎖

解鎖系統啟動載入程式。

不要解鎖

不要解鎖系統啟動載入程式,然後重新啟動手機。

確認鎖定

透過 Fastboot 介面執行 fastboot flashing lock 指令時,顯示鎖定確認畫面。焦點一開始會放在「不要鎖定」上。如果使用者在 30 秒內未與警告畫面互動,畫面就會消失,且指令會失敗。

文字:

鎖定系統啟動載入程式後,您就無法在這部手機上安裝自訂作業系統軟體。為防止未經授權存取您的個人資料,鎖定系統啟動載入程式也會刪除手機上的所有個人資料。

按下調高音量/調低音量鍵,選取是否要鎖定開機載入程式,然後按下電源鍵繼續操作。

鎖定

鎖定系統啟動載入程式。

不要鎖定

不要鎖定系統啟動載入程式並重新啟動手機。

向 Android 傳達驗證開機程序狀態

LOCK 確認裝置警告畫面
圖 7:鎖定確認裝置警告畫面

系統啟動載入程式會透過核心指令參數,或從 Android 12 開始透過 bootconfig,將驗證開機狀態傳達給 Android。並將 androidboot.verifiedbootstate 選項設為下列其中一個值:

  • green:如果裝置為 LOCKED,且未使用使用者可設定的信任根
  • yellow:如果裝置是 LOCKED,且使用可由使用者設定的信任根
  • orange:如果裝置為 UNLOCKED

androidboot.veritymode 選項會設為 eiorestart,視啟動載入程式處理 dm-verity 錯誤的狀態而定。詳情請參閱「處理驗證錯誤」。