Commit Message
This one was desperately in need of an upgrade, as dracut 038 was
released 8 YEARS ago. Hence, the changelog since is way too long to
include it here; refer to https://git.kernel.org/pub/scm/boot/dracut/dracut.git/tree/NEWS.md
for details.
See also: #12773
Signed-off-by: Peter Müller <peter.mueller@ipfire.org>
---
config/rootfiles/common/dracut | 111 +++++++++++++++++-
lfs/dracut | 11 +-
.../dracut-038-always-enable-mdraid.patch | 55 ---------
...38_add_hyperv-keyboard_and_sdhci-pci.patch | 12 --
.../dracut-056-always-enable-mdraid.patch | 68 +++++++++++
...56_add_hyperv-keyboard_and_sdhci-pci.patch | 12 ++
6 files changed, 191 insertions(+), 78 deletions(-)
delete mode 100644 src/patches/dracut-038-always-enable-mdraid.patch
delete mode 100644 src/patches/dracut-038_add_hyperv-keyboard_and_sdhci-pci.patch
create mode 100644 src/patches/dracut-056-always-enable-mdraid.patch
create mode 100644 src/patches/dracut-056_add_hyperv-keyboard_and_sdhci-pci.patch
Comments
Hello Peter,
Did you actually get a system booted with an initramdisk generated by this?
I believe that we were stuck on the latest version of dracut that didn’t too deeply integrate systemd. Since we are on sysvinit, I have no idea how usable modern versions of dracut would be for us.
-Michael
> On 3 Mar 2022, at 21:22, Peter Müller <peter.mueller@ipfire.org> wrote:
>
> This one was desperately in need of an upgrade, as dracut 038 was
> released 8 YEARS ago. Hence, the changelog since is way too long to
> include it here; refer to https://git.kernel.org/pub/scm/boot/dracut/dracut.git/tree/NEWS.md
> for details.
>
> See also: #12773
>
> Signed-off-by: Peter Müller <peter.mueller@ipfire.org>
> ---
> config/rootfiles/common/dracut | 111 +++++++++++++++++-
> lfs/dracut | 11 +-
> .../dracut-038-always-enable-mdraid.patch | 55 ---------
> ...38_add_hyperv-keyboard_and_sdhci-pci.patch | 12 --
> .../dracut-056-always-enable-mdraid.patch | 68 +++++++++++
> ...56_add_hyperv-keyboard_and_sdhci-pci.patch | 12 ++
> 6 files changed, 191 insertions(+), 78 deletions(-)
> delete mode 100644 src/patches/dracut-038-always-enable-mdraid.patch
> delete mode 100644 src/patches/dracut-038_add_hyperv-keyboard_and_sdhci-pci.patch
> create mode 100644 src/patches/dracut-056-always-enable-mdraid.patch
> create mode 100644 src/patches/dracut-056_add_hyperv-keyboard_and_sdhci-pci.patch
>
> diff --git a/config/rootfiles/common/dracut b/config/rootfiles/common/dracut
> index 03379b4d6..0d6009b5c 100644
> --- a/config/rootfiles/common/dracut
> +++ b/config/rootfiles/common/dracut
> @@ -3,18 +3,24 @@ etc/dracut.conf.d
> usr/bin/dracut
> usr/bin/dracut-catimages
> usr/bin/lsinitrd
> -usr/bin/mkinitrd
> usr/lib/dracut
> #usr/lib/dracut/dracut-functions
> #usr/lib/dracut/dracut-functions.sh
> +#usr/lib/dracut/dracut-init.sh
> #usr/lib/dracut/dracut-initramfs-restore
> #usr/lib/dracut/dracut-install
> #usr/lib/dracut/dracut-logger.sh
> +#usr/lib/dracut/dracut-util
> #usr/lib/dracut/dracut-version.sh
> #usr/lib/dracut/dracut.conf.d
> #usr/lib/dracut/modules.d
> #usr/lib/dracut/modules.d/00bash
> #usr/lib/dracut/modules.d/00bash/module-setup.sh
> +#usr/lib/dracut/modules.d/00mksh
> +#usr/lib/dracut/modules.d/00mksh/module-setup.sh
> +#usr/lib/dracut/modules.d/00warpclock
> +#usr/lib/dracut/modules.d/00warpclock/module-setup.sh
> +#usr/lib/dracut/modules.d/00warpclock/warpclock.sh
> #usr/lib/dracut/modules.d/02caps
> #usr/lib/dracut/modules.d/02caps/README
> #usr/lib/dracut/modules.d/02caps/caps.sh
> @@ -22,26 +28,77 @@ usr/lib/dracut
> #usr/lib/dracut/modules.d/03rescue
> #usr/lib/dracut/modules.d/03rescue/module-setup.sh
> #usr/lib/dracut/modules.d/04watchdog
> +#usr/lib/dracut/modules.d/04watchdog-modules
> +#usr/lib/dracut/modules.d/04watchdog-modules/module-setup.sh
> #usr/lib/dracut/modules.d/04watchdog/module-setup.sh
> #usr/lib/dracut/modules.d/04watchdog/watchdog-stop.sh
> #usr/lib/dracut/modules.d/04watchdog/watchdog.sh
> +#usr/lib/dracut/modules.d/06dbus-broker
> +#usr/lib/dracut/modules.d/06dbus-broker/module-setup.sh
> +#usr/lib/dracut/modules.d/06dbus-daemon
> +#usr/lib/dracut/modules.d/06dbus-daemon/module-setup.sh
> +#usr/lib/dracut/modules.d/06rngd
> +#usr/lib/dracut/modules.d/06rngd/module-setup.sh
> +#usr/lib/dracut/modules.d/06rngd/rngd.service
> +#usr/lib/dracut/modules.d/09dbus
> +#usr/lib/dracut/modules.d/09dbus/module-setup.sh
> #usr/lib/dracut/modules.d/10i18n
> #usr/lib/dracut/modules.d/10i18n/10-console.rules
> #usr/lib/dracut/modules.d/10i18n/README
> #usr/lib/dracut/modules.d/10i18n/console_init.sh
> #usr/lib/dracut/modules.d/10i18n/module-setup.sh
> #usr/lib/dracut/modules.d/10i18n/parse-i18n.sh
> +#usr/lib/dracut/modules.d/35network-legacy
> +#usr/lib/dracut/modules.d/35network-legacy/dhclient-script.sh
> +#usr/lib/dracut/modules.d/35network-legacy/dhclient.conf
> +#usr/lib/dracut/modules.d/35network-legacy/dhcp-multi.sh
> +#usr/lib/dracut/modules.d/35network-legacy/ifup.sh
> +#usr/lib/dracut/modules.d/35network-legacy/kill-dhclient.sh
> +#usr/lib/dracut/modules.d/35network-legacy/module-setup.sh
> +#usr/lib/dracut/modules.d/35network-legacy/net-genrules.sh
> +#usr/lib/dracut/modules.d/35network-legacy/parse-bond.sh
> +#usr/lib/dracut/modules.d/35network-legacy/parse-bridge.sh
> +#usr/lib/dracut/modules.d/35network-legacy/parse-ibft.sh
> +#usr/lib/dracut/modules.d/35network-legacy/parse-ifname.sh
> +#usr/lib/dracut/modules.d/35network-legacy/parse-ip-opts.sh
> +#usr/lib/dracut/modules.d/35network-legacy/parse-team.sh
> +#usr/lib/dracut/modules.d/35network-legacy/parse-vlan.sh
> +#usr/lib/dracut/modules.d/35network-manager
> +#usr/lib/dracut/modules.d/35network-manager/initrd-no-auto-default.conf
> +#usr/lib/dracut/modules.d/35network-manager/module-setup.sh
> +#usr/lib/dracut/modules.d/35network-manager/nm-config.sh
> +#usr/lib/dracut/modules.d/35network-manager/nm-initrd.service
> +#usr/lib/dracut/modules.d/35network-manager/nm-lib.sh
> +#usr/lib/dracut/modules.d/35network-manager/nm-run.sh
> +#usr/lib/dracut/modules.d/35network-manager/nm-wait-online-initrd.service
> +#usr/lib/dracut/modules.d/35network-wicked
> +#usr/lib/dracut/modules.d/35network-wicked/module-setup.sh
> +#usr/lib/dracut/modules.d/35network-wicked/wicked-config.sh
> +#usr/lib/dracut/modules.d/35network-wicked/wicked-run.sh
> #usr/lib/dracut/modules.d/50drm
> #usr/lib/dracut/modules.d/50drm/module-setup.sh
> +#usr/lib/dracut/modules.d/62bluetooth
> +#usr/lib/dracut/modules.d/62bluetooth/module-setup.sh
> +#usr/lib/dracut/modules.d/80lvmmerge
> +#usr/lib/dracut/modules.d/80lvmmerge/README.md
> +#usr/lib/dracut/modules.d/80lvmmerge/lvmmerge.sh
> +#usr/lib/dracut/modules.d/80lvmmerge/module-setup.sh
> +#usr/lib/dracut/modules.d/81cio_ignore
> +#usr/lib/dracut/modules.d/81cio_ignore/module-setup.sh
> +#usr/lib/dracut/modules.d/81cio_ignore/parse-cio_accept.sh
> +#usr/lib/dracut/modules.d/90dmsquash-live-ntfs
> +#usr/lib/dracut/modules.d/90dmsquash-live-ntfs/module-setup.sh
> #usr/lib/dracut/modules.d/90kernel-modules
> +#usr/lib/dracut/modules.d/90kernel-modules-extra
> +#usr/lib/dracut/modules.d/90kernel-modules-extra/module-setup.sh
> #usr/lib/dracut/modules.d/90kernel-modules/insmodpost.sh
> #usr/lib/dracut/modules.d/90kernel-modules/module-setup.sh
> #usr/lib/dracut/modules.d/90kernel-modules/parse-kernel.sh
> +#usr/lib/dracut/modules.d/90kernel-network-modules
> +#usr/lib/dracut/modules.d/90kernel-network-modules/module-setup.sh
> #usr/lib/dracut/modules.d/90mdraid
> #usr/lib/dracut/modules.d/90mdraid/59-persistent-storage-md.rules
> #usr/lib/dracut/modules.d/90mdraid/65-md-incremental-imsm.rules
> -#usr/lib/dracut/modules.d/90mdraid/md-noddf.sh
> -#usr/lib/dracut/modules.d/90mdraid/md-noimsm.sh
> #usr/lib/dracut/modules.d/90mdraid/md-shutdown.sh
> #usr/lib/dracut/modules.d/90mdraid/mdmon-pre-shutdown.sh
> #usr/lib/dracut/modules.d/90mdraid/mdmon-pre-udev.sh
> @@ -51,11 +108,45 @@ usr/lib/dracut
> #usr/lib/dracut/modules.d/90mdraid/mdraid_start.sh
> #usr/lib/dracut/modules.d/90mdraid/module-setup.sh
> #usr/lib/dracut/modules.d/90mdraid/parse-md.sh
> +#usr/lib/dracut/modules.d/90nvdimm
> +#usr/lib/dracut/modules.d/90nvdimm/module-setup.sh
> +#usr/lib/dracut/modules.d/90ppcmac
> +#usr/lib/dracut/modules.d/90ppcmac/load-thermal.sh
> +#usr/lib/dracut/modules.d/90ppcmac/module-setup.sh
> +#usr/lib/dracut/modules.d/91fido2
> +#usr/lib/dracut/modules.d/91fido2/module-setup.sh
> +#usr/lib/dracut/modules.d/91pcsc
> +#usr/lib/dracut/modules.d/91pcsc/module-setup.sh
> +#usr/lib/dracut/modules.d/91pcsc/pcscd.service
> +#usr/lib/dracut/modules.d/91pcsc/pcscd.socket
> +#usr/lib/dracut/modules.d/91pkcs11
> +#usr/lib/dracut/modules.d/91pkcs11/module-setup.sh
> +#usr/lib/dracut/modules.d/91tpm2-tss
> +#usr/lib/dracut/modules.d/91tpm2-tss/module-setup.sh
> +#usr/lib/dracut/modules.d/91zipl
> +#usr/lib/dracut/modules.d/91zipl/install_zipl_cmdline.sh
> +#usr/lib/dracut/modules.d/91zipl/module-setup.sh
> +#usr/lib/dracut/modules.d/91zipl/parse-zipl.sh
> +#usr/lib/dracut/modules.d/95dcssblk
> +#usr/lib/dracut/modules.d/95dcssblk/module-setup.sh
> +#usr/lib/dracut/modules.d/95dcssblk/parse-dcssblk.sh
> #usr/lib/dracut/modules.d/95debug
> #usr/lib/dracut/modules.d/95debug/module-setup.sh
> #usr/lib/dracut/modules.d/95fstab-sys
> #usr/lib/dracut/modules.d/95fstab-sys/module-setup.sh
> #usr/lib/dracut/modules.d/95fstab-sys/mount-sys.sh
> +#usr/lib/dracut/modules.d/95lunmask
> +#usr/lib/dracut/modules.d/95lunmask/fc_transport_scan_lun.sh
> +#usr/lib/dracut/modules.d/95lunmask/module-setup.sh
> +#usr/lib/dracut/modules.d/95lunmask/parse-lunmask.sh
> +#usr/lib/dracut/modules.d/95lunmask/sas_transport_scan_lun.sh
> +#usr/lib/dracut/modules.d/95nvmf
> +#usr/lib/dracut/modules.d/95nvmf/95-nvmf-initqueue.rules
> +#usr/lib/dracut/modules.d/95nvmf/module-setup.sh
> +#usr/lib/dracut/modules.d/95nvmf/nvmf-autoconnect.sh
> +#usr/lib/dracut/modules.d/95nvmf/parse-nvmf-boot-connections.sh
> +#usr/lib/dracut/modules.d/95qeth_rules
> +#usr/lib/dracut/modules.d/95qeth_rules/module-setup.sh
> #usr/lib/dracut/modules.d/95rootfs-block
> #usr/lib/dracut/modules.d/95rootfs-block/block-genrules.sh
> #usr/lib/dracut/modules.d/95rootfs-block/module-setup.sh
> @@ -76,6 +167,7 @@ usr/lib/dracut
> #usr/lib/dracut/modules.d/98integrity
> #usr/lib/dracut/modules.d/98integrity/README
> #usr/lib/dracut/modules.d/98integrity/evm-enable.sh
> +#usr/lib/dracut/modules.d/98integrity/ima-keys-load.sh
> #usr/lib/dracut/modules.d/98integrity/ima-policy-load.sh
> #usr/lib/dracut/modules.d/98integrity/module-setup.sh
> #usr/lib/dracut/modules.d/98pollcdrom
> @@ -89,8 +181,8 @@ usr/lib/dracut
> #usr/lib/dracut/modules.d/98syslog/rsyslogd-start.sh
> #usr/lib/dracut/modules.d/98syslog/rsyslogd-stop.sh
> #usr/lib/dracut/modules.d/98syslog/syslog-cleanup.sh
> -#usr/lib/dracut/modules.d/98syslog/syslog-genrules.sh
> #usr/lib/dracut/modules.d/99base
> +#usr/lib/dracut/modules.d/99base/dracut-dev-lib.sh
> #usr/lib/dracut/modules.d/99base/dracut-lib.sh
> #usr/lib/dracut/modules.d/99base/init.sh
> #usr/lib/dracut/modules.d/99base/initqueue.sh
> @@ -104,9 +196,17 @@ usr/lib/dracut
> #usr/lib/dracut/modules.d/99img-lib
> #usr/lib/dracut/modules.d/99img-lib/img-lib.sh
> #usr/lib/dracut/modules.d/99img-lib/module-setup.sh
> +#usr/lib/dracut/modules.d/99memstrack
> +#usr/lib/dracut/modules.d/99memstrack/memstrack-report.sh
> +#usr/lib/dracut/modules.d/99memstrack/memstrack-start.sh
> +#usr/lib/dracut/modules.d/99memstrack/memstrack.service
> +#usr/lib/dracut/modules.d/99memstrack/module-setup.sh
> #usr/lib/dracut/modules.d/99shutdown
> #usr/lib/dracut/modules.d/99shutdown/module-setup.sh
> #usr/lib/dracut/modules.d/99shutdown/shutdown.sh
> +#usr/lib/dracut/modules.d/99squash
> +#usr/lib/dracut/modules.d/99squash/init-squash.sh
> +#usr/lib/dracut/modules.d/99squash/module-setup.sh
> #usr/lib/dracut/skipcpio
> #usr/lib/kernel
> #usr/lib/kernel/install.d
> @@ -130,5 +230,4 @@ usr/lib/dracut
> #usr/share/man/man8/dracut-pre-udev.service.8
> #usr/share/man/man8/dracut-shutdown.service.8
> #usr/share/man/man8/dracut.8
> -#usr/share/man/man8/mkinitrd-suse.8
> -#usr/share/man/man8/mkinitrd.8
> +#usr/share/pkgconfig/dracut.pc
> diff --git a/lfs/dracut b/lfs/dracut
> index c4f7231b1..6bf5825a6 100644
> --- a/lfs/dracut
> +++ b/lfs/dracut
> @@ -1,7 +1,7 @@
> ###############################################################################
> # #
> # IPFire.org - A linux based firewall #
> -# Copyright (C) 2007-2018 IPFire Team <info@ipfire.org> #
> +# Copyright (C) 2007-2022 IPFire Team <info@ipfire.org> #
> # #
> # This program is free software: you can redistribute it and/or modify #
> # it under the terms of the GNU General Public License as published by #
> @@ -24,7 +24,7 @@
>
> include Config
>
> -VER = 038
> +VER = 056
>
> THISAPP = dracut-$(VER)
> DL_FILE = $(THISAPP).tar.xz
> @@ -40,7 +40,7 @@ objects = $(DL_FILE)
>
> $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
>
> -$(DL_FILE)_MD5 = 4487bd98000cc536c5c3839a2f112831
> +$(DL_FILE)_MD5 = 17d51f3ccc3a3a790bab6da0355ca4c2
>
> install : $(TARGET)
>
> @@ -70,9 +70,10 @@ $(subst %,%_MD5,$(objects)) :
> $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
> @$(PREBUILD)
> @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE)
> - cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dracut-038-always-enable-mdraid.patch
> - cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dracut-038_add_hyperv-keyboard_and_sdhci-pci.patch
> + cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dracut-056-always-enable-mdraid.patch
> + cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dracut-056_add_hyperv-keyboard_and_sdhci-pci.patch
>
> + cd $(DIR_APP) && ./configure --prefix=/usr --sbindir=/sbin --sysconfdir=/etc
> cd $(DIR_APP) && make $(MAKETUNING)
> cd $(DIR_APP) && make install sbindir=/sbin sysconfdir=/etc
>
> diff --git a/src/patches/dracut-038-always-enable-mdraid.patch b/src/patches/dracut-038-always-enable-mdraid.patch
> deleted file mode 100644
> index a65e59a8a..000000000
> --- a/src/patches/dracut-038-always-enable-mdraid.patch
> +++ /dev/null
> @@ -1,55 +0,0 @@
> -diff --git a/modules.d/90mdraid/parse-md.sh b/modules.d/90mdraid/parse-md.sh
> -index dd7bda2..7bc944c 100755
> ---- a/modules.d/90mdraid/parse-md.sh
> -+++ b/modules.d/90mdraid/parse-md.sh
> -@@ -4,32 +4,26 @@
> -
> - MD_UUID=$(getargs rd.md.uuid -d rd_MD_UUID=)
> -
> --if ( ! [ -n "$MD_UUID" ] && ! getargbool 0 rd.auto ) || ! getargbool 1 rd.md -d -n rd_NO_MD; then
> -- info "rd.md=0: removing MD RAID activation"
> -- udevproperty rd_NO_MD=1
> --else
> -- # rewrite the md rules to only process the specified raid array
> -- if [ -n "$MD_UUID" ]; then
> -- for f in /etc/udev/rules.d/65-md-incremental*.rules; do
> -- [ -e "$f" ] || continue
> -- while read line; do
> -- if [ "${line%%UUID CHECK}" != "$line" ]; then
> -- printf 'IMPORT{program}="/sbin/mdadm --examine --export $tempnode"\n'
> -- for uuid in $MD_UUID; do
> -- printf 'ENV{MD_UUID}=="%s", GOTO="md_uuid_ok"\n' $uuid
> -- done;
> -- printf 'GOTO="md_end"\n'
> -- printf 'LABEL="md_uuid_ok"\n'
> -- else
> -- echo "$line"
> -- fi
> -- done < "${f}" > "${f}.new"
> -- mv "${f}.new" "$f"
> -- done
> -- fi
> -+# rewrite the md rules to only process the specified raid array
> -+if [ -n "$MD_UUID" ]; then
> -+ for f in /etc/udev/rules.d/65-md-incremental*.rules; do
> -+ [ -e "$f" ] || continue
> -+ while read line; do
> -+ if [ "${line%%UUID CHECK}" != "$line" ]; then
> -+ printf 'IMPORT{program}="/sbin/mdadm --examine --export $tempnode"\n'
> -+ for uuid in $MD_UUID; do
> -+ printf 'ENV{MD_UUID}=="%s", GOTO="md_uuid_ok"\n' $uuid
> -+ done;
> -+ printf 'GOTO="md_end"\n'
> -+ printf 'LABEL="md_uuid_ok"\n'
> -+ else
> -+ echo "$line"
> -+ fi
> -+ done < "${f}" > "${f}.new"
> -+ mv "${f}.new" "$f"
> -+ done
> - fi
> -
> --
> - if [ -e /etc/mdadm.conf ] && getargbool 1 rd.md.conf -d -n rd_NO_MDADMCONF; then
> - udevproperty rd_MDADMCONF=1
> - rm -f -- $hookdir/pre-pivot/*mdraid-cleanup.sh
> diff --git a/src/patches/dracut-038_add_hyperv-keyboard_and_sdhci-pci.patch b/src/patches/dracut-038_add_hyperv-keyboard_and_sdhci-pci.patch
> deleted file mode 100644
> index 19ed15fd3..000000000
> --- a/src/patches/dracut-038_add_hyperv-keyboard_and_sdhci-pci.patch
> +++ /dev/null
> @@ -1,12 +0,0 @@
> -diff -Naur dracut-038.org/modules.d/90kernel-modules/module-setup.sh dracut-038/modules.d/90kernel-modules/module-setup.sh
> ---- dracut-038.org/modules.d/90kernel-modules/module-setup.sh 2014-06-30 12:03:12.000000000 +0200
> -+++ dracut-038/modules.d/90kernel-modules/module-setup.sh 2015-05-05 14:58:56.820197839 +0200
> -@@ -47,7 +47,7 @@
> - atkbd i8042 usbhid hid-apple hid-sunplus hid-cherry hid-logitech \
> - hid-logitech-dj hid-microsoft firewire-ohci \
> - pcmcia usb_storage nvme hid-hyperv hv-vmbus \
> -- sdhci_acpi
> -+ hyperv-keyboard sdhci_acpi sdhci_pci
> -
> - if [[ "$(uname -p)" == arm* ]]; then
> - # arm specific modules
> diff --git a/src/patches/dracut-056-always-enable-mdraid.patch b/src/patches/dracut-056-always-enable-mdraid.patch
> new file mode 100644
> index 000000000..f293a7f75
> --- /dev/null
> +++ b/src/patches/dracut-056-always-enable-mdraid.patch
> @@ -0,0 +1,68 @@
> +diff --git a/modules.d/90mdraid/parse-md.sh b/modules.d/90mdraid/parse-md.sh
> +index c75e5f70f..9be292d75 100755
> +--- a/modules.d/90mdraid/parse-md.sh
> ++++ b/modules.d/90mdraid/parse-md.sh
> +@@ -7,37 +7,32 @@ MD_UUID=$(getargs rd.md.uuid -d rd_MD_UUID=)
> + MD_UUID=$(str_replace "$MD_UUID" "-" "")
> + MD_UUID=$(str_replace "$MD_UUID" ":" "")
> +
> +-if { [ -z "$MD_UUID" ] && ! getargbool 0 rd.auto; } || ! getargbool 1 rd.md -d -n rd_NO_MD; then
> +- info "rd.md=0: removing MD RAID activation"
> +- udevproperty rd_NO_MD=1
> +-else
> +- # rewrite the md rules to only process the specified raid array
> +- if [ -n "$MD_UUID" ]; then
> +- for f in /etc/udev/rules.d/65-md-incremental*.rules; do
> +- [ -e "$f" ] || continue
> +- while read -r line || [ -n "$line" ]; do
> +- if [ "${line%%UUID CHECK}" != "$line" ]; then
> +- for uuid in $MD_UUID; do
> +- printf 'ENV{ID_FS_UUID}=="%s", GOTO="md_uuid_ok"\n' "$(expr substr "$uuid" 1 8)-$(expr substr "$uuid" 9 4)-$(expr substr "$uuid" 13 4)-$(expr substr "$uuid" 17 4)-$(expr substr "$uuid" 21 12)"
> +- done
> +- # shellcheck disable=SC2016
> +- printf 'IMPORT{program}="/sbin/mdadm --examine --export $tempnode"\n'
> +- for uuid in $MD_UUID; do
> +- printf 'ENV{MD_UUID}=="%s", GOTO="md_uuid_ok"\n' "$(expr substr "$uuid" 1 8):$(expr substr "$uuid" 9 8):$(expr substr "$uuid" 17 8):$(expr substr "$uuid" 25 8)"
> +- done
> +- printf 'GOTO="md_end"\n'
> +- printf 'LABEL="md_uuid_ok"\n'
> +- else
> +- echo "$line"
> +- fi
> +- done < "${f}" > "${f}.new"
> +- mv "${f}.new" "$f"
> +- done
> +- for uuid in $MD_UUID; do
> +- uuid="$(expr substr "$uuid" 1 8):$(expr substr "$uuid" 9 8):$(expr substr "$uuid" 17 8):$(expr substr "$uuid" 25 8)"
> +- wait_for_dev "/dev/disk/by-id/md-uuid-${uuid}"
> +- done
> +- fi
> ++# rewrite the md rules to only process the specified raid array
> ++if [ -n "$MD_UUID" ]; then
> ++ for f in /etc/udev/rules.d/65-md-incremental*.rules; do
> ++ [ -e "$f" ] || continue
> ++ while read -r line || [ -n "$line" ]; do
> ++ if [ "${line%%UUID CHECK}" != "$line" ]; then
> ++ for uuid in $MD_UUID; do
> ++ printf 'ENV{ID_FS_UUID}=="%s", GOTO="md_uuid_ok"\n' "$(expr substr "$uuid" 1 8)-$(expr substr "$uuid" 9 4)-$(expr substr "$uuid" 13 4)-$(expr substr "$uuid" 17 4)-$(expr substr "$uuid" 21 12)"
> ++ done
> ++ # shellcheck disable=SC2016
> ++ printf 'IMPORT{program}="/sbin/mdadm --examine --export $tempnode"\n'
> ++ for uuid in $MD_UUID; do
> ++ printf 'ENV{MD_UUID}=="%s", GOTO="md_uuid_ok"\n' "$(expr substr "$uuid" 1 8):$(expr substr "$uuid" 9 8):$(expr substr "$uuid" 17 8):$(expr substr "$uuid" 25 8)"
> ++ done
> ++ printf 'GOTO="md_end"\n'
> ++ printf 'LABEL="md_uuid_ok"\n'
> ++ else
> ++ echo "$line"
> ++ fi
> ++ done < "${f}" > "${f}.new"
> ++ mv "${f}.new" "$f"
> ++ done
> ++ for uuid in $MD_UUID; do
> ++ uuid="$(expr substr "$uuid" 1 8):$(expr substr "$uuid" 9 8):$(expr substr "$uuid" 17 8):$(expr substr "$uuid" 25 8)"
> ++ wait_for_dev "/dev/disk/by-id/md-uuid-${uuid}"
> ++ done
> + fi
> +
> + if [ -e /etc/mdadm.conf ] && getargbool 1 rd.md.conf -d -n rd_NO_MDADMCONF; then
> diff --git a/src/patches/dracut-056_add_hyperv-keyboard_and_sdhci-pci.patch b/src/patches/dracut-056_add_hyperv-keyboard_and_sdhci-pci.patch
> new file mode 100644
> index 000000000..eb5e7c2f3
> --- /dev/null
> +++ b/src/patches/dracut-056_add_hyperv-keyboard_and_sdhci-pci.patch
> @@ -0,0 +1,12 @@
> +diff --git a/modules.d/90kernel-modules/module-setup.sh b/modules.d/90kernel-modules/module-setup.sh
> +index e2073a04f..7a96edb58 100755
> +--- a/modules.d/90kernel-modules/module-setup.sh
> ++++ b/modules.d/90kernel-modules/module-setup.sh
> +@@ -66,6 +66,7 @@ installkernel() {
> + yenta_socket \
> + atkbd i8042 usbhid firewire-ohci pcmcia hv-vmbus \
> + virtio virtio_ring virtio_pci pci_hyperv \
> ++ hyperv-keyboard sdhci_acpi sdhci_pci \
> + "=drivers/pcmcia"
> +
> + if [[ ${DRACUT_ARCH:-$(uname -m)} == arm* || ${DRACUT_ARCH:-$(uname -m)} == aarch64 || ${DRACUT_ARCH:-$(uname -m)} == riscv* ]]; then
> --
> 2.34.1
@@ -3,18 +3,24 @@ etc/dracut.conf.d
usr/bin/dracut
usr/bin/dracut-catimages
usr/bin/lsinitrd
-usr/bin/mkinitrd
usr/lib/dracut
#usr/lib/dracut/dracut-functions
#usr/lib/dracut/dracut-functions.sh
+#usr/lib/dracut/dracut-init.sh
#usr/lib/dracut/dracut-initramfs-restore
#usr/lib/dracut/dracut-install
#usr/lib/dracut/dracut-logger.sh
+#usr/lib/dracut/dracut-util
#usr/lib/dracut/dracut-version.sh
#usr/lib/dracut/dracut.conf.d
#usr/lib/dracut/modules.d
#usr/lib/dracut/modules.d/00bash
#usr/lib/dracut/modules.d/00bash/module-setup.sh
+#usr/lib/dracut/modules.d/00mksh
+#usr/lib/dracut/modules.d/00mksh/module-setup.sh
+#usr/lib/dracut/modules.d/00warpclock
+#usr/lib/dracut/modules.d/00warpclock/module-setup.sh
+#usr/lib/dracut/modules.d/00warpclock/warpclock.sh
#usr/lib/dracut/modules.d/02caps
#usr/lib/dracut/modules.d/02caps/README
#usr/lib/dracut/modules.d/02caps/caps.sh
@@ -22,26 +28,77 @@ usr/lib/dracut
#usr/lib/dracut/modules.d/03rescue
#usr/lib/dracut/modules.d/03rescue/module-setup.sh
#usr/lib/dracut/modules.d/04watchdog
+#usr/lib/dracut/modules.d/04watchdog-modules
+#usr/lib/dracut/modules.d/04watchdog-modules/module-setup.sh
#usr/lib/dracut/modules.d/04watchdog/module-setup.sh
#usr/lib/dracut/modules.d/04watchdog/watchdog-stop.sh
#usr/lib/dracut/modules.d/04watchdog/watchdog.sh
+#usr/lib/dracut/modules.d/06dbus-broker
+#usr/lib/dracut/modules.d/06dbus-broker/module-setup.sh
+#usr/lib/dracut/modules.d/06dbus-daemon
+#usr/lib/dracut/modules.d/06dbus-daemon/module-setup.sh
+#usr/lib/dracut/modules.d/06rngd
+#usr/lib/dracut/modules.d/06rngd/module-setup.sh
+#usr/lib/dracut/modules.d/06rngd/rngd.service
+#usr/lib/dracut/modules.d/09dbus
+#usr/lib/dracut/modules.d/09dbus/module-setup.sh
#usr/lib/dracut/modules.d/10i18n
#usr/lib/dracut/modules.d/10i18n/10-console.rules
#usr/lib/dracut/modules.d/10i18n/README
#usr/lib/dracut/modules.d/10i18n/console_init.sh
#usr/lib/dracut/modules.d/10i18n/module-setup.sh
#usr/lib/dracut/modules.d/10i18n/parse-i18n.sh
+#usr/lib/dracut/modules.d/35network-legacy
+#usr/lib/dracut/modules.d/35network-legacy/dhclient-script.sh
+#usr/lib/dracut/modules.d/35network-legacy/dhclient.conf
+#usr/lib/dracut/modules.d/35network-legacy/dhcp-multi.sh
+#usr/lib/dracut/modules.d/35network-legacy/ifup.sh
+#usr/lib/dracut/modules.d/35network-legacy/kill-dhclient.sh
+#usr/lib/dracut/modules.d/35network-legacy/module-setup.sh
+#usr/lib/dracut/modules.d/35network-legacy/net-genrules.sh
+#usr/lib/dracut/modules.d/35network-legacy/parse-bond.sh
+#usr/lib/dracut/modules.d/35network-legacy/parse-bridge.sh
+#usr/lib/dracut/modules.d/35network-legacy/parse-ibft.sh
+#usr/lib/dracut/modules.d/35network-legacy/parse-ifname.sh
+#usr/lib/dracut/modules.d/35network-legacy/parse-ip-opts.sh
+#usr/lib/dracut/modules.d/35network-legacy/parse-team.sh
+#usr/lib/dracut/modules.d/35network-legacy/parse-vlan.sh
+#usr/lib/dracut/modules.d/35network-manager
+#usr/lib/dracut/modules.d/35network-manager/initrd-no-auto-default.conf
+#usr/lib/dracut/modules.d/35network-manager/module-setup.sh
+#usr/lib/dracut/modules.d/35network-manager/nm-config.sh
+#usr/lib/dracut/modules.d/35network-manager/nm-initrd.service
+#usr/lib/dracut/modules.d/35network-manager/nm-lib.sh
+#usr/lib/dracut/modules.d/35network-manager/nm-run.sh
+#usr/lib/dracut/modules.d/35network-manager/nm-wait-online-initrd.service
+#usr/lib/dracut/modules.d/35network-wicked
+#usr/lib/dracut/modules.d/35network-wicked/module-setup.sh
+#usr/lib/dracut/modules.d/35network-wicked/wicked-config.sh
+#usr/lib/dracut/modules.d/35network-wicked/wicked-run.sh
#usr/lib/dracut/modules.d/50drm
#usr/lib/dracut/modules.d/50drm/module-setup.sh
+#usr/lib/dracut/modules.d/62bluetooth
+#usr/lib/dracut/modules.d/62bluetooth/module-setup.sh
+#usr/lib/dracut/modules.d/80lvmmerge
+#usr/lib/dracut/modules.d/80lvmmerge/README.md
+#usr/lib/dracut/modules.d/80lvmmerge/lvmmerge.sh
+#usr/lib/dracut/modules.d/80lvmmerge/module-setup.sh
+#usr/lib/dracut/modules.d/81cio_ignore
+#usr/lib/dracut/modules.d/81cio_ignore/module-setup.sh
+#usr/lib/dracut/modules.d/81cio_ignore/parse-cio_accept.sh
+#usr/lib/dracut/modules.d/90dmsquash-live-ntfs
+#usr/lib/dracut/modules.d/90dmsquash-live-ntfs/module-setup.sh
#usr/lib/dracut/modules.d/90kernel-modules
+#usr/lib/dracut/modules.d/90kernel-modules-extra
+#usr/lib/dracut/modules.d/90kernel-modules-extra/module-setup.sh
#usr/lib/dracut/modules.d/90kernel-modules/insmodpost.sh
#usr/lib/dracut/modules.d/90kernel-modules/module-setup.sh
#usr/lib/dracut/modules.d/90kernel-modules/parse-kernel.sh
+#usr/lib/dracut/modules.d/90kernel-network-modules
+#usr/lib/dracut/modules.d/90kernel-network-modules/module-setup.sh
#usr/lib/dracut/modules.d/90mdraid
#usr/lib/dracut/modules.d/90mdraid/59-persistent-storage-md.rules
#usr/lib/dracut/modules.d/90mdraid/65-md-incremental-imsm.rules
-#usr/lib/dracut/modules.d/90mdraid/md-noddf.sh
-#usr/lib/dracut/modules.d/90mdraid/md-noimsm.sh
#usr/lib/dracut/modules.d/90mdraid/md-shutdown.sh
#usr/lib/dracut/modules.d/90mdraid/mdmon-pre-shutdown.sh
#usr/lib/dracut/modules.d/90mdraid/mdmon-pre-udev.sh
@@ -51,11 +108,45 @@ usr/lib/dracut
#usr/lib/dracut/modules.d/90mdraid/mdraid_start.sh
#usr/lib/dracut/modules.d/90mdraid/module-setup.sh
#usr/lib/dracut/modules.d/90mdraid/parse-md.sh
+#usr/lib/dracut/modules.d/90nvdimm
+#usr/lib/dracut/modules.d/90nvdimm/module-setup.sh
+#usr/lib/dracut/modules.d/90ppcmac
+#usr/lib/dracut/modules.d/90ppcmac/load-thermal.sh
+#usr/lib/dracut/modules.d/90ppcmac/module-setup.sh
+#usr/lib/dracut/modules.d/91fido2
+#usr/lib/dracut/modules.d/91fido2/module-setup.sh
+#usr/lib/dracut/modules.d/91pcsc
+#usr/lib/dracut/modules.d/91pcsc/module-setup.sh
+#usr/lib/dracut/modules.d/91pcsc/pcscd.service
+#usr/lib/dracut/modules.d/91pcsc/pcscd.socket
+#usr/lib/dracut/modules.d/91pkcs11
+#usr/lib/dracut/modules.d/91pkcs11/module-setup.sh
+#usr/lib/dracut/modules.d/91tpm2-tss
+#usr/lib/dracut/modules.d/91tpm2-tss/module-setup.sh
+#usr/lib/dracut/modules.d/91zipl
+#usr/lib/dracut/modules.d/91zipl/install_zipl_cmdline.sh
+#usr/lib/dracut/modules.d/91zipl/module-setup.sh
+#usr/lib/dracut/modules.d/91zipl/parse-zipl.sh
+#usr/lib/dracut/modules.d/95dcssblk
+#usr/lib/dracut/modules.d/95dcssblk/module-setup.sh
+#usr/lib/dracut/modules.d/95dcssblk/parse-dcssblk.sh
#usr/lib/dracut/modules.d/95debug
#usr/lib/dracut/modules.d/95debug/module-setup.sh
#usr/lib/dracut/modules.d/95fstab-sys
#usr/lib/dracut/modules.d/95fstab-sys/module-setup.sh
#usr/lib/dracut/modules.d/95fstab-sys/mount-sys.sh
+#usr/lib/dracut/modules.d/95lunmask
+#usr/lib/dracut/modules.d/95lunmask/fc_transport_scan_lun.sh
+#usr/lib/dracut/modules.d/95lunmask/module-setup.sh
+#usr/lib/dracut/modules.d/95lunmask/parse-lunmask.sh
+#usr/lib/dracut/modules.d/95lunmask/sas_transport_scan_lun.sh
+#usr/lib/dracut/modules.d/95nvmf
+#usr/lib/dracut/modules.d/95nvmf/95-nvmf-initqueue.rules
+#usr/lib/dracut/modules.d/95nvmf/module-setup.sh
+#usr/lib/dracut/modules.d/95nvmf/nvmf-autoconnect.sh
+#usr/lib/dracut/modules.d/95nvmf/parse-nvmf-boot-connections.sh
+#usr/lib/dracut/modules.d/95qeth_rules
+#usr/lib/dracut/modules.d/95qeth_rules/module-setup.sh
#usr/lib/dracut/modules.d/95rootfs-block
#usr/lib/dracut/modules.d/95rootfs-block/block-genrules.sh
#usr/lib/dracut/modules.d/95rootfs-block/module-setup.sh
@@ -76,6 +167,7 @@ usr/lib/dracut
#usr/lib/dracut/modules.d/98integrity
#usr/lib/dracut/modules.d/98integrity/README
#usr/lib/dracut/modules.d/98integrity/evm-enable.sh
+#usr/lib/dracut/modules.d/98integrity/ima-keys-load.sh
#usr/lib/dracut/modules.d/98integrity/ima-policy-load.sh
#usr/lib/dracut/modules.d/98integrity/module-setup.sh
#usr/lib/dracut/modules.d/98pollcdrom
@@ -89,8 +181,8 @@ usr/lib/dracut
#usr/lib/dracut/modules.d/98syslog/rsyslogd-start.sh
#usr/lib/dracut/modules.d/98syslog/rsyslogd-stop.sh
#usr/lib/dracut/modules.d/98syslog/syslog-cleanup.sh
-#usr/lib/dracut/modules.d/98syslog/syslog-genrules.sh
#usr/lib/dracut/modules.d/99base
+#usr/lib/dracut/modules.d/99base/dracut-dev-lib.sh
#usr/lib/dracut/modules.d/99base/dracut-lib.sh
#usr/lib/dracut/modules.d/99base/init.sh
#usr/lib/dracut/modules.d/99base/initqueue.sh
@@ -104,9 +196,17 @@ usr/lib/dracut
#usr/lib/dracut/modules.d/99img-lib
#usr/lib/dracut/modules.d/99img-lib/img-lib.sh
#usr/lib/dracut/modules.d/99img-lib/module-setup.sh
+#usr/lib/dracut/modules.d/99memstrack
+#usr/lib/dracut/modules.d/99memstrack/memstrack-report.sh
+#usr/lib/dracut/modules.d/99memstrack/memstrack-start.sh
+#usr/lib/dracut/modules.d/99memstrack/memstrack.service
+#usr/lib/dracut/modules.d/99memstrack/module-setup.sh
#usr/lib/dracut/modules.d/99shutdown
#usr/lib/dracut/modules.d/99shutdown/module-setup.sh
#usr/lib/dracut/modules.d/99shutdown/shutdown.sh
+#usr/lib/dracut/modules.d/99squash
+#usr/lib/dracut/modules.d/99squash/init-squash.sh
+#usr/lib/dracut/modules.d/99squash/module-setup.sh
#usr/lib/dracut/skipcpio
#usr/lib/kernel
#usr/lib/kernel/install.d
@@ -130,5 +230,4 @@ usr/lib/dracut
#usr/share/man/man8/dracut-pre-udev.service.8
#usr/share/man/man8/dracut-shutdown.service.8
#usr/share/man/man8/dracut.8
-#usr/share/man/man8/mkinitrd-suse.8
-#usr/share/man/man8/mkinitrd.8
+#usr/share/pkgconfig/dracut.pc
@@ -1,7 +1,7 @@
###############################################################################
# #
# IPFire.org - A linux based firewall #
-# Copyright (C) 2007-2018 IPFire Team <info@ipfire.org> #
+# Copyright (C) 2007-2022 IPFire Team <info@ipfire.org> #
# #
# This program is free software: you can redistribute it and/or modify #
# it under the terms of the GNU General Public License as published by #
@@ -24,7 +24,7 @@
include Config
-VER = 038
+VER = 056
THISAPP = dracut-$(VER)
DL_FILE = $(THISAPP).tar.xz
@@ -40,7 +40,7 @@ objects = $(DL_FILE)
$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
-$(DL_FILE)_MD5 = 4487bd98000cc536c5c3839a2f112831
+$(DL_FILE)_MD5 = 17d51f3ccc3a3a790bab6da0355ca4c2
install : $(TARGET)
@@ -70,9 +70,10 @@ $(subst %,%_MD5,$(objects)) :
$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
@$(PREBUILD)
@rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE)
- cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dracut-038-always-enable-mdraid.patch
- cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dracut-038_add_hyperv-keyboard_and_sdhci-pci.patch
+ cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dracut-056-always-enable-mdraid.patch
+ cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dracut-056_add_hyperv-keyboard_and_sdhci-pci.patch
+ cd $(DIR_APP) && ./configure --prefix=/usr --sbindir=/sbin --sysconfdir=/etc
cd $(DIR_APP) && make $(MAKETUNING)
cd $(DIR_APP) && make install sbindir=/sbin sysconfdir=/etc
deleted file mode 100644
@@ -1,55 +0,0 @@
-diff --git a/modules.d/90mdraid/parse-md.sh b/modules.d/90mdraid/parse-md.sh
-index dd7bda2..7bc944c 100755
---- a/modules.d/90mdraid/parse-md.sh
-+++ b/modules.d/90mdraid/parse-md.sh
-@@ -4,32 +4,26 @@
-
- MD_UUID=$(getargs rd.md.uuid -d rd_MD_UUID=)
-
--if ( ! [ -n "$MD_UUID" ] && ! getargbool 0 rd.auto ) || ! getargbool 1 rd.md -d -n rd_NO_MD; then
-- info "rd.md=0: removing MD RAID activation"
-- udevproperty rd_NO_MD=1
--else
-- # rewrite the md rules to only process the specified raid array
-- if [ -n "$MD_UUID" ]; then
-- for f in /etc/udev/rules.d/65-md-incremental*.rules; do
-- [ -e "$f" ] || continue
-- while read line; do
-- if [ "${line%%UUID CHECK}" != "$line" ]; then
-- printf 'IMPORT{program}="/sbin/mdadm --examine --export $tempnode"\n'
-- for uuid in $MD_UUID; do
-- printf 'ENV{MD_UUID}=="%s", GOTO="md_uuid_ok"\n' $uuid
-- done;
-- printf 'GOTO="md_end"\n'
-- printf 'LABEL="md_uuid_ok"\n'
-- else
-- echo "$line"
-- fi
-- done < "${f}" > "${f}.new"
-- mv "${f}.new" "$f"
-- done
-- fi
-+# rewrite the md rules to only process the specified raid array
-+if [ -n "$MD_UUID" ]; then
-+ for f in /etc/udev/rules.d/65-md-incremental*.rules; do
-+ [ -e "$f" ] || continue
-+ while read line; do
-+ if [ "${line%%UUID CHECK}" != "$line" ]; then
-+ printf 'IMPORT{program}="/sbin/mdadm --examine --export $tempnode"\n'
-+ for uuid in $MD_UUID; do
-+ printf 'ENV{MD_UUID}=="%s", GOTO="md_uuid_ok"\n' $uuid
-+ done;
-+ printf 'GOTO="md_end"\n'
-+ printf 'LABEL="md_uuid_ok"\n'
-+ else
-+ echo "$line"
-+ fi
-+ done < "${f}" > "${f}.new"
-+ mv "${f}.new" "$f"
-+ done
- fi
-
--
- if [ -e /etc/mdadm.conf ] && getargbool 1 rd.md.conf -d -n rd_NO_MDADMCONF; then
- udevproperty rd_MDADMCONF=1
- rm -f -- $hookdir/pre-pivot/*mdraid-cleanup.sh
deleted file mode 100644
@@ -1,12 +0,0 @@
-diff -Naur dracut-038.org/modules.d/90kernel-modules/module-setup.sh dracut-038/modules.d/90kernel-modules/module-setup.sh
---- dracut-038.org/modules.d/90kernel-modules/module-setup.sh 2014-06-30 12:03:12.000000000 +0200
-+++ dracut-038/modules.d/90kernel-modules/module-setup.sh 2015-05-05 14:58:56.820197839 +0200
-@@ -47,7 +47,7 @@
- atkbd i8042 usbhid hid-apple hid-sunplus hid-cherry hid-logitech \
- hid-logitech-dj hid-microsoft firewire-ohci \
- pcmcia usb_storage nvme hid-hyperv hv-vmbus \
-- sdhci_acpi
-+ hyperv-keyboard sdhci_acpi sdhci_pci
-
- if [[ "$(uname -p)" == arm* ]]; then
- # arm specific modules
new file mode 100644
@@ -0,0 +1,68 @@
+diff --git a/modules.d/90mdraid/parse-md.sh b/modules.d/90mdraid/parse-md.sh
+index c75e5f70f..9be292d75 100755
+--- a/modules.d/90mdraid/parse-md.sh
++++ b/modules.d/90mdraid/parse-md.sh
+@@ -7,37 +7,32 @@ MD_UUID=$(getargs rd.md.uuid -d rd_MD_UUID=)
+ MD_UUID=$(str_replace "$MD_UUID" "-" "")
+ MD_UUID=$(str_replace "$MD_UUID" ":" "")
+
+-if { [ -z "$MD_UUID" ] && ! getargbool 0 rd.auto; } || ! getargbool 1 rd.md -d -n rd_NO_MD; then
+- info "rd.md=0: removing MD RAID activation"
+- udevproperty rd_NO_MD=1
+-else
+- # rewrite the md rules to only process the specified raid array
+- if [ -n "$MD_UUID" ]; then
+- for f in /etc/udev/rules.d/65-md-incremental*.rules; do
+- [ -e "$f" ] || continue
+- while read -r line || [ -n "$line" ]; do
+- if [ "${line%%UUID CHECK}" != "$line" ]; then
+- for uuid in $MD_UUID; do
+- printf 'ENV{ID_FS_UUID}=="%s", GOTO="md_uuid_ok"\n' "$(expr substr "$uuid" 1 8)-$(expr substr "$uuid" 9 4)-$(expr substr "$uuid" 13 4)-$(expr substr "$uuid" 17 4)-$(expr substr "$uuid" 21 12)"
+- done
+- # shellcheck disable=SC2016
+- printf 'IMPORT{program}="/sbin/mdadm --examine --export $tempnode"\n'
+- for uuid in $MD_UUID; do
+- printf 'ENV{MD_UUID}=="%s", GOTO="md_uuid_ok"\n' "$(expr substr "$uuid" 1 8):$(expr substr "$uuid" 9 8):$(expr substr "$uuid" 17 8):$(expr substr "$uuid" 25 8)"
+- done
+- printf 'GOTO="md_end"\n'
+- printf 'LABEL="md_uuid_ok"\n'
+- else
+- echo "$line"
+- fi
+- done < "${f}" > "${f}.new"
+- mv "${f}.new" "$f"
+- done
+- for uuid in $MD_UUID; do
+- uuid="$(expr substr "$uuid" 1 8):$(expr substr "$uuid" 9 8):$(expr substr "$uuid" 17 8):$(expr substr "$uuid" 25 8)"
+- wait_for_dev "/dev/disk/by-id/md-uuid-${uuid}"
+- done
+- fi
++# rewrite the md rules to only process the specified raid array
++if [ -n "$MD_UUID" ]; then
++ for f in /etc/udev/rules.d/65-md-incremental*.rules; do
++ [ -e "$f" ] || continue
++ while read -r line || [ -n "$line" ]; do
++ if [ "${line%%UUID CHECK}" != "$line" ]; then
++ for uuid in $MD_UUID; do
++ printf 'ENV{ID_FS_UUID}=="%s", GOTO="md_uuid_ok"\n' "$(expr substr "$uuid" 1 8)-$(expr substr "$uuid" 9 4)-$(expr substr "$uuid" 13 4)-$(expr substr "$uuid" 17 4)-$(expr substr "$uuid" 21 12)"
++ done
++ # shellcheck disable=SC2016
++ printf 'IMPORT{program}="/sbin/mdadm --examine --export $tempnode"\n'
++ for uuid in $MD_UUID; do
++ printf 'ENV{MD_UUID}=="%s", GOTO="md_uuid_ok"\n' "$(expr substr "$uuid" 1 8):$(expr substr "$uuid" 9 8):$(expr substr "$uuid" 17 8):$(expr substr "$uuid" 25 8)"
++ done
++ printf 'GOTO="md_end"\n'
++ printf 'LABEL="md_uuid_ok"\n'
++ else
++ echo "$line"
++ fi
++ done < "${f}" > "${f}.new"
++ mv "${f}.new" "$f"
++ done
++ for uuid in $MD_UUID; do
++ uuid="$(expr substr "$uuid" 1 8):$(expr substr "$uuid" 9 8):$(expr substr "$uuid" 17 8):$(expr substr "$uuid" 25 8)"
++ wait_for_dev "/dev/disk/by-id/md-uuid-${uuid}"
++ done
+ fi
+
+ if [ -e /etc/mdadm.conf ] && getargbool 1 rd.md.conf -d -n rd_NO_MDADMCONF; then
new file mode 100644
@@ -0,0 +1,12 @@
+diff --git a/modules.d/90kernel-modules/module-setup.sh b/modules.d/90kernel-modules/module-setup.sh
+index e2073a04f..7a96edb58 100755
+--- a/modules.d/90kernel-modules/module-setup.sh
++++ b/modules.d/90kernel-modules/module-setup.sh
+@@ -66,6 +66,7 @@ installkernel() {
+ yenta_socket \
+ atkbd i8042 usbhid firewire-ohci pcmcia hv-vmbus \
+ virtio virtio_ring virtio_pci pci_hyperv \
++ hyperv-keyboard sdhci_acpi sdhci_pci \
+ "=drivers/pcmcia"
+
+ if [[ ${DRACUT_ARCH:-$(uname -m)} == arm* || ${DRACUT_ARCH:-$(uname -m)} == aarch64 || ${DRACUT_ARCH:-$(uname -m)} == riscv* ]]; then