Atualizações de partição AB do OEM

O SDV permite atualizações A/B para a partição /oem_ab personalizada. Use a biblioteca do atualizador AB do OEM para acionar e reverter atualizações da partição /oem_ab personalizada, com recursos semelhantes às atualizações A/B do sistema Android.

Confira o exemplo de código para uma implementação da biblioteca do atualizador AB do OEM em system/software_defined_vehicle/samples/oem_partition_update_client.

O guia descreve como usar a biblioteca do OEM AB Updater e integrá-la à sua própria implementação do serviço de atualização. Neste guia, pressupomos que você esteja usando o Cuttlefish para criar e testar suas mudanças.

Local da biblioteca

A biblioteca do atualizador AB do OEM está no diretório system/software_defined_vehicle/platform/oem.

Criar as imagens personalizadas necessárias

A biblioteca do atualizador AB do OEM requer várias imagens personalizadas. Essas imagens são definidas em device/google/sdv/sdv_core_base/oem_ab/oem_ab.mk e device/google/sdv/sdv_core_base/oem_ab/oem_ab_metadata.mk.

As imagens personalizadas necessárias definidas em oem_ab.mk e oem_ab_metadata.mk são criadas quando o destino é criado. Por exemplo, a criação de sdv_core_cf gera as imagens de partição:

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

Especificar dispositivos de transferência por blocos personalizados

Verifique se o destino lunch do Cuttlefish define BOARD_BOOTCONFIG para mapear os dispositivos em bloco para a propriedade bootconfig correspondente. Por exemplo, consulte 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

Iniciar uma nova VM

Depois de verificar se os dispositivos de transferência por blocos estão mapeados, crie uma VM com as três imagens personalizadas:

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

Usar a biblioteca do atualizador AB do OEM em um novo serviço

Para usar a biblioteca em outro serviço:

  1. Importe o crate sdv_oem_updater::OemUpdater conforme demonstrado em system/software_defined_vehicle/samples/oem_partition_update_client/oem_partition_client.rs.

  2. Crie uma nova política .te semelhante às políticas do SELinux definidas em device/google/sdv/sdv_core_cf/sepolicy/product/private/oem_partition_client.te.