การอัปเดตพาร์ติชัน A/B ของ OEM

SDV ช่วยให้สามารถอัปเดต A/B สำหรับพาร์ติชัน /oem_ab ที่กำหนดเองได้ ใช้ไลบรารี OEM AB Updater เพื่อทริกเกอร์และย้อนกลับการอัปเดตสำหรับพาร์ติชัน /oem_ab ที่กำหนดเอง โดยมีความสามารถคล้ายกับการอัปเดต A/B ของระบบ Android

ดูโค้ดตัวอย่างสำหรับการติดตั้งใช้งานไลบรารี AB Updater ของ OEM ใน 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

เริ่ม VM ใหม่

หลังจากยืนยันว่าแมปอุปกรณ์จัดเก็บบล็อกข้อมูลแล้ว ให้สร้าง VM ใหม่ด้วยอิมเมจที่กำหนดเอง 3 รายการดังนี้

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