OEM AB パーティションのアップデート

SDV では、カスタムの /oem_ab パーティションの A/B アップデートが有効になります。OEM AB Updater ライブラリを使用して、カスタムの /oem_ab パーティションのアップデートをトリガーし、ロールバックします。Android システムの A/B アップデートと同様の機能を使用できます。

OEM AB Updater ライブラリの実装のサンプルコードについては、system/software_defined_vehicle/samples/oem_partition_update_client をご覧ください。

このガイドでは、OEM AB Updater ライブラリの使用方法と、独自の Updater サービス実装との統合方法について説明します。このガイドでは、 Cuttlefish を使用して変更をビルドしてテストすることを前提としています。

ライブラリの場所

OEM AB Updater ライブラリは、system/software_defined_vehicle/platform/oem ディレクトリにあります。

必要なカスタム イメージをビルドする

OEM AB Updater ライブラリには、いくつかのカスタム イメージが必要です。これらのイメージは、device/google/sdv/sdv_core_base/oem_ab/oem_ab.mkdevice/google/sdv/sdv_core_base/oem_ab/oem_ab_metadata.mk で定義されています。

oem_ab.mkoem_ab_metadata.mk で定義されている必要なカスタム イメージは、ターゲットのビルド時に作成されます。たとえば、sdv_core_cf をビルドすると、次のパーティション イメージが作成されます。

source build/envsetup.sh
lunch sdv_core_cf-trunk_staging-userdebug
m

カスタム ブロック デバイスを指定する

Cuttlefish の lunch ターゲットが BOARD_BOOTCONFIG を設定して、ブロック デバイスを対応する bootconfig プロパティにマッピングしていることを確認します。例については、device/google/sdv/sdv_core_cf/BoardConfig.mk をご覧ください。

BOARD_BOOTCONFIG += \
  androidboot.sdv.oem_slot_a_device=/dev/block/by-name/custom \
  androidboot.sdv.oem_slot_b_device=/dev/block/by-name/custom_1

新しい VM を起動する

ブロック デバイスがマッピングされていることを確認したら、3 つのカスタム イメージを使用して新しい VM を作成します。

cvd create --custom_partition_path="$OUT/oem_ab.img;$OUT/oem_ab.img;$OUT/oem_ab_metadata.img"

新しいサービスで OEM AB Updater ライブラリを使用する

別のサービスでライブラリを使用するには:

  1. system/software_defined_vehicle/samples/oem_partition_update_client/oem_partition_client.rs に示すように、sdv_oem_updater::OemUpdater クレートをインポートします。

. Create a newdevice/google/sdv/sdv_core_cf/sepolicy/product/private/oem_partition_client.tepolicy similar to the SELinux policies defined in で定義されている SELinux ポリシーと同様の `.te` ポリシーを新規作成します。