OEM AB 파티션 업데이트

SDV를 사용하면 커스텀 /oem_ab 파티션의 A/B 업데이트를 사용 설정할 수 있습니다. OEM AB Updater 라이브러리를 사용하여 Android 시스템 A/B 업데이트와 유사한 기능으로 커스텀 /oem_ab 파티션의 업데이트를 트리거하고 롤백합니다.

system/software_defined_vehicle/samples/oem_partition_update_client에서 OEM AB Updater 라이브러리 구현의 샘플 코드를 참고하세요.

이 가이드에서는 OEM AB Updater 라이브러리를 사용하고 자체 Updater Service 구현과 통합하는 방법을 설명합니다. 이 가이드에서는 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 시작

블록 기기가 매핑되었는지 확인한 후 세 개의 커스텀 이미지로 새 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 new.tepolicy similar to the SELinux policies defined indevice/google/sdv/sdv_core_cf/sepolicy/product/private/oem_partition_client.te`에 정의된 SELinux 정책과 유사한 새`.te`정책을 만듭니다.