Skip to content

Commit

Permalink
feat(hwdb): install hwdb on demand when module is needed
Browse files Browse the repository at this point in the history
Adding a module to install hwdb. Further extensions might make only selected
part of hwdb installable, to save space. The module is not included by default.

Including the module adds 2MB of compressed data (on Fedora, the file has 12MB).

hwdb is needed in case of custom HW, like a keyboard/mouse or various interfaces.

Original PR: dracutdevs/dracut#1681

(Cherry-picked commit: 062e739d89543a38d4b3e2cab155912bc4bf9e56)

Resolves: #1968118
  • Loading branch information
pvalena committed Jul 24, 2023
1 parent 26c332c commit 5cd3729
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 0 deletions.
6 changes: 6 additions & 0 deletions dracut.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
1 change: 1 addition & 0 deletions dracut.spec
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
26 changes: 26 additions & 0 deletions modules.d/95hwdb/module-setup.sh
Original file line number Diff line number Diff line change
@@ -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
}

0 comments on commit 5cd3729

Please sign in to comment.