推薦的設備引導流程如下:
![驗證啟動流程](https://source.android.com/static/security/images/verified-boot-flow.png?authuser=8&hl=zh-tw)
A/B 設備的流程
如果設備使用 A/B,則引導流程略有不同。在更新回滾保護元數據之前,必須首先使用引導控制 HAL將要引導的插槽標記為SUCCESSFUL
。
如果平台更新失敗(未標記為SUCCESSFUL
),則 A/B 堆棧會退回到另一個插槽,其中仍然包含以前版本的 Android。但是,如果設置了回滾保護元數據,則以前的版本由於回滾保護而無法啟動。
向用戶傳達驗證啟動狀態
在確定設備的啟動狀態後,您需要將該狀態傳達給用戶。如果設備沒有任何問題,則繼續進行而不顯示任何內容。已驗證的引導問題分為以下幾類:
- 黃色:具有自定義信任根集的鎖定設備的警告屏幕
- 橙色:解鎖設備的警告屏幕
- RED (eio):dm-verity 損壞的警告屏幕
- 紅色(未找到操作系統):未找到有效操作系統
具有自定義信任根的鎖定設備
黃色屏幕示例:
![黃色設備警告屏幕](https://source.android.com/static/security/images/boot_yellow1.png?authuser=8&hl=zh-tw)
如果設備已鎖定、已設置自定義信任根且映像已使用此自定義信任根簽名,則在每次啟動時顯示黃色屏幕。十秒後黃色屏幕消失,設備繼續啟動。如果用戶按下電源按鈕,“Press power button to pause”文本將變為“Press power button to continue”,並且屏幕永遠不會關閉,儘管設備可能會變暗或關閉屏幕以防止老化)。如果再次按下,屏幕將關閉,手機繼續啟動。
對於hex-number ,使用用於驗證的公鑰的 libavb 表示的 sha256 的前 8 位數字,例如d14a028c
。
建議文字:
您的設備加載了不同的操作系統。
在另一台設備上訪問此鏈接以了解更多信息:
g.co/ABH
ID: hex-number
按電源按鈕暫停
解鎖設備
橙色屏幕示例:
![橙色設備警告屏幕](https://source.android.com/static/security/images/boot_orange.png?authuser=8&hl=zh-tw)
如果設備已解鎖,則在每次啟動時顯示橙色屏幕。十秒後橙色屏幕消失,設備繼續啟動。如果用戶按下電源按鈕,“Press power button to pause”文本將變為“Press power button to continue”,並且屏幕永遠不會關閉(如果需要防止燒毀,設備可能會變暗和/或關閉屏幕-在或類似)。如果再次按下,屏幕將關閉,手機繼續啟動。
對於hex-number ,使用用於驗證的公鑰的 libavb 表示的 sha256 的前 8 位數字,例如d14a028c
。
建議文字:
引導加載程序已解鎖,無法保證軟件完整性。存儲在設備上的任何數據都可能可供攻擊者使用。不要在設備上存儲任何敏感數據。
在另一台設備上訪問此鏈接以了解更多信息:
g.co/ABH
ID: hex-number
按電源按鈕暫停。
dm-verity 腐敗
RED eio 屏幕示例:
![紅色 eio 設備警告屏幕](https://source.android.com/static/security/images/boot_red1.png?authuser=8&hl=zh-tw)
如果找到有效的 Android 版本並且設備當前處於eio
dm-verity 模式,則顯示 RED eio
屏幕。用戶需要單擊電源按鈕才能繼續。如果用戶在 30 秒內未確認警告屏幕,設備將關閉電源(以防止屏幕燒屏並節省電量)。
建議文字:
您的設備已損壞。它不能被信任並且可能無法正常工作。
在另一台設備上訪問此鏈接以了解更多信息:
g.co/ABH
按電源按鈕繼續。
找不到有效的操作系統
示例 RED 屏幕:
![紅色損壞設備警告屏幕](https://source.android.com/static/security/images/boot_red2.png?authuser=8&hl=zh-tw)
如果找不到有效的 Android 版本,則會顯示紅色屏幕。設備無法繼續引導。如果用戶在 30 秒內未確認警告屏幕,設備將關閉電源以保護屏幕免受燒屏並節省電量)。
對於hex-number ,使用用於驗證的公鑰的 libavb 表示的 sha256 的前 8 位數字,例如d14a028c
。
建議文字:
找不到有效的操作系統。設備將無法啟動。
在另一台設備上訪問此鏈接以了解更多信息:
g.co/ABH
ID: hex-number
按電源按鈕關閉電源。
解鎖確認
示例屏幕:
![解鎖設備警告屏幕](https://source.android.com/static/security/images/unlock-confirmation.png?authuser=8&hl=zh-tw)
響應通過 fastboot 界面執行的fastboot flashing unlock
命令顯示解鎖確認屏幕。焦點最初是不要解鎖。如果用戶在 30 秒內沒有與警告屏幕進行交互,則屏幕消失並且命令失敗。
建議文字:
如果您解鎖引導加載程序,您將能夠在此手機上安裝自定義操作系統軟件。自定義操作系統與原始操作系統的測試級別不同,可能會導致您的手機和已安裝的應用程序停止正常工作。自定義操作系統無法保證軟件完整性,因此在引導加載程序解鎖時存儲在手機上的任何數據都可能存在風險。
為防止未經授權訪問您的個人數據,解鎖引導加載程序還將刪除您手機上的所有個人數據。
按音量上/音量下選擇是否解鎖引導加載程序,然後按電源按鈕繼續。
開鎖
解鎖引導加載程序。
不要解鎖
不要解鎖引導加載程序並重新啟動手機。
鎖定確認
顯示鎖定確認屏幕以響應通過 fastboot 界面執行的fastboot flashing lock
命令。重點最初是Don't lock 。如果用戶在 30 秒內沒有與警告屏幕進行交互,則屏幕消失並且命令失敗。
文本:
如果鎖定引導加載程序,您將無法在此手機上安裝自定義操作系統軟件。為防止未經授權訪問您的個人數據,鎖定引導加載程序還將刪除您手機上的所有個人數據。
按音量上/音量下選擇是否鎖定引導加載程序,然後按電源按鈕繼續。
鎖
鎖定引導加載程序。
不要鎖定
不要鎖定引導加載程序並重新啟動手機。
將已驗證的啟動狀態傳達給 Android
示例屏幕:
![LOCK確認裝置警告畫面](https://source.android.com/static/security/images/lock-confirmation.png?authuser=8&hl=zh-tw)
引導加載程序通過內核命令參數或從 Android 12 開始通過 bootconfig 將 Verified Boot 狀態傳達給 Android。它將androidboot.verifiedstate
選項設置為以下值之一:
-
green
:如果設備已LOCKED
且未使用用戶可設置的信任根 yellow
:如果設備已LOCKED
並且使用了用戶可設置的信任根orange
:如果設備已UNLOCKED
androidboot.veritymode
選項設置為eio
或restart
取決於引導加載程序在處理 dm-verity 錯誤方面所處的狀態。有關更多詳細信息,請參閱處理驗證錯誤。