Reland: Moving GSI-specific files to system_ext

Only common files can reside in system partition, other files
should be moved to the newly added system_ext partition.

Note that for GSI, it will be a single system.img that includes the
contents of product and system_ext partitions, under /system/product
and /system/system_ext, respectively. After moving skip_mount.cfg to
system_ext partition, it also needs a symlink file under system
partition:

  /system/etc/init/config -> /system/system_ext/etc/init/config

This allows Q-launched first-stage init (in /boot partition) continue
to use the same path when new GSI image is used.

Bug: 138281441
Test: build aosp_arm64-userdebug and boot it on crosshatch
Test: rm -rf out && build/soong/soong_ui.bash --make-mode \
      TARGET_PRODUCT=aosp_arm64 TARGET_BUILD_VARIANT=userdebug droid
Change-Id: Iae9f5fb688f49497563864eb882d5f0ae33c744a
This commit is contained in:
Bowgo Tsai 2019-08-15 18:44:28 +08:00
parent 414108c6c1
commit ac3c65b7bb
5 changed files with 45 additions and 16 deletions

View File

@ -655,6 +655,10 @@ $(call add-clean-step, rm -rf $(OUT_DIR)/target/product/generic*/*system_ext*)
$(call add-clean-step, rm -rf $(OUT_DIR)/target/product/generic*/*/product)
$(call add-clean-step, rm -rf $(OUT_DIR)/target/product/generic*/*/system_ext)
# Move GSI-specific files from /system to /system/system_ext
$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/etc/init/init.gsi.rc)
$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/etc/init/config/)
# ************************************************
# NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST
# ************************************************

View File

@ -169,3 +169,38 @@ _binder32 :=
include $(BUILD_PHONY_PACKAGE)
endif # BOARD_VNDK_VERSION is set
#####################################################################
# skip_mount.cfg, read by init to skip mounting some partitions when GSI is used.
include $(CLEAR_VARS)
LOCAL_MODULE := gsi_skip_mount.cfg
LOCAL_MODULE_STEM := skip_mount.cfg
LOCAL_SRC_FILES := $(LOCAL_MODULE)
LOCAL_MODULE_CLASS := ETC
LOCAL_SYSTEM_EXT_MODULE := true
LOCAL_MODULE_RELATIVE_PATH := init/config
# Adds a symlink under /system/etc/init/config pointing to /system/system_ext/etc/init/config
# because first-stage init in Android 10.0 will read the skip_mount.cfg from /system/etc/* after
# chroot /system.
# TODO: remove this symlink when no need to support new GSI on Android 10.
# The actual file needs to be under /system/system_ext because it's GSI-specific and does not
# belong to core CSI.
LOCAL_POST_INSTALL_CMD := \
mkdir -p $(TARGET_OUT)/etc/init; \
ln -sf /system/system_ext/etc/init/config $(TARGET_OUT)/etc/init/config
include $(BUILD_PREBUILT)
#####################################################################
# init.gsi.rc, GSI-specific init script.
include $(CLEAR_VARS)
LOCAL_MODULE := init.gsi.rc
LOCAL_SRC_FILES := $(LOCAL_MODULE)
LOCAL_MODULE_CLASS := ETC
LOCAL_SYSTEM_EXT_MODULE := true
LOCAL_MODULE_RELATIVE_PATH := init
include $(BUILD_PREBUILT)

View File

@ -50,11 +50,6 @@ PRODUCT_ARTIFACT_PATH_REQUIREMENT_WHITELIST += \
# Some GSI builds enable dexpreopt, whitelist these preopt files
PRODUCT_ARTIFACT_PATH_REQUIREMENT_WHITELIST += %.odex %.vdex %.art
# Exclude GSI specific files
PRODUCT_ARTIFACT_PATH_REQUIREMENT_WHITELIST += \
system/etc/init/config/skip_mount.cfg \
system/etc/init/init.gsi.rc \
# Exclude all files under system/product and system/system_ext
PRODUCT_ARTIFACT_PATH_REQUIREMENT_WHITELIST += \
system/product/% \
@ -71,9 +66,9 @@ PRODUCT_USE_DYNAMIC_PARTITION_SIZE := true
PRODUCT_COMPATIBLE_PROPERTY_OVERRIDE := true
# GSI specific tasks on boot
PRODUCT_COPY_FILES += \
build/make/target/product/gsi/skip_mount.cfg:system/etc/init/config/skip_mount.cfg \
build/make/target/product/gsi/init.gsi.rc:system/etc/init/init.gsi.rc \
PRODUCT_PACKAGES += \
gsi_skip_mount.cfg \
init.gsi.rc
# Support addtional P vendor interface
PRODUCT_EXTRA_VNDK_VERSIONS := 28

View File

@ -24,11 +24,6 @@
# - etc.
#
# Exclude GSI specific files
PRODUCT_ARTIFACT_PATH_REQUIREMENT_WHITELIST += \
system/etc/init/config/skip_mount.cfg \
system/etc/init/init.gsi.rc \
# Exclude all files under system/product and system/system_ext
PRODUCT_ARTIFACT_PATH_REQUIREMENT_WHITELIST += \
system/product/% \
@ -50,9 +45,9 @@ PRODUCT_USE_DYNAMIC_PARTITION_SIZE := true
PRODUCT_COMPATIBLE_PROPERTY_OVERRIDE := true
# GSI specific tasks on boot
PRODUCT_COPY_FILES += \
build/make/target/product/gsi/skip_mount.cfg:system/etc/init/config/skip_mount.cfg \
build/make/target/product/gsi/init.gsi.rc:system/etc/init/init.gsi.rc \
PRODUCT_PACKAGES += \
gsi_skip_mount.cfg \
init.gsi.rc
# Support addtional P VNDK packages
PRODUCT_EXTRA_VNDK_VERSIONS := 28