Google は、黒人コミュニティに対する人種平等の促進に取り組んでいます。取り組みを見る
このページは Cloud Translation API によって翻訳されました。
Switch to English

回復画像

非A / Bデバイスの場合、リカバリイメージには、デバイスツリーブロブ(DTB)またはAdvanced Configuration and Power Interface(ACPI)オーバーレイイメージからの情報が含まれている必要があります。このようなデバイスがリカバリで起動すると、ブートローダーはリカバリイメージと互換性のあるオーバーレイイメージをロードできます。 A / B(シームレス)アップデートをサポートするデバイスは、個別のリカバリパーティションではなく、ブートとしてリカバリを使用する必要があります(詳細については、 A / Bアップデートの実装を参照してください)。

ブート/リカバリイメージの一部としてリカバリDTBO / ACPIOを含めるためのオプションは、Androidリリース間で異なります。

リリーススキームの更新GKIコンプライアンスブートヘッダーバージョン(デバイスの起動)ブートヘッダーバージョン(デバイスのアップグレード)専用のリカバリイメージが必要です
11 A / B、
仮想A / B
はい3 *該当なし番号
A / B、
仮想A / B
番号2、3 0、1、2、3番号
非A / Bはい3該当なしはい
非A / B番号2、3 0、1、2、3はい
10(Q) A / B該当なし2 0、1、2番号
非A / B該当なし2 0、1、2はい
9(P) A / B該当なし1 0、1番号
非A / B該当なし1 0、1はい
8(O) A / B該当なし該当なし(0と見なされます) N / A(0と見なされます)番号
非A / B該当なしN / A(0と見なされます)該当なし(0と見なされます)はい

* Android11以降を実行していてGenericKernel Image(GKI)を使用しているA / Bデバイスは、ベンダーのブートパーティションと互換性を持たせるためにプライマリブートヘッダーバージョン3を使用する必要があります。

キーポイント:

  • A / B更新は2セットのパーティション( bootdtboを含む)を使用し、更新中にそれらを切り替えるため、A / Bデバイスはリカバリイメージを指定する必要がなく、リカバリイメージが不要になります。必要に応じて、A / Bデバイスは引き続き専用のリカバリイメージを使用できます。

  • Android 11以降で起動し、ブートヘッダーバージョン3を使用する非A / Bデバイスは、リカバリイメージ用にブートヘッダーバージョン2/2を個別に明示的に指定する必要があります。例えば:

    BOARD_RECOVERY_MKBOOTIMG_ARGS := --header_version 2
    
  • デバイスツリーをサポートしないアーキテクチャの場合、リカバリイメージにDTBOイメージの代わりにACPIOイメージを含めることができます。

OTA障害とリカバリイメージについて

非A / Bデバイスでの無線(OTA)障害を防ぐために、リカバリイメージは自給自足であり、他のイメージから独立している必要があります。 OTAの更新中に、オーバーレイイメージが更新された後(ただし、完全な更新が完了する前)に問題が発生した場合、デバイスはリカバリモードで起動してOTAの更新を完了しようとします。ただし、オーバーレイパーティションはすでに更新されているため、リカバリイメージ(まだ更新されていない)との不一致が発生する可能性があります。

更新中にリカバリがDTBO / ACPIOパーティションに依存しないようにするために、Android9以降を実行している非A / Bデバイスは、オーバーレイイメージからの情報を含むリカバリDTBO / ACPIOイメージを、ブートイメージ形式の個別のセクションとして指定できます( 1または2のブートヘッダーバージョンを使用する必要があります)。

ブートイメージの変更

Android9以降を実行している非A / BデバイスでリカバリイメージにリカバリDTBOまたはACPIOを含めることができるようにするには、ブートイメージの構造を次のように更新します。

ブートイメージセクションページ数
ブートヘッダー(1ページ) 1
カーネル(lページ) l =( kernel_size + page_size -1)/ page_size
RAMディスク(mページ) m =( ramdisk_size + page_size -1)/ page_size
第2段階のブートローダー(nページ) n =( second_size + page_size -1)/ page_size
リカバリDTBOまたはACPIO(oページ) o =( recovery_[dtbo|acpio]_size + page_size -1)/ page_size

ブートイメージヘッダーバージョンとオーバーレイイメージパスを指定するためのmkbootimgツール引数の詳細については、ブートイメージヘッダーのバージョン管理を参照してください。

DTBOの実装

9以上を実行している非A / Bデバイスは、リカバリイメージのrecovery_dtboセクションにデータを取り込むことができます。デバイスBoardConfig.mk recovery.imgrecovery_dtboイメージを含めるには:

  • 構成BOARD_INCLUDE_RECOVERY_DTBOtrue設定しtrue

     BOARD_INCLUDE_RECOVERY_DTBO := true
    
  • BOARD_MKBOOTIMG_ARGS変数を拡張して、ブートイメージヘッダーのバージョンを指定します。

    BOARD_MKBOOTIMG_ARGS := --ramdisk_offset $(BOARD_RAMDISK_OFFSET) --tags_offset $(BOARD_KERNEL_TAGS_OFFSET) --header_version $(BOARD_BOOTIMG_HEADER_VERSION)
    
  • BOARD_PREBUILT_DTBOIMAGE変数がDTBOイメージのパスに設定されていることを確認します。 Androidビルドシステムは、変数を使用して、リカバリイメージの作成中にmkbootimgツールのrecovery_dtbo引数を設定します。

場合BOARD_INCLUDE_RECOVERY_DTBOBOARD_MKBOOTIMG_ARGS 、およびBOARD_PREBUILT_DTBOIMAGE変数が正しく設定されている、AndroidのビルドシステムはDTBOがで指定された含まれBOARD_PREBUILT_DTBOIMAGE中で変数recovery.img

ACPIOの実装

Android9以降を実行している非A / Bデバイスは、(DTBOイメージの代わりに)ACPIOオーバーレイイメージを使用でき、リカバリイメージの( recovery_acpioセクションの代わりに) recovery_dtboセクションにデータを入力できます。デバイスBoardConfig.mk recovery.imgrecovery_acpioイメージを含めるには:

  • 構成BOARD_INCLUDE_RECOVERY_ACPIOtrue設定しtrue

    BOARD_INCLUDE_RECOVERY_ACPIO := true
    
  • BOARD_MKBOOTIMG_ARGS変数を拡張して、ブートイメージヘッダーのバージョンを指定します。リカバリーACPIOをサポートするには、変数は1以上である必要があります。

    BOARD_MKBOOTIMG_ARGS += --header_version $(BOARD_BOOTIMG_HEADER_VERSION)
    
  • BOARD_RECOVERY_ACPIO変数がACPIOイメージのパスに設定されていることを確認します。 Androidビルドシステムは、変数を使用して、リカバリイメージの作成中にmkbootimgツールのrecovery_acpio引数を設定します。

場合BOARD_INCLUDE_RECOVERY_ACPIOBOARD_MKBOOTIMG_ARGS 、およびBOARD_RECOVERY_ACPIO変数が正しく設定されている、AndroidのビルドシステムはACPIOがで指定された含まれBOARD_RECOVERY_ACPIO中で変数recovery.img