From 0b97d2b20ac30a85cd13a0a985b26ca1cd62e142 Mon Sep 17 00:00:00 2001 From: Devin Moore Date: Fri, 14 Jan 2022 22:21:43 +0000 Subject: [PATCH] Build init_boot for new devices Builds a new init_boot.img with the ramdisk that was previously in boot.img. Removes the ramdisk from boot.img. Change fstab to make sure the /dev/block/by-name/init_boot_* entries are created in first stage init for Verified Boot. Add init_boot.img to the list of OTA images so it is picked up for OTA updates. Test: unpack_bootimg --boot_img=boot.img Test: unpack_bootimg --boot_img=init_boot.img Test: Build and boot new device with required bootloader changes Bug: 211823573 Change-Id: Idbd700b17d862f48ea568d1274a6550b965763ea --- BoardConfig-common.mk | 13 +++++++++++++ conf/fstab.gs201.in | 1 + 2 files changed, 14 insertions(+) diff --git a/BoardConfig-common.mk b/BoardConfig-common.mk index ce8d71b1..d5e67aca 100644 --- a/BoardConfig-common.mk +++ b/BoardConfig-common.mk @@ -67,6 +67,9 @@ AB_OTA_PARTITIONS += \ ifneq ($(PRODUCT_BUILD_BOOT_IMAGE),false) AB_OTA_PARTITIONS += boot endif +ifneq ($(PRODUCT_BUILD_INIT_BOOT_IMAGE), false) +AB_OTA_PARTITIONS += init_boot +endif ifneq ($(PRODUCT_BUILD_VENDOR_BOOT_IMAGE),false) AB_OTA_PARTITIONS += vendor_boot AB_OTA_PARTITIONS += dtbo @@ -136,6 +139,12 @@ BOARD_AVB_BOOT_ALGORITHM := SHA256_RSA2048 BOARD_AVB_BOOT_ROLLBACK_INDEX := $(PLATFORM_SECURITY_PATCH_TIMESTAMP) BOARD_AVB_BOOT_ROLLBACK_INDEX_LOCATION := 2 +# Enable chained vbmeta for init_boot images +BOARD_AVB_INIT_BOOT_KEY_PATH := external/avb/test/data/testkey_rsa2048.pem +BOARD_AVB_INIT_BOOT_ALGORITHM := SHA256_RSA2048 +BOARD_AVB_INIT_BOOT_ROLLBACK_INDEX := $(PLATFORM_SECURITY_PATCH_TIMESTAMP) +BOARD_AVB_INIT_BOOT_ROLLBACK_INDEX_LOCATION := 4 + TARGET_USERIMAGES_USE_EXT4 := true TARGET_USERIMAGES_USE_F2FS := true BOARD_USERDATAIMAGE_PARTITION_SIZE := 11796480000 @@ -328,12 +337,16 @@ BOARD_RAMDISK_USE_LZ4 := true BOARD_BOOT_HEADER_VERSION := 4 BOARD_MKBOOTIMG_ARGS += --header_version $(BOARD_BOOT_HEADER_VERSION) +BOARD_INIT_BOOT_HEADER_VERSION := 4 +BOARD_MKBOOTIMG_INIT_ARGS += --header_version $(BOARD_INIT_BOOT_HEADER_VERSION) + BOARD_VENDOR_RAMDISK_FRAGMENTS := dlkm BOARD_VENDOR_RAMDISK_FRAGMENT.dlkm.KERNEL_MODULE_DIRS := top # Enable AVB2.0 BOARD_AVB_ENABLE := true BOARD_BOOTIMAGE_PARTITION_SIZE := 0x04000000 +BOARD_INIT_BOOT_IMAGE_PARTITION_SIZE := 0x800000 BOARD_VENDOR_BOOTIMAGE_PARTITION_SIZE := 0x04000000 BOARD_DTBOIMG_PARTITION_SIZE := 0x01000000 diff --git a/conf/fstab.gs201.in b/conf/fstab.gs201.in index a3cdfe0a..242813ec 100644 --- a/conf/fstab.gs201.in +++ b/conf/fstab.gs201.in @@ -12,6 +12,7 @@ product /product vendor /vendor erofs ro wait,slotselect,avb=vbmeta_vendor,logical,first_stage_mount,readahead_size_kb=128 vendor_dlkm /vendor_dlkm erofs ro wait,slotselect,avb=vbmeta,logical,first_stage_mount /dev/block/platform/14700000.ufs/by-name/boot /boot emmc defaults slotselect,avb=boot,first_stage_mount +/dev/block/platform/14700000.ufs/by-name/init_boot /init_boot emmc defaults slotselect,avb=init_boot,first_stage_mount /dev/block/platform/14700000.ufs/by-name/efs /mnt/vendor/efs f2fs noatime,sync wait,check,formattable /dev/block/platform/14700000.ufs/by-name/efs_backup /mnt/vendor/efs_backup f2fs noatime,sync wait,check,formattable /dev/block/platform/14700000.ufs/by-name/modem_userdata /mnt/vendor/modem_userdata f2fs noatime,sync wait,check,formattable