Allow BOARD_USES_RECOVERY_AS_BOOT without BOARD_BUILD_SYSTEM_ROOT_IMAGE
The recovery image already contains a copy of first stage init, so we can boot unconditionally to the recovery image and instruct first stage init whether or not to boot to Android or to recovery. In this case, we need neither the kernel to mount /system as / nor a separate partition for recovery, so this change modifies the build scripts to allow this combination. Bug: 114062208 Test: Boot pixel from recovery to Android with BOARD_USES_RECOVERY_AS_BOOT But without BOARD_BUILD_SYSTEM_ROOT_IMAGE Change-Id: Icd047afb7f22d2724b3bcaca1aa0c837426dcce7
This commit is contained in:
@@ -847,13 +847,6 @@ INTERNAL_MKBOOTIMG_VERSION_ARGS := \
|
||||
--os_version $(PLATFORM_VERSION) \
|
||||
--os_patch_level $(PLATFORM_SECURITY_PATCH)
|
||||
|
||||
# BOARD_USES_RECOVERY_AS_BOOT = true must have BOARD_BUILD_SYSTEM_ROOT_IMAGE = true.
|
||||
ifeq ($(BOARD_USES_RECOVERY_AS_BOOT),true)
|
||||
ifneq ($(BOARD_BUILD_SYSTEM_ROOT_IMAGE),true)
|
||||
$(error BOARD_BUILD_SYSTEM_ROOT_IMAGE must be enabled for BOARD_USES_RECOVERY_AS_BOOT.)
|
||||
endif
|
||||
endif
|
||||
|
||||
# We build recovery as boot image if BOARD_USES_RECOVERY_AS_BOOT is true.
|
||||
ifneq ($(BOARD_USES_RECOVERY_AS_BOOT),true)
|
||||
ifeq ($(TARGET_BOOTIMAGE_USE_EXT2),true)
|
||||
@@ -1552,17 +1545,14 @@ endif
|
||||
# (BOARD_USES_FULL_RECOVERY_IMAGE = true);
|
||||
# b) We build a single image that contains boot and recovery both - no recovery image to install
|
||||
# (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 mount the system image as / and therefore do not have a ramdisk in boot.img
|
||||
# (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:
|
||||
# "BOARD_USES_RECOVERY_AS_BOOT = true must have BOARD_BUILD_SYSTEM_ROOT_IMAGE = true" (not vice
|
||||
# versa though).
|
||||
|
||||
ifeq (,$(filter true, $(BOARD_USES_FULL_RECOVERY_IMAGE) $(BOARD_BUILD_SYSTEM_ROOT_IMAGE) \
|
||||
$(BOARD_INCLUDE_RECOVERY_DTBO)))
|
||||
ifeq (,$(filter true, $(BOARD_USES_FULL_RECOVERY_IMAGE) $(BOARD_USES_RECOVERY_AS_BOOT) \
|
||||
$(BOARD_BUILD_SYSTEM_ROOT_IMAGE) $(BOARD_INCLUDE_RECOVERY_DTBO)))
|
||||
# Named '.dat' so we don't attempt to use imgdiff for patching it.
|
||||
RECOVERY_RESOURCE_ZIP := $(TARGET_OUT)/etc/recovery-resource.dat
|
||||
else
|
||||
@@ -3580,12 +3570,12 @@ ifdef BOARD_ODMIMAGE_FILE_SYSTEM_TYPE
|
||||
endif
|
||||
@# ROOT always contains the files for the root under normal boot.
|
||||
$(hide) $(call fs_config,$(zip_root)/ROOT,) > $(zip_root)/META/root_filesystem_config.txt
|
||||
ifeq ($(BOARD_BUILD_SYSTEM_ROOT_IMAGE),true)
|
||||
@# BOOT/RAMDISK exists only if additionally using BOARD_USES_RECOVERY_AS_BOOT.
|
||||
ifeq ($(BOARD_USES_RECOVERY_AS_BOOT),true)
|
||||
@# BOOT/RAMDISK exists and contains the ramdisk for recovery if using BOARD_USES_RECOVERY_AS_BOOT.
|
||||
$(hide) $(call fs_config,$(zip_root)/BOOT/RAMDISK,) > $(zip_root)/META/boot_filesystem_config.txt
|
||||
endif
|
||||
else # BOARD_BUILD_SYSTEM_ROOT_IMAGE != true
|
||||
ifneq ($(BOARD_BUILD_SYSTEM_ROOT_IMAGE),true)
|
||||
@# BOOT/RAMDISK also exists and contains the first stage ramdisk if not using BOARD_BUILD_SYSTEM_ROOT_IMAGE.
|
||||
$(hide) $(call fs_config,$(zip_root)/BOOT/RAMDISK,) > $(zip_root)/META/boot_filesystem_config.txt
|
||||
endif
|
||||
ifneq ($(INSTALLED_RECOVERYIMAGE_TARGET),)
|
||||
|
@@ -597,8 +597,7 @@ def ReplaceOtaKeys(input_tf_zip, output_tf_zip, misc_info):
|
||||
if p.returncode != 0:
|
||||
raise common.ExternalError("failed to run dumpkeys")
|
||||
|
||||
if (misc_info.get("system_root_image") == "true" and
|
||||
misc_info.get("recovery_as_boot") == "true"):
|
||||
if misc_info.get("recovery_as_boot") == "true":
|
||||
recovery_keys_location = "BOOT/RAMDISK/res/keys"
|
||||
else:
|
||||
recovery_keys_location = "RECOVERY/RAMDISK/res/keys"
|
||||
|
Reference in New Issue
Block a user