fs/cpio: accept a list of dracut.conf files
It is not unusual that projects can target multiple boards, and in such cases, a lot is shared between boards and only the low-level stuff differ. Allow users to specify more than one dracut config file to cover tose cases. dracut does not accept more than one config file with the -c option, but it can load more than one from a directory with --confdir. So, we copy all the config files to a temporary directory and se that as --confdir. However, we can't drop passing -c, or dracut would read the system-wide /etc/dracut.conf (not sure if ${prefix} is even used), which we do not want. So, we use an empty file as -c; /dev/null comes in handy as an empty file. Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr> Cc: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be> Cc: Thierry Bultel <thierry.bultel@linatsea.fr> Cc: Adam Duskett <aduskett@gmail.com> Signed-off-by: Arnout Vandecappelle <arnout@mind.be>
This commit is contained in:
parent
c8a618cff7
commit
4fd5d80e9d
@ -29,13 +29,15 @@ endchoice
|
||||
|
||||
if BR2_TARGET_ROOTFS_CPIO_DRACUT
|
||||
|
||||
config BR2_TARGET_ROOTFS_CPIO_DRACUT_CONF_FILE
|
||||
string "dracut configuration file"
|
||||
config BR2_TARGET_ROOTFS_CPIO_DRACUT_CONF_FILES
|
||||
string "dracut configuration files"
|
||||
default "fs/cpio/dracut.conf"
|
||||
help
|
||||
Dracut configuration file. It determines which parts of the
|
||||
rootfs get included in the cpio image. See dracut.conf(5) or
|
||||
https://github.com/dracutdevs/dracut/blob/master/man/dracut.conf.5.asc
|
||||
Space-separated list of Dracut configuration files. They
|
||||
determine which parts of the rootfs get included in the
|
||||
cpio image. See:
|
||||
dracut.conf(5)
|
||||
https://github.com/dracutdevs/dracut/blob/master/man/dracut.conf.5.asc
|
||||
|
||||
The default configuration file is suitable for busybox init.
|
||||
It doesn't, however, pivot_root into a full rootfs.
|
||||
|
@ -50,9 +50,14 @@ else ifeq ($(BR2_TARGET_ROOTFS_CPIO_DRACUT),y)
|
||||
|
||||
ROOTFS_CPIO_DEPENDENCIES += host-dracut
|
||||
|
||||
ROOTFS_CPIO_DRACUT_CONF_FILE = $(call qstrip,$(BR2_TARGET_ROOTFS_CPIO_DRACUT_CONF_FILE))
|
||||
ifeq ($(BR_BUILDING):$(ROOTFS_CPIO_DRACUT_CONF_FILE),y:)
|
||||
$(error No dracut config file name specified, check your BR2_TARGET_ROOTFS_CPIO_DRACUT_CONF_FILE setting)
|
||||
ROOTFS_CPIO_DRACUT_CONF_FILES = $(call qstrip,$(BR2_TARGET_ROOTFS_CPIO_DRACUT_CONF_FILES))
|
||||
ifeq ($(BR_BUILDING),y)
|
||||
ifeq ($(ROOTFS_CPIO_DRACUT_CONF_FILES),)
|
||||
$(error No dracut config file name specified, check your BR2_TARGET_ROOTFS_CPIO_DRACUT_CONF_FILES setting)
|
||||
endif
|
||||
ifneq ($(words $(ROOTFS_CPIO_DRACUT_CONF_FILES)),$(words $(sort $(notdir $(ROOTFS_CPIO_DRACUT_CONF_FILES)))))
|
||||
$(error No two dracut config files can have the same basename, check your BR2_TARGET_ROOTFS_CPIO_DRACUT_CONF_FILES setting)
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(BR2_LINUX_KERNEL),y)
|
||||
@ -63,10 +68,14 @@ ROOTFS_CPIO_OPTS += --no-kernel
|
||||
endif
|
||||
|
||||
define ROOTFS_CPIO_CMD
|
||||
mkdir -p $(ROOTFS_CPIO_DIR)/tmp
|
||||
mkdir -p $(ROOTFS_CPIO_DIR)/tmp $(ROOTFS_CPIO_DIR)/confdir
|
||||
$(foreach cfg,$(ROOTFS_CPIO_DRACUT_CONF_FILES), \
|
||||
cp $(cfg) $(ROOTFS_CPIO_DIR)/confdir/$(notdir $(cfg))
|
||||
)
|
||||
$(HOST_DIR)/bin/dracut \
|
||||
$(ROOTFS_CPIO_OPTS) \
|
||||
-c $(ROOTFS_CPIO_DRACUT_CONF_FILE) \
|
||||
-c /dev/null \
|
||||
--confdir $(ROOTFS_CPIO_DIR)/confdir \
|
||||
--sysroot $(TARGET_DIR) \
|
||||
--tmpdir $(ROOTFS_CPIO_DIR)/tmp \
|
||||
-M \
|
||||
|
Loading…
Reference in New Issue
Block a user