From: наб Date: Tue, 26 Apr 2022 14:42:55 +0000 (+0200) Subject: fix(dracut): default to correct firmware search paths X-Git-Tag: 057~5 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=95aeed8975dd5a2af782ec986f2af6176b585c59;p=thirdparty%2Fdracut.git fix(dracut): default to correct firmware search paths 1. /sys/module/firmware_class/parameters/path (fw_path_para), if any 2. /lib/firmware/updates/$(uname -r) 3. /lib/firmware/updates 4. /lib/firmware/$(uname -r) 5. /lib/firmware https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/base/firmware_loader/main.c?h=v5.17#n406 --- diff --git a/dracut-init.sh b/dracut-init.sh index 9f9c09801..900e8b839 100644 --- a/dracut-init.sh +++ b/dracut-init.sh @@ -72,8 +72,6 @@ srcmods="$dracutsysrootdir/lib/modules/$kernel/" } export srcmods -[[ $DRACUT_FIRMWARE_PATH ]] || export DRACUT_FIRMWARE_PATH="/lib/firmware/updates:/lib/firmware:/lib/firmware/$kernel" - # export standard hookdirs [[ $hookdirs ]] || { hookdirs="cmdline pre-udev pre-trigger netroot " diff --git a/dracut.sh b/dracut.sh index 408f54d1c..0b7199661 100755 --- a/dracut.sh +++ b/dracut.sh @@ -1020,7 +1020,10 @@ stdloglvl=$((stdloglvl + verbosity_mod_l)) [[ $mdadmconf_l ]] && mdadmconf=$mdadmconf_l [[ $lvmconf_l ]] && lvmconf=$lvmconf_l [[ $dracutbasedir ]] || dracutbasedir="$dracutsysrootdir"/usr/lib/dracut -[[ $fw_dir ]] || fw_dir="$dracutsysrootdir/lib/firmware/updates:$dracutsysrootdir/lib/firmware:$dracutsysrootdir/lib/firmware/$kernel" +[[ $fw_dir ]] || { + fw_path_para=$(< /sys/module/firmware_class/parameters/path) + fw_dir="${fw_path_para:+$dracutsysrootdir$fw_path_para:}$dracutsysrootdir/lib/firmware/updates/$kernel:$dracutsysrootdir/lib/firmware/updates:$dracutsysrootdir/lib/firmware/$kernel:$dracutsysrootdir/lib/firmware" +} [[ $tmpdir_l ]] && tmpdir="$tmpdir_l" [[ $tmpdir ]] || tmpdir="$TMPDIR" [[ $tmpdir ]] || tmpdir="$dracutsysrootdir"/var/tmp diff --git a/src/install/dracut-install.c b/src/install/dracut-install.c index 7c6d91c15..c8b25733d 100644 --- a/src/install/dracut-install.c +++ b/src/install/dracut-install.c @@ -983,9 +983,12 @@ static void usage(int status) "\n" " --module,-m Install kernel modules, instead of files\n" " --kerneldir Specify the kernel module directory\n" - " (default: /lib/modules/`uname -r`)\n" + " (default: /lib/modules/$(uname -r))\n" " --firmwaredirs Specify the firmware directory search path with : separation\n" - " (default: DRACUT_FIRMWARE_PATH env var, /lib/firmware if not set)\n" + " (default: $DRACUT_FIRMWARE_PATH, otherwise kernel-compatible\n" + " $(