From 0dd976e6a6035b8358172193709b3ab8149e6b65 Mon Sep 17 00:00:00 2001 From: Sam Protsenko Date: Fri, 2 Aug 2019 19:25:52 +0300 Subject: Enable A/B As boot_control HAL is now implemented for AM57x, we can enable A/B updates. Slotted partitions are specified in AB_OTA_PARTITIONS. Related changes should be implemented in bootloader (partition table). See [0] for implementation details. Next changes are made w.r.t. boot flow: - system is mounted as root, so "skip_initramfs" must be added to kernel cmdline when normal boot is requested - recovery image is not built, so recovery partition can be deleted (in partition table and in fstab) - ramdisk in boot.img contains recovery functionality and should be booted when recovery boot is requested (without "skip_initramfs" parameter in kernel cmdline) - for partitions specified in AB_OTA_PARTITIONS there should be two versions in partition table: with "_a" and "_b" suffixes [0] https://source.android.com/devices/tech/ota/ab/ab_implement Change-Id: I265c8b79c1772c57172b0a5f0094d21d5e4fa86b Signed-off-by: Sam Protsenko --- BoardConfig.mk | 16 ++++++++++++++++ device.mk | 10 ++++++++++ fstab.beagle_x15board_v4 | 1 + fstab.beagle_x15board_v5 | 1 + 4 files changed, 28 insertions(+) diff --git a/BoardConfig.mk b/BoardConfig.mk index 5904014..af7c3a2 100644 --- a/BoardConfig.mk +++ b/BoardConfig.mk @@ -53,7 +53,11 @@ TARGET_BOOTLOADER_BOARD_NAME := beagle_x15board TARGET_BOARD_PLATFORM := am57x TARGET_COPY_OUT_VENDOR := vendor +TARGET_NO_RECOVERY := true TARGET_RECOVERY_FSTAB := device/ti/beagle_x15/$(TARGET_FSTAB) +BOARD_USES_RECOVERY_AS_BOOT := true +BOARD_BUILD_SYSTEM_ROOT_IMAGE := true + TARGET_RECOVERY_PIXEL_FORMAT := "BGRA_8888" TARGET_RECOVERY_UI_LIB := librecovery_ui_beagle_x15 TARGET_RELEASETOOLS_EXTENSIONS := device/ti/beagle_x15 @@ -95,3 +99,15 @@ BOARD_AVB_ENABLE := true BOARD_INCLUDE_DTB_IN_BOOTIMG := true BOARD_PREBUILT_DTBIMAGE_DIR := $(DTB_DIR) BOARD_MKBOOTIMG_ARGS := --header_version 2 + +# Board uses A/B OTA. +AB_OTA_UPDATER := true +# A/B updater updatable partitions list. Keep in sync with the partition list +# with "_a" and "_b" variants in the device. Note that the vendor can add more +# partitions to this list for the bootloader and radio. +AB_OTA_PARTITIONS += \ + boot \ + system \ + vbmeta \ + dtbo \ + vendor diff --git a/device.mk b/device.mk index 6e56ea4..b473121 100644 --- a/device.mk +++ b/device.mk @@ -178,3 +178,13 @@ PRODUCT_PACKAGES += \ PRODUCT_PACKAGES_DEBUG += \ bootctl \ fastbootd \ +# A/B +PRODUCT_PACKAGES += \ + update_engine \ + update_verifier + +PRODUCT_PACKAGES += \ + update_engine_sideload + +PRODUCT_PACKAGES_DEBUG += \ + update_engine_client diff --git a/fstab.beagle_x15board_v4 b/fstab.beagle_x15board_v4 index 505e652..5e6549c 100644 --- a/fstab.beagle_x15board_v4 +++ b/fstab.beagle_x15board_v4 @@ -4,6 +4,7 @@ # specify 'check', and must come before any filesystems that do specify 'check' # +/dev/block/platform/44000000.ocp/480b4000.mmc/by-name/system / ext4 ro,barrier=1 wait,slotselect /dev/block/platform/44000000.ocp/480b4000.mmc/by-name/userdata /data ext4 noatime,nosuid,nodev wait,check,quota /dev/block/platform/44000000.ocp/480b4000.mmc/by-name/recovery /recovery emmc defaults defaults /dev/block/platform/44000000.ocp/480b4000.mmc/by-name/boot /boot emmc defaults defaults diff --git a/fstab.beagle_x15board_v5 b/fstab.beagle_x15board_v5 index 8b8ab10..b3dd7d1 100644 --- a/fstab.beagle_x15board_v5 +++ b/fstab.beagle_x15board_v5 @@ -4,6 +4,7 @@ # specify 'check', and must come before any filesystems that do specify 'check' # +/dev/block/platform/44000000.ocp/48000000.interconnect/48000000.interconnect:segment@0/480b4000.target-module/480b4000.mmc/by-name/system / ext4 ro,barrier=1 wait,slotselect /dev/block/platform/44000000.ocp/48000000.interconnect/48000000.interconnect:segment@0/480b4000.target-module/480b4000.mmc/by-name/userdata /data ext4 noatime,nosuid,nodev wait,check,quota /dev/block/platform/44000000.ocp/48000000.interconnect/48000000.interconnect:segment@0/480b4000.target-module/480b4000.mmc/by-name/recovery /recovery emmc defaults defaults /dev/block/platform/44000000.ocp/48000000.interconnect/48000000.interconnect:segment@0/480b4000.target-module/480b4000.mmc/by-name/boot /boot emmc defaults defaults -- cgit v1.2.3