]> git.ipfire.org Git - thirdparty/dracut-ng.git/commitdiff
feat(dracut): add support for /run/initramfs/dracut.conf.d
authorJo Zzsi <jozzsicsataban@gmail.com>
Sat, 27 Sep 2025 17:02:47 +0000 (13:02 -0400)
committerNeal Gompa (ニール・ゴンパ) <ngompa13@gmail.com>
Tue, 7 Oct 2025 00:42:52 +0000 (20:42 -0400)
Allow dracut read configuration files from /run as well,
in addition to /etc/ and /usr.

Modify test case to demonstrate use-case and provide test
coverage.

dracut.sh
man/dracut.conf.5.adoc
test/TEST-12-UEFI/test.sh

index 0e976f7c51e04844ccfd0bdb937de7a4d5b2dd30..8e1fe9d986996b5dc59833dce8111a6e5d062ae2 100755 (executable)
--- a/dracut.sh
+++ b/dracut.sh
@@ -1033,7 +1033,7 @@ if [[ -f $conffile ]]; then
 fi
 
 # source our config dir
-for f in $(dropindirs_sort ".conf" "$confdir" ${add_confdir:+"$add_confdir"} "$dracutbasedir/dracut.conf.d"); do
+for f in $(dropindirs_sort ".conf" "$confdir" ${add_confdir:+"$add_confdir"} "$dracutbasedir/dracut.conf.d" "/run/initramfs/dracut.conf.d"); do
     check_conf_file "$f"
     # shellcheck disable=SC1090
     [[ -e $f ]] && . "$f"
index ba27382efe61254c55426279fdb767fbe75ef7ea..4d2ff297d5034197baebd5299e66f06a5aaab999 100644 (file)
@@ -11,12 +11,14 @@ dracut.conf - configuration file(s) for dracut
 _/etc/dracut.conf_
 _/etc/dracut.conf.d/\*.conf_
 _/usr/lib/dracut/dracut.conf.d/*.conf_
+_/run/initramfs/dracut.conf.d/*.conf_
 
 == Description
 _dracut.conf_ is loaded during the initialization phase of dracut.
 
-_*.conf_ files are read from `/usr/lib/dracut/dracut.conf.d` and
-/etc/dracut.conf.d. Files with the same name in `/etc/dracut.conf.d` will replace
+_*.conf_ files are read from `/run/initramfs/dracut.conf.d`,
+`/usr/lib/dracut/dracut.conf.d` and `/etc/dracut.conf.d`.
+Files with the same name in `/etc/dracut.conf.d` will replace
 files in `/usr/lib/dracut/dracut.conf.d`.
 
 The files are then read in alphanumerical order and will override parameters
index 047e105d8e0efc94b432b3a1fd885da240b37259..1f7259475e26a8c877f14c29483c3d6185fde20e 100755 (executable)
@@ -16,11 +16,6 @@ test_check() {
         return 1
     fi
 
-    if command -v systemd-detect-virt > /dev/null && ! systemd-detect-virt -c &> /dev/null && ! systemd-detect-virt -r &> /dev/null; then
-        echo "This test assumes that it runs inside a chroot or CI container."
-        return 1
-    fi
-
     if [[ -z "$(ovmf_code)" ]]; then
         return 1
     fi
@@ -70,19 +65,21 @@ test_setup() {
 
         echo "Using ukify via kernel-install to create UKI"
 
-        mkdir -p /etc/kernel
+        export KERNEL_INSTALL_CONF_ROOT="$TESTDIR"/kernel-install
+        mkdir -p "$KERNEL_INSTALL_CONF_ROOT"
 
         {
             echo 'initrd_generator=dracut'
             echo 'layout=uki'
             echo 'uki_generator=ukify'
-        } >> /etc/kernel/install.conf
+        } >> "$KERNEL_INSTALL_CONF_ROOT/install.conf"
 
-        echo "$TEST_KERNEL_CMDLINE root=/dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_root" >> /etc/kernel/cmdline
+        echo "$TEST_KERNEL_CMDLINE root=/dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_root" >> "$KERNEL_INSTALL_CONF_ROOT/cmdline"
 
         # enable test dracut config
-        cp "${basedir}"/dracut.conf.d/test/* "${basedir}"/dracut.conf.d/uki-virt/* /usr/lib/dracut/dracut.conf.d/
-        echo 'add_drivers+=" squashfs "' >> /usr/lib/dracut/dracut.conf.d/extra.conf
+        mkdir -p /run/initramfs/dracut.conf.d
+        cp "${basedir}"/dracut.conf.d/test/* "${basedir}"/dracut.conf.d/uki-virt/* /run/initramfs/dracut.conf.d/
+        echo 'add_drivers+=" squashfs "' >> /run/initramfs/dracut.conf.d/extra.conf
 
         # using kernell-install to invoke dracut
         mkdir -p "$BOOT_ROOT/$TOKEN/$KVERSION" "$BOOT_ROOT/loader/entries"