forked from openkylin/platform_build
Allow addition of recovery DTBO to recovery image
Non-A/B devices need to include the DTBO image within the recovery partition to be self-sufficient and prevent OTA failures. Test: Ran 'm dist' and verified that the DTBO image was included in recovery.img using unpack_bootimg. Also ran 'make' and verified that the DTBO image was included in recovery.img using unpack_bootimg. Also tested that aosp_angler-userdebug could boot into recovery(including a fake dtbo.img in recovery image). Bug: 74763691 Change-Id: I38c9c395c95d21f4da42cfa646063bd4416f6bd8
This commit is contained in:
parent
3cf75cf2bb
commit
e74a38bc6d
|
@ -1278,11 +1278,15 @@ endif
|
||||||
# (BOARD_USES_RECOVERY_AS_BOOT = true);
|
# (BOARD_USES_RECOVERY_AS_BOOT = true);
|
||||||
# c) We build the root into system image - not needing the resource file as we do bsdiff
|
# c) We build the root into system image - not needing the resource file as we do bsdiff
|
||||||
# (BOARD_BUILD_SYSTEM_ROOT_IMAGE = true).
|
# (BOARD_BUILD_SYSTEM_ROOT_IMAGE = true).
|
||||||
|
# d) We include the recovery DTBO image within recovery - not needing the resource file as we
|
||||||
|
# do bsdiff because boot and recovery will contain different number of entries
|
||||||
|
# (BOARD_INCLUDE_RECOVERY_DTBO = true).
|
||||||
# Note that condition b) implies condition c), because of the earlier check in this file:
|
# Note that condition b) implies condition c), because of the earlier check in this file:
|
||||||
# "BOARD_USES_RECOVERY_AS_BOOT = true must have BOARD_BUILD_SYSTEM_ROOT_IMAGE = true" (not vice
|
# "BOARD_USES_RECOVERY_AS_BOOT = true must have BOARD_BUILD_SYSTEM_ROOT_IMAGE = true" (not vice
|
||||||
# versa though).
|
# versa though).
|
||||||
|
|
||||||
ifeq (,$(filter true, $(BOARD_USES_FULL_RECOVERY_IMAGE) $(BOARD_BUILD_SYSTEM_ROOT_IMAGE)))
|
ifeq (,$(filter true, $(BOARD_USES_FULL_RECOVERY_IMAGE) $(BOARD_BUILD_SYSTEM_ROOT_IMAGE) \
|
||||||
|
$(BOARD_INCLUDE_RECOVERY_DTBO)))
|
||||||
# Named '.dat' so we don't attempt to use imgdiff for patching it.
|
# Named '.dat' so we don't attempt to use imgdiff for patching it.
|
||||||
RECOVERY_RESOURCE_ZIP := $(TARGET_OUT)/etc/recovery-resource.dat
|
RECOVERY_RESOURCE_ZIP := $(TARGET_OUT)/etc/recovery-resource.dat
|
||||||
else
|
else
|
||||||
|
@ -1304,6 +1308,9 @@ endif
|
||||||
ifdef BOARD_KERNEL_PAGESIZE
|
ifdef BOARD_KERNEL_PAGESIZE
|
||||||
INTERNAL_RECOVERYIMAGE_ARGS += --pagesize $(BOARD_KERNEL_PAGESIZE)
|
INTERNAL_RECOVERYIMAGE_ARGS += --pagesize $(BOARD_KERNEL_PAGESIZE)
|
||||||
endif
|
endif
|
||||||
|
ifdef BOARD_INCLUDE_RECOVERY_DTBO
|
||||||
|
INTERNAL_RECOVERYIMAGE_ARGS += --recovery_dtbo $(BOARD_PREBUILT_DTBOIMAGE)
|
||||||
|
endif
|
||||||
|
|
||||||
# Keys authorized to sign OTA packages this build will accept. The
|
# Keys authorized to sign OTA packages this build will accept. The
|
||||||
# build always uses dev-keys for this; release packaging tools will
|
# build always uses dev-keys for this; release packaging tools will
|
||||||
|
@ -1569,7 +1576,7 @@ SYSTEMIMAGE_SOURCE_DIR := $(TARGET_OUT)
|
||||||
# image size check calculation.
|
# image size check calculation.
|
||||||
ifneq ($(INSTALLED_RECOVERYIMAGE_TARGET),)
|
ifneq ($(INSTALLED_RECOVERYIMAGE_TARGET),)
|
||||||
ifneq ($(BOARD_USES_FULL_RECOVERY_IMAGE),true)
|
ifneq ($(BOARD_USES_FULL_RECOVERY_IMAGE),true)
|
||||||
ifeq ($(BOARD_BUILD_SYSTEM_ROOT_IMAGE),true)
|
ifneq (,$(filter true, $(BOARD_BUILD_SYSTEM_ROOT_IMAGE) $(BOARD_INCLUDE_RECOVERY_DTBO)))
|
||||||
diff_tool := $(HOST_OUT_EXECUTABLES)/bsdiff
|
diff_tool := $(HOST_OUT_EXECUTABLES)/bsdiff
|
||||||
else
|
else
|
||||||
diff_tool := $(HOST_OUT_EXECUTABLES)/imgdiff
|
diff_tool := $(HOST_OUT_EXECUTABLES)/imgdiff
|
||||||
|
@ -2550,6 +2557,9 @@ endif
|
||||||
ifdef INSTALLED_2NDBOOTLOADER_TARGET
|
ifdef INSTALLED_2NDBOOTLOADER_TARGET
|
||||||
$(hide) cp $(INSTALLED_2NDBOOTLOADER_TARGET) $(zip_root)/$(PRIVATE_RECOVERY_OUT)/second
|
$(hide) cp $(INSTALLED_2NDBOOTLOADER_TARGET) $(zip_root)/$(PRIVATE_RECOVERY_OUT)/second
|
||||||
endif
|
endif
|
||||||
|
ifdef BOARD_INCLUDE_RECOVERY_DTBO
|
||||||
|
$(hide) cp $(INSTALLED_DTBOIMAGE_TARGET) $(zip_root)/$(PRIVATE_RECOVERY_OUT)/recovery_dtbo
|
||||||
|
endif
|
||||||
ifdef INTERNAL_KERNEL_CMDLINE
|
ifdef INTERNAL_KERNEL_CMDLINE
|
||||||
$(hide) echo "$(INTERNAL_KERNEL_CMDLINE)" > $(zip_root)/$(PRIVATE_RECOVERY_OUT)/cmdline
|
$(hide) echo "$(INTERNAL_KERNEL_CMDLINE)" > $(zip_root)/$(PRIVATE_RECOVERY_OUT)/cmdline
|
||||||
endif
|
endif
|
||||||
|
@ -2641,6 +2651,9 @@ endif
|
||||||
ifeq ($(INSTALLED_RECOVERYIMAGE_TARGET),)
|
ifeq ($(INSTALLED_RECOVERYIMAGE_TARGET),)
|
||||||
$(hide) echo "no_recovery=true" >> $(zip_root)/META/misc_info.txt
|
$(hide) echo "no_recovery=true" >> $(zip_root)/META/misc_info.txt
|
||||||
endif
|
endif
|
||||||
|
ifdef BOARD_INCLUDE_RECOVERY_DTBO
|
||||||
|
$(hide) echo "include_recovery_dtbo=true" >> $(zip_root)/META/misc_info.txt
|
||||||
|
endif
|
||||||
ifdef BOARD_RECOVERYIMAGE_PARTITION_SIZE
|
ifdef BOARD_RECOVERYIMAGE_PARTITION_SIZE
|
||||||
$(hide) echo "recovery_size=$(BOARD_RECOVERYIMAGE_PARTITION_SIZE)" >> $(zip_root)/META/misc_info.txt
|
$(hide) echo "recovery_size=$(BOARD_RECOVERYIMAGE_PARTITION_SIZE)" >> $(zip_root)/META/misc_info.txt
|
||||||
endif
|
endif
|
||||||
|
|
|
@ -461,6 +461,11 @@ def _BuildBootableImage(sourcedir, fs_config_file, info_dict=None,
|
||||||
# "boot" or "recovery", without extension.
|
# "boot" or "recovery", without extension.
|
||||||
partition_name = os.path.basename(sourcedir).lower()
|
partition_name = os.path.basename(sourcedir).lower()
|
||||||
|
|
||||||
|
if (partition_name == "recovery" and
|
||||||
|
info_dict.get("include_recovery_dtbo") == "true"):
|
||||||
|
fn = os.path.join(sourcedir, "recovery_dtbo")
|
||||||
|
cmd.extend(["--recovery_dtbo", fn])
|
||||||
|
|
||||||
p = Run(cmd, stdout=subprocess.PIPE)
|
p = Run(cmd, stdout=subprocess.PIPE)
|
||||||
p.communicate()
|
p.communicate()
|
||||||
assert p.returncode == 0, "mkbootimg of %s image failed" % (partition_name,)
|
assert p.returncode == 0, "mkbootimg of %s image failed" % (partition_name,)
|
||||||
|
|
Loading…
Reference in New Issue