dracut: Update to 056

Message ID 6edae0df-4931-0b83-dcd3-cd22146e6074@ipfire.org
State Superseded
Headers
Series dracut: Update to 056 |

Commit Message

Peter Müller March 3, 2022, 9:22 p.m. UTC
  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

Michael Tremer March 4, 2022, 11:18 a.m. UTC | #1
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
  

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