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
