Обновления раздела A/B OEM

SDV позволяет использовать A/B-обновления для пользовательского раздела /oem_ab. Используйте библиотеку OEM AB Updater, чтобы запускать и откатывать обновления для пользовательского раздела /oem_ab. Ее возможности аналогичны A/B-обновлениям системы Android.

См. образец кода для реализации библиотеки OEM AB Updater в файле system/software_defined_vehicle/samples/oem_partition_update_client.

В этом руководстве описывается, как использовать библиотеку OEM AB Updater и интегрировать ее с собственной реализацией службы обновления. В этом руководстве предполагается, что вы используете Cuttlefish для создания и тестирования изменений.

Местоположение библиотеки

Библиотека OEM AB Updater находится в каталоге system/software_defined_vehicle/platform/oem.

Создайте необходимые пользовательские образы

Для библиотеки OEM AB Updater требуется несколько пользовательских образов. Эти изображения определены в device/google/sdv/sdv_core_base/oem_ab/oem_ab.mk и device/google/sdv/sdv_core_base/oem_ab/oem_ab_metadata.mk.

Обязательные пользовательские образы, определенные в oem_ab.mk и oem_ab_metadata.mk, создаются при сборке цели. Например, при сборке sdv_core_cf создаются следующие образы разделов:

source build/envsetup.sh
lunch sdv_core_cf-aosp_current-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

Запустить новую ВМ

Убедившись, что блочные устройства сопоставлены, создайте новую виртуальную машину с тремя пользовательскими образами:

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

Используйте библиотеку OEM AB Updater в новом сервисе

Чтобы использовать библиотеку в другом сервисе:

  1. Импортируйте крейт sdv_oem_updater::OemUpdater, как показано в system/software_defined_vehicle/samples/oem_partition_update_client/oem_partition_client.rs.

  2. Создайте новое правило .te, похожее на правила SELinux, определенные в device/google/sdv/sdv_core_cf/sepolicy/product/private/oem_partition_client.te.