diff --git a/dracut.sh b/dracut.sh index f58559e8..869b90b0 100755 --- a/dracut.sh +++ b/dracut.sh @@ -1302,6 +1302,12 @@ if ! [[ -d "$udevdir" ]]; then [[ -e /usr/lib/udev/collect ]] && udevdir=/usr/lib/udev fi +[[ -d $udevconfdir ]] \ + || udevconfdir="$(pkg-config udev --variable=udevconfdir 2>/dev/null)" +if ! [[ -d "$udevconfdir" ]]; then + [[ -d /etc/udev ]] && udevconfdir=/etc/udev +fi + [[ -d $systemdutildir ]] \ || systemdutildir=$(pkg-config systemd --variable=systemdutildir 2>/dev/null) diff --git a/dracut.spec b/dracut.spec index 90fa903a..a417f780 100644 --- a/dracut.spec +++ b/dracut.spec @@ -365,6 +365,7 @@ echo 'dracut_rescue_image="yes"' > $RPM_BUILD_ROOT%{dracutlibdir}/dracut.conf.d/ %{dracutlibdir}/modules.d/91crypt-loop %{dracutlibdir}/modules.d/95debug %{dracutlibdir}/modules.d/95fstab-sys +%{dracutlibdir}/modules.d/95hwdb %{dracutlibdir}/modules.d/95lunmask %{dracutlibdir}/modules.d/95nvmf %{dracutlibdir}/modules.d/95resume diff --git a/modules.d/95hwdb/module-setup.sh b/modules.d/95hwdb/module-setup.sh new file mode 100755 index 00000000..16365377 --- /dev/null +++ b/modules.d/95hwdb/module-setup.sh @@ -0,0 +1,26 @@ +#!/bin/bash +# This file is part of dracut. +# SPDX-License-Identifier: GPL-2.0-or-later + +check() { + return 255 +} + +# called by dracut +install() { + local hwdb_bin + + # systemd-hwdb ships the file in /etc, with /usr/lib as an alternative. + # Therefore consider this location as preferred for configuration. + hwdb_bin="${udevdir}"/hwdb.bin + + if [[ ! -r "${hwdb_bin}" ]]; then + hwdb_bin="${udevconfdir}"/hwdb.bin + fi + + if [[ $hostonly ]]; then + inst_multiple -H "${hwdb_bin}" + else + inst_multiple "${hwdb_bin}" + fi +}