diff --git a/fs/cpio/Config.in b/fs/cpio/Config.in index 861e9a929e..94a826f9e4 100644 --- a/fs/cpio/Config.in +++ b/fs/cpio/Config.in @@ -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. diff --git a/fs/cpio/cpio.mk b/fs/cpio/cpio.mk index fa66b1c710..d671c337df 100644 --- a/fs/cpio/cpio.mk +++ b/fs/cpio/cpio.mk @@ -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 \