mirror of
https://github.com/torvalds/linux.git
synced 2024-11-27 06:31:52 +00:00
d4e9056dae
Since commit ddd09bcc89
("initramfs: make compression options not
depend on INITRAMFS_SOURCE"), Kconfig asks the compression mode for
the built-in initramfs regardless of INITRAMFS_SOURCE.
It is technically simpler, but pointless from a UI perspective,
Linus says [1].
When INITRAMFS_SOURCE is empty, usr/Makefile creates a tiny default
cpio, which is so small that nobody cares about the compression.
This commit hides the Kconfig choice in that case. The default cpio
is embedded without compression, which was the original behavior.
[1]: https://lkml.org/lkml/2020/2/1/160
Suggested-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
89 lines
2.9 KiB
Makefile
89 lines
2.9 KiB
Makefile
# SPDX-License-Identifier: GPL-2.0
|
|
#
|
|
# kbuild file for usr/ - including initramfs image
|
|
#
|
|
|
|
# cmd_bzip2, cmd_lzma, cmd_lzo, cmd_lz4 from scripts/Makefile.lib appends the
|
|
# size at the end of the compressed file, which unfortunately does not work
|
|
# with unpack_to_rootfs(). Make size_append no-op.
|
|
override size_append := :
|
|
|
|
compress-y := shipped
|
|
compress-$(CONFIG_INITRAMFS_COMPRESSION_GZIP) := gzip
|
|
compress-$(CONFIG_INITRAMFS_COMPRESSION_BZIP2) := bzip2
|
|
compress-$(CONFIG_INITRAMFS_COMPRESSION_LZMA) := lzma
|
|
compress-$(CONFIG_INITRAMFS_COMPRESSION_XZ) := xzmisc
|
|
compress-$(CONFIG_INITRAMFS_COMPRESSION_LZO) := lzo
|
|
compress-$(CONFIG_INITRAMFS_COMPRESSION_LZ4) := lz4
|
|
|
|
obj-$(CONFIG_BLK_DEV_INITRD) := initramfs_data.o
|
|
|
|
$(obj)/initramfs_data.o: $(obj)/initramfs_inc_data
|
|
|
|
ramfs-input := $(strip $(shell echo $(CONFIG_INITRAMFS_SOURCE)))
|
|
cpio-data :=
|
|
|
|
# If CONFIG_INITRAMFS_SOURCE is empty, generate a small initramfs with the
|
|
# default contents.
|
|
ifeq ($(ramfs-input),)
|
|
ramfs-input := $(srctree)/$(src)/default_cpio_list
|
|
endif
|
|
|
|
ifeq ($(words $(ramfs-input)),1)
|
|
|
|
# If CONFIG_INITRAMFS_SOURCE specifies a single file, and it is suffixed with
|
|
# .cpio, use it directly as an initramfs.
|
|
ifneq ($(filter %.cpio,$(ramfs-input)),)
|
|
cpio-data := $(ramfs-input)
|
|
endif
|
|
|
|
# If CONFIG_INITRAMFS_SOURCE specifies a single file, and it is suffixed with
|
|
# .cpio.*, use it directly as an initramfs, and avoid double compression.
|
|
ifeq ($(words $(subst .cpio.,$(space),$(ramfs-input))),2)
|
|
cpio-data := $(ramfs-input)
|
|
compress-y := shipped
|
|
endif
|
|
|
|
endif
|
|
|
|
# For other cases, generate the initramfs cpio archive based on the contents
|
|
# specified by CONFIG_INITRAMFS_SOURCE.
|
|
ifeq ($(cpio-data),)
|
|
|
|
cpio-data := $(obj)/initramfs_data.cpio
|
|
|
|
hostprogs-y := gen_init_cpio
|
|
|
|
# .initramfs_data.cpio.d is used to identify all files included
|
|
# in initramfs and to detect if any files are added/removed.
|
|
# Removed files are identified by directory timestamp being updated
|
|
# The dependency list is generated by gen_initramfs.sh -l
|
|
-include $(obj)/.initramfs_data.cpio.d
|
|
|
|
# do not try to update files included in initramfs
|
|
$(deps_initramfs): ;
|
|
|
|
quiet_cmd_initfs = GEN $@
|
|
cmd_initfs = \
|
|
$(CONFIG_SHELL) $< -o $@ -l $(obj)/.initramfs_data.cpio.d \
|
|
$(if $(CONFIG_INITRAMFS_ROOT_UID), -u $(CONFIG_INITRAMFS_ROOT_UID)) \
|
|
$(if $(CONFIG_INITRAMFS_ROOT_GID), -g $(CONFIG_INITRAMFS_ROOT_GID)) \
|
|
$(ramfs-input)
|
|
|
|
# We rebuild initramfs_data.cpio if:
|
|
# 1) Any included file is newer than initramfs_data.cpio
|
|
# 2) There are changes in which files are included (added or deleted)
|
|
# 3) If gen_init_cpio are newer than initramfs_data.cpio
|
|
# 4) Arguments to gen_initramfs.sh changes
|
|
$(obj)/initramfs_data.cpio: $(src)/gen_initramfs.sh $(obj)/gen_init_cpio $(deps_initramfs) FORCE
|
|
$(call if_changed,initfs)
|
|
|
|
endif
|
|
|
|
$(obj)/initramfs_inc_data: $(cpio-data) FORCE
|
|
$(call if_changed,$(compress-y))
|
|
|
|
targets += initramfs_data.cpio initramfs_inc_data
|
|
|
|
subdir-$(CONFIG_UAPI_HEADER_TEST) += include
|