Aktualizacje partycji OEM A/B

SDV umożliwia aktualizacje A/B niestandardowej partycji /oem_ab. Użyj biblioteki aktualizatora OEM AB, aby aktywować i wycofywać aktualizacje niestandardowej partycji /oem_ab, korzystając z funkcji podobnych do aktualizacji A/B systemu Android.

Przykładowy kod implementacji biblioteki aktualizatora A/B OEM znajdziesz w pliku system/software_defined_vehicle/samples/oem_partition_update_client.

Przewodnik opisuje, jak używać biblioteki OEM AB Updater i integrować ją z własną implementacją usługi aktualizacji. W tym przewodniku zakładamy, że do tworzenia i testowania zmian używasz Cuttlefish.

Lokalizacja biblioteki

Biblioteka aktualizatora A/B OEM znajduje się w katalogu system/software_defined_vehicle/platform/oem.

Tworzenie wymaganych obrazów niestandardowych

Biblioteka aktualizatora AB OEM wymaga kilku obrazów niestandardowych. Te obrazy są zdefiniowane w plikach device/google/sdv/sdv_core_base/oem_ab/oem_ab.mk i device/google/sdv/sdv_core_base/oem_ab/oem_ab_metadata.mk.

Wymagane obrazy niestandardowe zdefiniowane w oem_ab.mk i oem_ab_metadata.mk są tworzone podczas kompilowania celu. Na przykład kompilacja sdv_core_cf tworzy obrazy partycji:

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

Określanie niestandardowych urządzeń blokowych

Sprawdź, czy urządzenie docelowe Cuttlefish lunch ustawia BOARD_BOOTCONFIG, aby mapować urządzenia blokowe na odpowiednią właściwość bootconfig. Zobacz na przykład 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

Uruchamianie nowej maszyny wirtualnej

Po sprawdzeniu, czy urządzenia blokowe są zmapowane, utwórz nową maszynę wirtualną z 3 obrazami niestandardowymi:

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

Używanie biblioteki OEM AB Updater w nowej usłudze

Aby użyć biblioteki w innej usłudze:

  1. Zaimportuj crate sdv_oem_updater::OemUpdater, jak pokazano w system/software_defined_vehicle/samples/oem_partition_update_client/oem_partition_client.rs.

  2. Utwórz nową zasadę .te podobną do zasad SELinux zdefiniowanych w device/google/sdv/sdv_core_cf/sepolicy/product/private/oem_partition_client.te.