fs/cpio: allow users to provide their own dracut modules

Dracut modules can only be looked for in HOST_DIR/lib/dracut/modules.d/
as dracut does not offer the possibility to look elsewhere.

Installing files in HOST_DIR/ can do done either from a host-package, or
via a post-built script; there is no overlay like there is for target/.
This is a bit cumbersome.

Additional modules are most probably developped in a relatively tight
loop with the configuration files, so it makes sense to expose both
close together.

Add an option to the fs/cpio filesystem, so users can point to a list
of modules to install.

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: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
2023.02.x
Yann E. MORIN 2022-09-20 20:37:11 +02:00 committed by Thomas Petazzoni
parent 488a87514e
commit eb6e466c10
2 changed files with 16 additions and 1 deletions

View File

@ -29,6 +29,11 @@ endchoice
if BR2_TARGET_ROOTFS_CPIO_DRACUT
config BR2_TARGET_ROOTFS_CPIO_DRACUT_MODULES
string "extra dracut modules"
help
Space-separated list of directories containing dracut modules.
config BR2_TARGET_ROOTFS_CPIO_DRACUT_CONF_FILES
string "dracut configuration files"
default "fs/cpio/dracut.conf"

View File

@ -50,6 +50,13 @@ else ifeq ($(BR2_TARGET_ROOTFS_CPIO_DRACUT),y)
ROOTFS_CPIO_DEPENDENCIES += host-dracut
ROOTFS_CPIO_DRACUT_MODULES = $(call qstrip,$(BR2_TARGET_ROOTFS_CPIO_DRACUT_MODULES))
ifeq ($(BR_BUILDING),y)
ifneq ($(words $(ROOTFS_CPIO_DRACUT_MODULES)),$(words $(sort $(notdir $(ROOTFS_CPIO_DRACUT_MODULES)))))
$(error No two dracut modules can have the same basename, check your BR2_TARGET_ROOTFS_CPIO_DRACUT_MODULES setting)
endif
endif
ROOTFS_CPIO_DRACUT_CONF_FILES = $(call qstrip,$(BR2_TARGET_ROOTFS_CPIO_DRACUT_CONF_FILES))
ifeq ($(BR_BUILDING),y)
ifeq ($(ROOTFS_CPIO_DRACUT_CONF_FILES),)
@ -68,11 +75,14 @@ ROOTFS_CPIO_OPTS += --no-kernel
endif
define ROOTFS_CPIO_CMD
mkdir -p $(ROOTFS_CPIO_DIR)/tmp $(ROOTFS_CPIO_DIR)/confdir
mkdir -p $(ROOTFS_CPIO_DIR)/tmp $(ROOTFS_CPIO_DIR)/confdir $(HOST_DIR)/lib/dracut/modules.d
touch $(ROOTFS_CPIO_DIR)/empty-config
$(foreach cfg,$(ROOTFS_CPIO_DRACUT_CONF_FILES), \
cp $(cfg) $(ROOTFS_CPIO_DIR)/confdir/$(notdir $(cfg))
)
$(foreach m,$(ROOTFS_CPIO_DRACUT_MODULES), \
cp -a $(m)/* $(HOST_DIR)/lib/dracut/modules.d/
)
$(HOST_DIR)/bin/dracut \
$(ROOTFS_CPIO_OPTS) \
-c $(ROOTFS_CPIO_DIR)/empty-config \