起動フロー

推奨されるデバイスの起動フローは次のとおりです。

確認付きブートのフロー
図 1. 確認付きブートのフロー

A/B デバイスのフロー

デバイスが A/B を使用している場合、起動フローは少し異なります。起動するスロットは、ロールバック保護メタデータが更新されるに、ブート コントロール HAL を使用して SUCCESSFUL とマークする必要があります。

プラットフォームの更新が失敗した場合(SUCCESSFUL とマークされていない場合)、A/B スタックは Android の以前のバージョンが残っている別のスロットにフォールバックしますが、ロールバック保護メタデータが設定されていると、ロールバック保護のために以前のバージョンを起動することができません。

確認付きブートの状態をユーザーに通知する

デバイスの起動状態を判断した後、その状態をユーザーに伝える必要があります。デバイスに問題がない場合は、何も表示せずに続行します。確認付きブートに関する問題は次のカテゴリに分類されます。

  • 黄色: カスタムのルート オブ トラスト セットを持つロックされたデバイスの警告画面
  • オレンジ色: ロック解除されたデバイスの警告画面
  • 赤色(eio): dm-verity 破損に関する警告画面
  • 赤色(OS が見つかりません): 有効な OS が見つからない

カスタムのルート オブ トラストを持つロックされたデバイス

黄色の画面の例:

黄色のデバイスの警告画面

デバイスがロック状態で、カスタムのルート オブ トラストが設定されており、イメージがこのカスタムのルート オブ トラストで署名されている場合は、黄色の画面が表示されます。黄色の画面は 10 秒後に閉じ、デバイスは起動を続けます。電源ボタンを押すと、テキスト「一時停止するには電源ボタンを押してください」が「続行するには電源ボタンを押してください」に変わります。デバイスの画面が閉じることはありませんが、焼き付きを防ぐために暗くなったり消えたりすることがあります。電源ボタンをもう一度押すと、画面は閉じますが、スマートフォンは起動を続けます。

hex-number には、確認に使用する libavb 表現の公開鍵の sha256 の最初の 8 桁(例: d14a028c)を使用します。

推奨テキスト:

デバイスが別のオペレーティング システムを読み込んでいます。

詳しくは、別のデバイスで次のリンクにアクセスしてご確認ください。

g.co/ABH

ID: hex-number

一時停止するには電源ボタンを押します

ロック解除されたデバイス

オレンジ色の画面の例:

オレンジ色のデバイスの警告画面

デバイスがロック解除されている場合、起動するたびにオレンジ色の画面が表示されます。オレンジ色の画面は 10 秒後に閉じ、デバイスは起動を続けます。電源ボタンを押すと、テキスト「一時停止するには電源ボタンを押してください」が「続行するには電源ボタンを押してください」に変わります。デバイスの画面が閉じることはありません(焼き付きなどを防ぐために必要に応じて、暗くなったり消えたりすることがあります)。電源ボタンをもう一度押すと、画面は閉じますが、スマートフォンは起動を続けます。

hex-number の場合、確認に使用する libavb 表現の公開鍵の sha256 の最初の 8 桁を使用します(d14a028c など)。

推奨テキスト:

ブートローダーがロック解除されていると、ソフトウェアの完全性は保証できません。デバイスに保存されているデータが攻撃者に読み取られる可能性があります。機密データはこのデバイスに保存しないでください。

詳しくは、別のデバイスで次のリンクにアクセスしてご確認ください。

g.co/ABH

ID: hex-number

一時停止するには電源ボタンを押します。

dm-verity の破損

赤色の eio 画面の例:

赤色の eio デバイスの警告画面

有効なバージョンの Android が見つかり、デバイスが現在 eio dm-verity モードの場合は、赤色の eio 画面が表示されます。続行するには、電源ボタンをクリックする必要があります。ユーザーが 30 秒以内に警告画面に同意しない場合、デバイスの電源がオフになります(画面の焼き付きを防ぎ、電力を節約するため)。

推奨テキスト:

デバイスが破損しています。デバイスは信頼できず、正常に動作しない可能性があります。

詳しくは、別のデバイスで次のリンクにアクセスしてご確認ください。

g.co/ABH

電源ボタンを押して続行します。

有効な OS が見つからない

赤色の画面の例:

デバイスの破損に関する赤色の警告画面

Android の有効なバージョンが見つからない場合は、赤色の画面が表示されます。デバイスの起動を続行できません。ユーザーが 30 秒以内に警告画面に同意しない場合、デバイスの電源がオフになります(画面の焼き付きを防ぎ、電力を節約するため)。

hex-number には、確認に使用する libavb 表現の公開鍵の sha256 の最初の 8 桁(例: d14a028c)を使用します。

推奨テキスト:

有効なオペレーティング システムが見つかりませんでした。デバイスを起動できません。

詳しくは、別のデバイスで次のリンクにアクセスしてご確認ください。

g.co/ABH

ID: hex-number

電源ボタンを押して電源をオフにします。

ロック解除の確認

画面の例:

デバイスのロック解除の警告画面

fastboot インターフェースを介して fastboot flashing unlock コマンドが実行されたことを示すロック解除の確認画面を表示します。最初はロック解除しないが選択されています。ユーザーが 30 秒以内に警告画面を操作しなかった場合、画面は表示されなくなり、コマンドは失敗します。

推奨テキスト:

ブートローダーのロックを解除すると、このスマートフォンにカスタム オペレーティング システム ソフトウェアをインストールできます。カスタム OS は、元の OS と同じテストの対象ではなく、お使いのスマートフォンやインストール済みのアプリケーションが正常に動作しなくなる可能性があります。ソフトウェアの完全性はカスタム OS で保証されないため、ブートローダーのロック解除中にスマートフォンに保存されているデータが失われる恐れがあります。

個人データへの不正なアクセスを防ぐため、ブートローダーのロックを解除すると、スマートフォンの個人データもすべて削除されます。

音量大 / 小ボタンを押してブートローダーのロックを解除するかどうかを選択し、電源ボタンを押して続行します。

ロック解除

ブートローダーのロックを解除します。

ロック解除しない

ブートローダーのロック解除およびスマートフォンの再起動を行いません。

ロックの確認

fastboot インターフェースを介して実行される fastboot flashing lock コマンドに対するロック確認画面を表示します。最初はロックしないが選択されています。ユーザーが 30 秒以内に警告画面を操作しなかった場合、画面は表示されなくなり、コマンドは失敗します。

テキスト:

ブートローダーをロックすると、このスマートフォンにカスタム オペレーティング システム ソフトウェアをインストールできなくなります。個人データへの不正なアクセスを防ぐため、ブートローダーをロックすると、スマートフォンの個人データもすべて削除されます。

音量大 / 小ボタンを押してブートローダーをロックするかどうかを選択し、電源ボタンを押して続行します。

ロック

ブートローダーをロックします。

ロックしない

ブートローダーのロックおよびスマートフォンの再起動を行いません。

確認付きブートの状態を Android に通知する

画面の例:

デバイスのロック確認の警告画面

ブートローダーは、カーネル コマンド パラメータまたは bootconfig(Android 12 以降)を使用して確認付きブートの状態を Android に通知します。androidboot.verifiedstate オプションを次のいずれかの値に設定します。

  • green: デバイスが LOCKED 状態で、ユーザー設定可能なルート オブ トラストが使用されていない場合
  • yellow: デバイスが LOCKED 状態で、ユーザー設定可能なルート オブ トラストが使用されている場合
  • orange: デバイスが UNLOCKED 状態の場合

androidboot.veritymode オプションは、dm-verity エラーの処理時のブートローダーの状態に応じて、eio または restart に設定されます。詳しくは、確認エラーの処理をご覧ください。