Merge "AndroidBoot: Change to detect build system flag for system as root."
diff --git a/AndroidBoot.mk b/AndroidBoot.mk
index fe3608f..eab4f85 100644
--- a/AndroidBoot.mk
+++ b/AndroidBoot.mk
@@ -51,6 +51,12 @@
VERIFIED_BOOT_2 := VERIFIED_BOOT_2=0
endif
+ifeq ($(BOARD_BUILD_SYSTEM_ROOT_IMAGE),true)
+ TARGET_USE_SYSTEM_AS_ROOT_IMAGE := TARGET_USE_SYSTEM_AS_ROOT_IMAGE=1
+else
+ TARGET_USE_SYSTEM_AS_ROOT_IMAGE := TARGET_USE_SYSTEM_AS_ROOT_IMAGE=0
+endif
+
ifeq ($(EARLY_MOUNT_SUPPORT),true)
ENABLE_BOOTDEVICE_MOUNT := ENABLE_BOOTDEVICE_MOUNT=1
else
@@ -113,7 +119,7 @@
# ELF binary for ABOOT
TARGET_ABOOT_ELF := $(PRODUCT_OUT)/aboot.elf
$(TARGET_ABOOT_ELF): ABOOT_CLEAN | $(ABOOT_OUT)
- $(MAKE) -C $(LK_PATH) TOOLCHAIN_PREFIX=$(CROSS_COMPILE) BOOTLOADER_OUT=$(CROOT_DIR)/$(ABOOT_OUT) $(BOOTLOADER_PLATFORM) $(EMMC_BOOT) $(SIGNED_KERNEL) $(VERIFIED_BOOT) $(VERIFIED_BOOT_2) $(ENABLE_DISPLAY) $(ENABLE_KASLRSEED) $(ENABLE_BOOTDEVICE_MOUNT) $(DEVICE_STATUS) $(BUILD_VARIANT) $(BOARD_NAME) $(ENABLE_VB_ATTEST) $(OSVERSION_IN_BOOTIMAGE) $(QSEECOM_SECAPP_REGION_2MB)
+ $(MAKE) -C $(LK_PATH) TOOLCHAIN_PREFIX=$(CROSS_COMPILE) BOOTLOADER_OUT=$(CROOT_DIR)/$(ABOOT_OUT) $(BOOTLOADER_PLATFORM) $(EMMC_BOOT) $(SIGNED_KERNEL) $(VERIFIED_BOOT) $(VERIFIED_BOOT_2) $(ENABLE_DISPLAY) $(ENABLE_KASLRSEED) $(ENABLE_BOOTDEVICE_MOUNT) $(DEVICE_STATUS) $(BUILD_VARIANT) $(BOARD_NAME) $(ENABLE_VB_ATTEST) $(OSVERSION_IN_BOOTIMAGE) $(QSEECOM_SECAPP_REGION_2MB) $(TARGET_USE_SYSTEM_AS_ROOT_IMAGE)
# NAND variant output
TARGET_NAND_BOOTLOADER := $(PRODUCT_OUT)/appsboot.mbn
@@ -142,7 +148,7 @@
# Top level for eMMC variant targets
$(TARGET_EMMC_BOOTLOADER): emmc_appsbootldr_clean | $(EMMC_BOOTLOADER_OUT) $(INSTALLED_KEYSTOREIMAGE_TARGET)
- $(MAKE) -C $(LK_PATH) TOOLCHAIN_PREFIX=$(CROSS_COMPILE) BOOTLOADER_OUT=$(CROOT_DIR)/$(EMMC_BOOTLOADER_OUT) $(BOOTLOADER_PLATFORM) EMMC_BOOT=1 $(SIGNED_KERNEL) $(VERIFIED_BOOT) $(VERIFIED_BOOT_2) $(ENABLE_DISPLAY) $(ENABLE_KASLRSEED) $(ENABLE_BOOTDEVICE_MOUNT) $(DEVICE_STATUS) $(BUILD_VARIANT) $(BOARD_NAME) $(ENABLE_VB_ATTEST) $(OSVERSION_IN_BOOTIMAGE) $(ENABLE_BG_SUPPORT) $(QSEECOM_SECAPP_REGION_2MB)
+ $(MAKE) -C $(LK_PATH) TOOLCHAIN_PREFIX=$(CROSS_COMPILE) BOOTLOADER_OUT=$(CROOT_DIR)/$(EMMC_BOOTLOADER_OUT) $(BOOTLOADER_PLATFORM) EMMC_BOOT=1 $(SIGNED_KERNEL) $(VERIFIED_BOOT) $(VERIFIED_BOOT_2) $(ENABLE_DISPLAY) $(ENABLE_KASLRSEED) $(ENABLE_BOOTDEVICE_MOUNT) $(DEVICE_STATUS) $(BUILD_VARIANT) $(BOARD_NAME) $(ENABLE_VB_ATTEST) $(OSVERSION_IN_BOOTIMAGE) $(ENABLE_BG_SUPPORT) $(QSEECOM_SECAPP_REGION_2MB) $(TARGET_USE_SYSTEM_AS_ROOT_IMAGE)
# Keep build NAND & eMMC as default for targets still using TARGET_BOOTLOADER
TARGET_BOOTLOADER := $(PRODUCT_OUT)/EMMCBOOT.MBN
diff --git a/app/aboot/aboot.c b/app/aboot/aboot.c
index 27fb60d..cae7181 100644
--- a/app/aboot/aboot.c
+++ b/app/aboot/aboot.c
@@ -204,7 +204,7 @@
static const char *verity_system_part = " dm=\"system";
static const char *verity_params = " none ro,0 1 android-verity /dev/mmcblk0p";
#else
-static const char *sys_path = " root=/dev/mmcblk0p";
+static const char *sys_path = " root=/dev/mmcblk0p";
#endif
#if VERIFIED_BOOT
@@ -561,7 +561,8 @@
cmdline_len += strlen(warmboot_cmdline);
}
- if (partition_multislot_is_supported())
+ if (target_uses_system_as_root() ||
+ partition_multislot_is_supported())
{
current_active_slot = partition_find_active_slot();
cmdline_len += (strlen(androidboot_slot_suffix)+
@@ -600,10 +601,15 @@
partition_get_index_in_lun("system", lun));
}
- cmdline_len += strlen(sys_path_cmdline);
#ifndef VERIFIED_BOOT_2
cmdline_len += strlen(syspath_buf);
#endif
+ }
+
+ if (target_uses_system_as_root() ||
+ partition_multislot_is_supported())
+ {
+ cmdline_len += strlen(sys_path_cmdline);
if (!boot_into_recovery)
cmdline_len += strlen(skip_ramfs);
}
@@ -842,22 +848,34 @@
--dst;
src = SUFFIX_SLOT(current_active_slot);
while ((*dst++ = *src++));
+ }
- if (!boot_into_recovery)
- {
- src = skip_ramfs;
- --dst;
- while ((*dst++ = *src++));
- }
- src = sys_path_cmdline;
+ /*
+ * System-As-Root behaviour, system.img should contain both
+ * system content and ramdisk content, and should be mounted at
+ * root(a/b).
+ * Apending skip_ramfs for non a/b builds which use, system as root.
+ */
+ if ((target_uses_system_as_root() ||
+ partition_multislot_is_supported()) &&
+ have_cmdline)
+ {
+ if (!boot_into_recovery)
+ {
+ src = skip_ramfs;
--dst;
while ((*dst++ = *src++));
+ }
+
+ src = sys_path_cmdline;
+ --dst;
+ while ((*dst++ = *src++));
#ifndef VERIFIED_BOOT_2
- src = syspath_buf;
- --dst;
- while ((*dst++ = *src++));
+ src = syspath_buf;
+ --dst;
+ while ((*dst++ = *src++));
#endif
}
diff --git a/makefile b/makefile
index 7810c1e..fb5f8ad 100644
--- a/makefile
+++ b/makefile
@@ -162,6 +162,12 @@
DEFINES += ENABLE_KASLRSEED_SUPPORT=0
endif
+ifeq ($(TARGET_USE_SYSTEM_AS_ROOT_IMAGE),1)
+ DEFINES += TARGET_USE_SYSTEM_AS_ROOT_IMAGE=1
+else
+ DEFINES += TARGET_USE_SYSTEM_AS_ROOT_IMAGE=0
+endif
+
# these need to be filled out by the project/target/platform rules.mk files
TARGET :=
PLATFORM :=