From: Jo Zzsi Date: Sat, 27 Sep 2025 17:02:47 +0000 (-0400) Subject: feat(dracut): add support for /run/initramfs/dracut.conf.d X-Git-Tag: 109~56 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=82cd3d3;p=thirdparty%2Fdracut-ng.git feat(dracut): add support for /run/initramfs/dracut.conf.d 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. --- diff --git a/dracut.sh b/dracut.sh index 0e976f7c5..8e1fe9d98 100755 --- 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" diff --git a/man/dracut.conf.5.adoc b/man/dracut.conf.5.adoc index ba27382ef..4d2ff297d 100644 --- a/man/dracut.conf.5.adoc +++ b/man/dracut.conf.5.adoc @@ -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 diff --git a/test/TEST-12-UEFI/test.sh b/test/TEST-12-UEFI/test.sh index 047e105d8..1f7259475 100755 --- a/test/TEST-12-UEFI/test.sh +++ b/test/TEST-12-UEFI/test.sh @@ -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"