From b855c0c30400d84346561024e85c29dbe7758cb5 Mon Sep 17 00:00:00 2001 From: Bowgo Tsai Date: Fri, 17 Nov 2017 15:22:37 +0800 Subject: [PATCH] Reorder assert-max-image-size and AVB signing This change fixes the following warning message: WARNING: out/target/product/$(TARGET_DEVICE)/boot.img approaching \ size limit (33554432 now; limit 33554432) This is because AVB signing will increase boot.img to BOARD_BOOTIMAGE_PARTITION_SIZE, in order to place the AVB metadata at the end of the partition. We should check max image size first then use avbtool to sign it. The max allowed size will be (partition size - AVB_HASH_META_SIZE) when AVB is enabled. Bug: 69115400 Test: build and checks there is no size limit warning message Change-Id: If9545e64a0d1714a2ec2440f9bd38293e7b1ba9a --- core/Makefile | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/core/Makefile b/core/Makefile index 4ef0d895e..70ef989ed 100644 --- a/core/Makefile +++ b/core/Makefile @@ -671,7 +671,7 @@ else ifeq (true,$(BOARD_AVB_ENABLE)) # TARGET_BOOTIMAGE_USE_EXT2 != true $(INSTALLED_BOOTIMAGE_TARGET): $(MKBOOTIMG) $(AVBTOOL) $(INTERNAL_BOOTIMAGE_FILES) $(BOARD_AVB_BOOT_KEY_PATH) $(call pretty,"Target boot image: $@") $(hide) $(MKBOOTIMG) $(INTERNAL_BOOTIMAGE_ARGS) $(INTERNAL_MKBOOTIMG_VERSION_ARGS) $(BOARD_MKBOOTIMG_ARGS) --output $@ - $(hide) $(call assert-max-image-size,$@,$(BOARD_BOOTIMAGE_PARTITION_SIZE)) + $(hide) $(call assert-max-image-size,$@,$(BOARD_BOOTIMAGE_PARTITION_SIZE)-$(INTERNAL_AVB_HASH_META_SIZE)) $(hide) $(AVBTOOL) add_hash_footer \ --image $@ \ --partition_size $(BOARD_BOOTIMAGE_PARTITION_SIZE) \ @@ -682,7 +682,7 @@ $(INSTALLED_BOOTIMAGE_TARGET): $(MKBOOTIMG) $(AVBTOOL) $(INTERNAL_BOOTIMAGE_FILE bootimage-nodeps: $(MKBOOTIMG) $(AVBTOOL) $(BOARD_AVB_BOOT_KEY_PATH) @echo "make $@: ignoring dependencies" $(hide) $(MKBOOTIMG) $(INTERNAL_BOOTIMAGE_ARGS) $(INTERNAL_MKBOOTIMG_VERSION_ARGS) $(BOARD_MKBOOTIMG_ARGS) --output $(INSTALLED_BOOTIMAGE_TARGET) - $(hide) $(call assert-max-image-size,$(INSTALLED_BOOTIMAGE_TARGET),$(BOARD_BOOTIMAGE_PARTITION_SIZE)) + $(hide) $(call assert-max-image-size,$(INSTALLED_BOOTIMAGE_TARGET),$(BOARD_BOOTIMAGE_PARTITION_SIZE)-$(INTERNAL_AVB_HASH_META_SIZE)) $(hide) $(AVBTOOL) add_hash_footer \ --image $@ \ --partition_size $(BOARD_BOOTIMAGE_PARTITION_SIZE) \ @@ -969,6 +969,10 @@ endif ifeq ($(BOARD_AVB_ENABLE),true) INTERNAL_USERIMAGES_DEPS += $(AVBTOOL) +# The value must be equal to MAX_VBMETA_SIZE + MAX_FOOTER_SIZE in $(AVBTOOL). +INTERNAL_AVB_HASH_META_SIZE := 69632 +else +INTERNAL_AVB_HASH_META_SIZE := 0 endif ifneq (true,$(TARGET_USERIMAGES_SPARSE_SQUASHFS_DISABLED)) @@ -1273,15 +1277,15 @@ define build-recoveryimage-target ) $(if $(filter true,$(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_SUPPORTS_VBOOT)), \ $(VBOOT_SIGNER) $(FUTILITY) $(1).unsigned $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_VBOOT_SIGNING_KEY).vbpubk $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_VBOOT_SIGNING_KEY).vbprivk $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_VBOOT_SIGNING_SUBKEY).vbprivk $(1).keyblock $(1)) + $(if $(filter true,$(BOARD_USES_RECOVERY_AS_BOOT)), \ + $(hide) $(call assert-max-image-size,$(1),$(BOARD_BOOTIMAGE_PARTITION_SIZE)-$(INTERNAL_AVB_HASH_META_SIZE)), \ + $(hide) $(call assert-max-image-size,$(1),$(BOARD_RECOVERYIMAGE_PARTITION_SIZE)-$(INTERNAL_AVB_HASH_META_SIZE))) $(if $(and $(filter true,$(BOARD_USES_RECOVERY_AS_BOOT)),$(filter true,$(BOARD_AVB_ENABLE))), \ $(hide) $(AVBTOOL) add_hash_footer \ --image $(1) \ --partition_size $(BOARD_BOOTIMAGE_PARTITION_SIZE) \ --partition_name boot $(INTERNAL_AVB_BOOT_SIGNING_ARGS) \ $(BOARD_AVB_BOOT_ADD_HASH_FOOTER_ARGS)) - $(if $(filter true,$(BOARD_USES_RECOVERY_AS_BOOT)), \ - $(hide) $(call assert-max-image-size,$(1),$(BOARD_BOOTIMAGE_PARTITION_SIZE)), \ - $(hide) $(call assert-max-image-size,$(1),$(BOARD_RECOVERYIMAGE_PARTITION_SIZE))) endef ADBD := $(TARGET_OUT_EXECUTABLES)/adbd