Add build support for LZ4 ramdisks
Ramdisks are currently compressed using gzip, which is generally smaller, but slower to decompress than lz4. Provide an option for an lz4 scheme to reduce the time taken to unpack initramfs during boot. Bug: 156129966 Signed-off-by: J. Avila <elavila@google.com> Merged-In: Iac9538e6ee6ec51e6b487de2101f53bb5d9c54c8 Change-Id: Iac9538e6ee6ec51e6b487de2101f53bb5d9c54c8
This commit is contained in:
parent
270308af15
commit
9600ace371
|
@ -1121,16 +1121,27 @@ $(INSTALLED_FILES_FILE_RAMDISK) : $(INTERNAL_RAMDISK_FILES) $(FILESLIST) $(FILES
|
|||
$(call dist-for-goals, sdk win_sdk sdk_addon, $(INSTALLED_FILES_FILE_RAMDISK))
|
||||
BUILT_RAMDISK_TARGET := $(PRODUCT_OUT)/ramdisk.img
|
||||
|
||||
ifeq ($(BOARD_RAMDISK_USE_LZ4),true)
|
||||
# -l enables the legacy format used by the Linux kernel
|
||||
COMPRESSION_COMMAND_DEPS := $(LZ4)
|
||||
COMPRESSION_COMMAND := $(LZ4) -l -12 --favor-decSpeed
|
||||
RAMDISK_EXT := .lz4
|
||||
else
|
||||
COMPRESSION_COMMAND_DEPS := $(MINIGZIP)
|
||||
COMPRESSION_COMMAND := $(MINIGZIP)
|
||||
RAMDISK_EXT := .gz
|
||||
endif
|
||||
|
||||
# We just build this directly to the install location.
|
||||
INSTALLED_RAMDISK_TARGET := $(BUILT_RAMDISK_TARGET)
|
||||
$(INSTALLED_RAMDISK_TARGET): $(MKBOOTFS) $(INTERNAL_RAMDISK_FILES) $(INSTALLED_FILES_FILE_RAMDISK) | $(MINIGZIP)
|
||||
$(INSTALLED_RAMDISK_TARGET): $(MKBOOTFS) $(INTERNAL_RAMDISK_FILES) $(INSTALLED_FILES_FILE_RAMDISK) | $(COMPRESSION_COMMAND_DEPS)
|
||||
$(call pretty,"Target ram disk: $@")
|
||||
$(hide) $(MKBOOTFS) -d $(TARGET_OUT) $(TARGET_RAMDISK_OUT) | $(MINIGZIP) > $@
|
||||
$(hide) $(MKBOOTFS) -d $(TARGET_OUT) $(TARGET_RAMDISK_OUT) | $(COMPRESSION_COMMAND) > $@
|
||||
|
||||
.PHONY: ramdisk-nodeps
|
||||
ramdisk-nodeps: $(MKBOOTFS) | $(MINIGZIP)
|
||||
ramdisk-nodeps: $(MKBOOTFS) | $(COMPRESSION_COMMAND_DEPS)
|
||||
@echo "make $@: ignoring dependencies"
|
||||
$(hide) $(MKBOOTFS) -d $(TARGET_OUT) $(TARGET_RAMDISK_OUT) | $(MINIGZIP) > $(INSTALLED_RAMDISK_TARGET)
|
||||
$(hide) $(MKBOOTFS) -d $(TARGET_OUT) $(TARGET_RAMDISK_OUT) | $(COMPRESSION_COMMAND) > $(INSTALLED_RAMDISK_TARGET)
|
||||
|
||||
endif # BUILDING_RAMDISK_IMAGE
|
||||
|
||||
|
@ -1304,8 +1315,8 @@ INTERNAL_VENDOR_RAMDISK_FILES := $(filter $(TARGET_VENDOR_RAMDISK_OUT)/%, \
|
|||
$(ALL_DEFAULT_INSTALLED_MODULES))
|
||||
|
||||
INTERNAL_VENDOR_RAMDISK_TARGET := $(call intermediates-dir-for,PACKAGING,vendor-boot)/vendor-ramdisk.cpio.gz
|
||||
$(INTERNAL_VENDOR_RAMDISK_TARGET): $(MKBOOTFS) $(INTERNAL_VENDOR_RAMDISK_FILES) | $(MINIGZIP)
|
||||
$(MKBOOTFS) -d $(TARGET_OUT) $(TARGET_VENDOR_RAMDISK_OUT) | $(MINIGZIP) > $@
|
||||
$(INTERNAL_VENDOR_RAMDISK_TARGET): $(MKBOOTFS) $(INTERNAL_VENDOR_RAMDISK_FILES) | $(COMPRESSION_COMMAND_DEPS)
|
||||
$(MKBOOTFS) -d $(TARGET_OUT) $(TARGET_VENDOR_RAMDISK_OUT) | $(COMPRESSION_COMMAND) > $@
|
||||
|
||||
ifdef BOARD_INCLUDE_DTB_IN_BOOTIMG
|
||||
INTERNAL_VENDOR_BOOTIMAGE_ARGS += --dtb $(INSTALLED_DTBIMAGE_TARGET)
|
||||
|
@ -2146,7 +2157,7 @@ ifndef BOARD_RECOVERY_MKBOOTIMG_ARGS
|
|||
BOARD_RECOVERY_MKBOOTIMG_ARGS := $(BOARD_MKBOOTIMG_ARGS)
|
||||
endif
|
||||
|
||||
$(recovery_ramdisk): $(MKBOOTFS) $(MINIGZIP) \
|
||||
$(recovery_ramdisk): $(MKBOOTFS) $(COMPRESSION_COMMAND_DEPS) \
|
||||
$(INTERNAL_ROOT_FILES) \
|
||||
$(INSTALLED_RAMDISK_TARGET) \
|
||||
$(INTERNAL_RECOVERYIMAGE_FILES) \
|
||||
|
@ -2181,7 +2192,7 @@ $(recovery_ramdisk): $(MKBOOTFS) $(MINIGZIP) \
|
|||
cp -f $(recovery_wipe) $(TARGET_RECOVERY_ROOT_OUT)/system/etc/recovery.wipe)
|
||||
ln -sf prop.default $(TARGET_RECOVERY_ROOT_OUT)/default.prop
|
||||
$(BOARD_RECOVERY_IMAGE_PREPARE)
|
||||
$(MKBOOTFS) -d $(TARGET_OUT) $(TARGET_RECOVERY_ROOT_OUT) | $(MINIGZIP) > $(recovery_ramdisk)
|
||||
$(MKBOOTFS) -d $(TARGET_OUT) $(TARGET_RECOVERY_ROOT_OUT) | $(COMPRESSION_COMMAND) > $(recovery_ramdisk)
|
||||
|
||||
# $(1): output file
|
||||
# $(2): kernel file
|
||||
|
@ -2339,22 +2350,22 @@ else
|
|||
# Depends on ramdisk.img, note that some target has ramdisk.img but no boot.img, e.g., emulator.
|
||||
$(INSTALLED_DEBUG_RAMDISK_TARGET): $(INSTALLED_RAMDISK_TARGET)
|
||||
endif # BOARD_USES_RECOVERY_AS_BOOT
|
||||
$(INSTALLED_DEBUG_RAMDISK_TARGET): $(MKBOOTFS) $(INTERNAL_DEBUG_RAMDISK_FILES) | $(MINIGZIP)
|
||||
$(INSTALLED_DEBUG_RAMDISK_TARGET): $(MKBOOTFS) $(INTERNAL_DEBUG_RAMDISK_FILES) | $(COMPRESSION_COMMAND_DEPS)
|
||||
$(call pretty,"Target debug ram disk: $@")
|
||||
mkdir -p $(TARGET_DEBUG_RAMDISK_OUT)
|
||||
touch $(TARGET_DEBUG_RAMDISK_OUT)/force_debuggable
|
||||
rsync -a $(DEBUG_RAMDISK_SYNC_DIR)/ $(DEBUG_RAMDISK_ROOT_DIR)
|
||||
$(MKBOOTFS) -d $(TARGET_OUT) $(DEBUG_RAMDISK_ROOT_DIR) | $(MINIGZIP) > $@
|
||||
$(MKBOOTFS) -d $(TARGET_OUT) $(DEBUG_RAMDISK_ROOT_DIR) | $(COMPRESSION_COMMAND) > $@
|
||||
|
||||
.PHONY: ramdisk_debug-nodeps
|
||||
ramdisk_debug-nodeps: DEBUG_RAMDISK_SYNC_DIR := $(my_debug_ramdisk_sync_dir)
|
||||
ramdisk_debug-nodeps: DEBUG_RAMDISK_ROOT_DIR := $(my_debug_ramdisk_root_dir)
|
||||
ramdisk_debug-nodeps: $(MKBOOTFS) | $(MINIGZIP)
|
||||
ramdisk_debug-nodeps: $(MKBOOTFS) | $(COMPRESSION_COMMAND_DEPS)
|
||||
echo "make $@: ignoring dependencies"
|
||||
mkdir -p $(TARGET_DEBUG_RAMDISK_OUT)
|
||||
touch $(TARGET_DEBUG_RAMDISK_OUT)/force_debuggable
|
||||
rsync -a $(DEBUG_RAMDISK_SYNC_DIR)/ $(DEBUG_RAMDISK_ROOT_DIR)
|
||||
$(MKBOOTFS) -d $(TARGET_OUT) $(DEBUG_RAMDISK_ROOT_DIR) | $(MINIGZIP) > $(INSTALLED_DEBUG_RAMDISK_TARGET)
|
||||
$(MKBOOTFS) -d $(TARGET_OUT) $(DEBUG_RAMDISK_ROOT_DIR) | $(COMPRESSION_COMMAND) > $(INSTALLED_DEBUG_RAMDISK_TARGET)
|
||||
|
||||
my_debug_ramdisk_sync_dir :=
|
||||
my_debug_ramdisk_root_dir :=
|
||||
|
@ -2426,7 +2437,7 @@ ifeq ($(BUILDING_RAMDISK_IMAGE),true)
|
|||
# -----------------------------------------------------------------
|
||||
# vendor debug ramdisk
|
||||
# Combines vendor ramdisk files and debug ramdisk files to build the vendor debug ramdisk.
|
||||
INSTALLED_VENDOR_DEBUG_RAMDISK_TARGET := $(PRODUCT_OUT)/vendor-ramdisk-debug.cpio.gz
|
||||
INSTALLED_VENDOR_DEBUG_RAMDISK_TARGET := $(PRODUCT_OUT)/vendor-ramdisk-debug.cpio$(RAMDISK_EXT)
|
||||
$(INSTALLED_VENDOR_DEBUG_RAMDISK_TARGET): DEBUG_RAMDISK_FILES := $(INTERNAL_DEBUG_RAMDISK_FILES)
|
||||
$(INSTALLED_VENDOR_DEBUG_RAMDISK_TARGET): VENDOR_RAMDISK_DIR := $(TARGET_VENDOR_RAMDISK_OUT)
|
||||
|
||||
|
@ -2440,14 +2451,14 @@ INTERNAL_VENDOR_DEBUG_RAMDISK_FILES := $(filter $(TARGET_VENDOR_DEBUG_RAMDISK_OU
|
|||
# $(PRODUCT_OUT)/vendor_debug_ramdisk.
|
||||
$(INSTALLED_VENDOR_DEBUG_RAMDISK_TARGET): VENDOR_DEBUG_RAMDISK_DIR := $(PRODUCT_OUT)/vendor_debug_ramdisk
|
||||
$(INSTALLED_VENDOR_DEBUG_RAMDISK_TARGET): $(INTERNAL_VENDOR_RAMDISK_TARGET) $(INSTALLED_DEBUG_RAMDISK_TARGET)
|
||||
$(INSTALLED_VENDOR_DEBUG_RAMDISK_TARGET): $(MKBOOTFS) $(INTERNAL_VENDOR_DEBUG_RAMDISK_FILES) | $(MINIGZIP)
|
||||
$(INSTALLED_VENDOR_DEBUG_RAMDISK_TARGET): $(MKBOOTFS) $(INTERNAL_VENDOR_DEBUG_RAMDISK_FILES) | $(COMPRESSION_COMMAND_DEPS)
|
||||
$(call pretty,"Target vendor debug ram disk: $@")
|
||||
mkdir -p $(TARGET_VENDOR_DEBUG_RAMDISK_OUT)
|
||||
touch $(TARGET_VENDOR_DEBUG_RAMDISK_OUT)/force_debuggable
|
||||
$(foreach debug_file,$(DEBUG_RAMDISK_FILES), \
|
||||
cp -f $(debug_file) $(subst $(PRODUCT_OUT)/debug_ramdisk,$(PRODUCT_OUT)/vendor_debug_ramdisk,$(debug_file)) &&) true
|
||||
rsync -a $(VENDOR_RAMDISK_DIR)/ $(VENDOR_DEBUG_RAMDISK_DIR)
|
||||
$(MKBOOTFS) -d $(TARGET_OUT) $(VENDOR_DEBUG_RAMDISK_DIR) | $(MINIGZIP) > $@
|
||||
$(MKBOOTFS) -d $(TARGET_OUT) $(VENDOR_DEBUG_RAMDISK_DIR) | $(COMPRESSION_COMMAND) > $@
|
||||
|
||||
INSTALLED_FILES_FILE_VENDOR_DEBUG_RAMDISK := $(PRODUCT_OUT)/installed-files-vendor-ramdisk-debug.txt
|
||||
INSTALLED_FILES_JSON_VENDOR_DEBUG_RAMDISK := $(INSTALLED_FILES_FILE_VENDOR_DEBUG_RAMDISK:.txt=.json)
|
||||
|
@ -2525,18 +2536,18 @@ define append-test-harness-props
|
|||
endef
|
||||
|
||||
$(INSTALLED_TEST_HARNESS_RAMDISK_TARGET): $(INSTALLED_DEBUG_RAMDISK_TARGET)
|
||||
$(INSTALLED_TEST_HARNESS_RAMDISK_TARGET): $(MKBOOTFS) $(INTERNAL_TEST_HARNESS_RAMDISK_FILES) | $(MINIGZIP)
|
||||
$(INSTALLED_TEST_HARNESS_RAMDISK_TARGET): $(MKBOOTFS) $(INTERNAL_TEST_HARNESS_RAMDISK_FILES) | $(COMPRESSION_COMMAND_DEPS)
|
||||
$(call pretty,"Target test harness ram disk: $@")
|
||||
rsync -a $(TEST_HARNESS_RAMDISK_SYNC_DIR)/ $(TEST_HARNESS_RAMDISK_ROOT_DIR)
|
||||
$(call append-test-harness-props,$(ADDITIONAL_TEST_HARNESS_PROPERTIES),$(TEST_HARNESS_PROP_TARGET))
|
||||
$(MKBOOTFS) -d $(TARGET_OUT) $(TEST_HARNESS_RAMDISK_ROOT_DIR) | $(MINIGZIP) > $@
|
||||
$(MKBOOTFS) -d $(TARGET_OUT) $(TEST_HARNESS_RAMDISK_ROOT_DIR) | $(COMPRESSION_COMMAND) > $@
|
||||
|
||||
.PHONY: ramdisk_test_harness-nodeps
|
||||
ramdisk_test_harness-nodeps: $(MKBOOTFS) | $(MINIGZIP)
|
||||
ramdisk_test_harness-nodeps: $(MKBOOTFS) | $(COMPRESSION_COMMAND_DEPS)
|
||||
echo "make $@: ignoring dependencies"
|
||||
rsync -a $(TEST_HARNESS_RAMDISK_SYNC_DIR)/ $(TEST_HARNESS_RAMDISK_ROOT_DIR)
|
||||
$(call append-test-harness-props,$(ADDITIONAL_TEST_HARNESS_PROPERTIES),$(TEST_HARNESS_PROP_TARGET))
|
||||
$(MKBOOTFS) -d $(TARGET_OUT) $(TEST_HARNESS_RAMDISK_ROOT_DIR) | $(MINIGZIP) > $(INSTALLED_TEST_HARNESS_RAMDISK_TARGET)
|
||||
$(MKBOOTFS) -d $(TARGET_OUT) $(TEST_HARNESS_RAMDISK_ROOT_DIR) | $(COMPRESSION_COMMAND) > $(INSTALLED_TEST_HARNESS_RAMDISK_TARGET)
|
||||
|
||||
endif # BUILDING_RAMDISK_IMAGE
|
||||
|
||||
|
|
|
@ -599,6 +599,7 @@ NANOPB_SRCS := $(HOST_OUT_EXECUTABLES)/protoc-gen-nanopb
|
|||
VTSC := $(HOST_OUT_EXECUTABLES)/vtsc$(HOST_EXECUTABLE_SUFFIX)
|
||||
MKBOOTFS := $(HOST_OUT_EXECUTABLES)/mkbootfs$(HOST_EXECUTABLE_SUFFIX)
|
||||
MINIGZIP := $(HOST_OUT_EXECUTABLES)/minigzip$(HOST_EXECUTABLE_SUFFIX)
|
||||
LZ4 := $(HOST_OUT_EXECUTABLES)/lz4$(HOST_EXECUTABLE_SUFFIX)
|
||||
ifeq (,$(strip $(BOARD_CUSTOM_MKBOOTIMG)))
|
||||
MKBOOTIMG := $(HOST_OUT_EXECUTABLES)/mkbootimg$(HOST_EXECUTABLE_SUFFIX)
|
||||
else
|
||||
|
|
Loading…
Reference in New Issue