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))
|
$(call dist-for-goals, sdk win_sdk sdk_addon, $(INSTALLED_FILES_FILE_RAMDISK))
|
||||||
BUILT_RAMDISK_TARGET := $(PRODUCT_OUT)/ramdisk.img
|
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.
|
# We just build this directly to the install location.
|
||||||
INSTALLED_RAMDISK_TARGET := $(BUILT_RAMDISK_TARGET)
|
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: $@")
|
$(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
|
.PHONY: ramdisk-nodeps
|
||||||
ramdisk-nodeps: $(MKBOOTFS) | $(MINIGZIP)
|
ramdisk-nodeps: $(MKBOOTFS) | $(COMPRESSION_COMMAND_DEPS)
|
||||||
@echo "make $@: ignoring dependencies"
|
@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
|
endif # BUILDING_RAMDISK_IMAGE
|
||||||
|
|
||||||
|
@ -1304,8 +1315,8 @@ INTERNAL_VENDOR_RAMDISK_FILES := $(filter $(TARGET_VENDOR_RAMDISK_OUT)/%, \
|
||||||
$(ALL_DEFAULT_INSTALLED_MODULES))
|
$(ALL_DEFAULT_INSTALLED_MODULES))
|
||||||
|
|
||||||
INTERNAL_VENDOR_RAMDISK_TARGET := $(call intermediates-dir-for,PACKAGING,vendor-boot)/vendor-ramdisk.cpio.gz
|
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)
|
$(INTERNAL_VENDOR_RAMDISK_TARGET): $(MKBOOTFS) $(INTERNAL_VENDOR_RAMDISK_FILES) | $(COMPRESSION_COMMAND_DEPS)
|
||||||
$(MKBOOTFS) -d $(TARGET_OUT) $(TARGET_VENDOR_RAMDISK_OUT) | $(MINIGZIP) > $@
|
$(MKBOOTFS) -d $(TARGET_OUT) $(TARGET_VENDOR_RAMDISK_OUT) | $(COMPRESSION_COMMAND) > $@
|
||||||
|
|
||||||
ifdef BOARD_INCLUDE_DTB_IN_BOOTIMG
|
ifdef BOARD_INCLUDE_DTB_IN_BOOTIMG
|
||||||
INTERNAL_VENDOR_BOOTIMAGE_ARGS += --dtb $(INSTALLED_DTBIMAGE_TARGET)
|
INTERNAL_VENDOR_BOOTIMAGE_ARGS += --dtb $(INSTALLED_DTBIMAGE_TARGET)
|
||||||
|
@ -2146,7 +2157,7 @@ ifndef BOARD_RECOVERY_MKBOOTIMG_ARGS
|
||||||
BOARD_RECOVERY_MKBOOTIMG_ARGS := $(BOARD_MKBOOTIMG_ARGS)
|
BOARD_RECOVERY_MKBOOTIMG_ARGS := $(BOARD_MKBOOTIMG_ARGS)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
$(recovery_ramdisk): $(MKBOOTFS) $(MINIGZIP) \
|
$(recovery_ramdisk): $(MKBOOTFS) $(COMPRESSION_COMMAND_DEPS) \
|
||||||
$(INTERNAL_ROOT_FILES) \
|
$(INTERNAL_ROOT_FILES) \
|
||||||
$(INSTALLED_RAMDISK_TARGET) \
|
$(INSTALLED_RAMDISK_TARGET) \
|
||||||
$(INTERNAL_RECOVERYIMAGE_FILES) \
|
$(INTERNAL_RECOVERYIMAGE_FILES) \
|
||||||
|
@ -2181,7 +2192,7 @@ $(recovery_ramdisk): $(MKBOOTFS) $(MINIGZIP) \
|
||||||
cp -f $(recovery_wipe) $(TARGET_RECOVERY_ROOT_OUT)/system/etc/recovery.wipe)
|
cp -f $(recovery_wipe) $(TARGET_RECOVERY_ROOT_OUT)/system/etc/recovery.wipe)
|
||||||
ln -sf prop.default $(TARGET_RECOVERY_ROOT_OUT)/default.prop
|
ln -sf prop.default $(TARGET_RECOVERY_ROOT_OUT)/default.prop
|
||||||
$(BOARD_RECOVERY_IMAGE_PREPARE)
|
$(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
|
# $(1): output file
|
||||||
# $(2): kernel 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.
|
# 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)
|
$(INSTALLED_DEBUG_RAMDISK_TARGET): $(INSTALLED_RAMDISK_TARGET)
|
||||||
endif # BOARD_USES_RECOVERY_AS_BOOT
|
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: $@")
|
$(call pretty,"Target debug ram disk: $@")
|
||||||
mkdir -p $(TARGET_DEBUG_RAMDISK_OUT)
|
mkdir -p $(TARGET_DEBUG_RAMDISK_OUT)
|
||||||
touch $(TARGET_DEBUG_RAMDISK_OUT)/force_debuggable
|
touch $(TARGET_DEBUG_RAMDISK_OUT)/force_debuggable
|
||||||
rsync -a $(DEBUG_RAMDISK_SYNC_DIR)/ $(DEBUG_RAMDISK_ROOT_DIR)
|
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
|
.PHONY: ramdisk_debug-nodeps
|
||||||
ramdisk_debug-nodeps: DEBUG_RAMDISK_SYNC_DIR := $(my_debug_ramdisk_sync_dir)
|
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: 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"
|
echo "make $@: ignoring dependencies"
|
||||||
mkdir -p $(TARGET_DEBUG_RAMDISK_OUT)
|
mkdir -p $(TARGET_DEBUG_RAMDISK_OUT)
|
||||||
touch $(TARGET_DEBUG_RAMDISK_OUT)/force_debuggable
|
touch $(TARGET_DEBUG_RAMDISK_OUT)/force_debuggable
|
||||||
rsync -a $(DEBUG_RAMDISK_SYNC_DIR)/ $(DEBUG_RAMDISK_ROOT_DIR)
|
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_sync_dir :=
|
||||||
my_debug_ramdisk_root_dir :=
|
my_debug_ramdisk_root_dir :=
|
||||||
|
@ -2426,7 +2437,7 @@ ifeq ($(BUILDING_RAMDISK_IMAGE),true)
|
||||||
# -----------------------------------------------------------------
|
# -----------------------------------------------------------------
|
||||||
# vendor debug ramdisk
|
# vendor debug ramdisk
|
||||||
# Combines vendor ramdisk files and debug ramdisk files to build the 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): DEBUG_RAMDISK_FILES := $(INTERNAL_DEBUG_RAMDISK_FILES)
|
||||||
$(INSTALLED_VENDOR_DEBUG_RAMDISK_TARGET): VENDOR_RAMDISK_DIR := $(TARGET_VENDOR_RAMDISK_OUT)
|
$(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.
|
# $(PRODUCT_OUT)/vendor_debug_ramdisk.
|
||||||
$(INSTALLED_VENDOR_DEBUG_RAMDISK_TARGET): VENDOR_DEBUG_RAMDISK_DIR := $(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): $(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: $@")
|
$(call pretty,"Target vendor debug ram disk: $@")
|
||||||
mkdir -p $(TARGET_VENDOR_DEBUG_RAMDISK_OUT)
|
mkdir -p $(TARGET_VENDOR_DEBUG_RAMDISK_OUT)
|
||||||
touch $(TARGET_VENDOR_DEBUG_RAMDISK_OUT)/force_debuggable
|
touch $(TARGET_VENDOR_DEBUG_RAMDISK_OUT)/force_debuggable
|
||||||
$(foreach debug_file,$(DEBUG_RAMDISK_FILES), \
|
$(foreach debug_file,$(DEBUG_RAMDISK_FILES), \
|
||||||
cp -f $(debug_file) $(subst $(PRODUCT_OUT)/debug_ramdisk,$(PRODUCT_OUT)/vendor_debug_ramdisk,$(debug_file)) &&) true
|
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)
|
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_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)
|
INSTALLED_FILES_JSON_VENDOR_DEBUG_RAMDISK := $(INSTALLED_FILES_FILE_VENDOR_DEBUG_RAMDISK:.txt=.json)
|
||||||
|
@ -2525,18 +2536,18 @@ define append-test-harness-props
|
||||||
endef
|
endef
|
||||||
|
|
||||||
$(INSTALLED_TEST_HARNESS_RAMDISK_TARGET): $(INSTALLED_DEBUG_RAMDISK_TARGET)
|
$(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: $@")
|
$(call pretty,"Target test harness ram disk: $@")
|
||||||
rsync -a $(TEST_HARNESS_RAMDISK_SYNC_DIR)/ $(TEST_HARNESS_RAMDISK_ROOT_DIR)
|
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))
|
$(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
|
.PHONY: ramdisk_test_harness-nodeps
|
||||||
ramdisk_test_harness-nodeps: $(MKBOOTFS) | $(MINIGZIP)
|
ramdisk_test_harness-nodeps: $(MKBOOTFS) | $(COMPRESSION_COMMAND_DEPS)
|
||||||
echo "make $@: ignoring dependencies"
|
echo "make $@: ignoring dependencies"
|
||||||
rsync -a $(TEST_HARNESS_RAMDISK_SYNC_DIR)/ $(TEST_HARNESS_RAMDISK_ROOT_DIR)
|
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))
|
$(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
|
endif # BUILDING_RAMDISK_IMAGE
|
||||||
|
|
||||||
|
|
|
@ -599,6 +599,7 @@ NANOPB_SRCS := $(HOST_OUT_EXECUTABLES)/protoc-gen-nanopb
|
||||||
VTSC := $(HOST_OUT_EXECUTABLES)/vtsc$(HOST_EXECUTABLE_SUFFIX)
|
VTSC := $(HOST_OUT_EXECUTABLES)/vtsc$(HOST_EXECUTABLE_SUFFIX)
|
||||||
MKBOOTFS := $(HOST_OUT_EXECUTABLES)/mkbootfs$(HOST_EXECUTABLE_SUFFIX)
|
MKBOOTFS := $(HOST_OUT_EXECUTABLES)/mkbootfs$(HOST_EXECUTABLE_SUFFIX)
|
||||||
MINIGZIP := $(HOST_OUT_EXECUTABLES)/minigzip$(HOST_EXECUTABLE_SUFFIX)
|
MINIGZIP := $(HOST_OUT_EXECUTABLES)/minigzip$(HOST_EXECUTABLE_SUFFIX)
|
||||||
|
LZ4 := $(HOST_OUT_EXECUTABLES)/lz4$(HOST_EXECUTABLE_SUFFIX)
|
||||||
ifeq (,$(strip $(BOARD_CUSTOM_MKBOOTIMG)))
|
ifeq (,$(strip $(BOARD_CUSTOM_MKBOOTIMG)))
|
||||||
MKBOOTIMG := $(HOST_OUT_EXECUTABLES)/mkbootimg$(HOST_EXECUTABLE_SUFFIX)
|
MKBOOTIMG := $(HOST_OUT_EXECUTABLES)/mkbootimg$(HOST_EXECUTABLE_SUFFIX)
|
||||||
else
|
else
|
||||||
|
|
Loading…
Reference in New Issue