diff --git a/.dracut.metadata b/.dracut.metadata
new file mode 100644
index 0000000..2b5b1f4
--- /dev/null
+++ b/.dracut.metadata
@@ -0,0 +1 @@
+62ab5e53c734ad6ec77ebf0580383e8b6de96d16 SOURCES/dracut-049.tar.xz
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..7c9fc36
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+SOURCES/dracut-049.tar.xz
diff --git a/SOURCES/0001.patch b/SOURCES/0001.patch
new file mode 100644
index 0000000..909aec1
--- /dev/null
+++ b/SOURCES/0001.patch
@@ -0,0 +1,53 @@
+From 3cb0f01a1e8a05dd4c6412907f5e9a398b2ace2c Mon Sep 17 00:00:00 2001
+From: Lukas Nykryn <lnykryn@redhat.com>
+Date: Fri, 31 Aug 2018 13:06:34 +0200
+Subject: [PATCH] Revert "use cp --reflink=auto"
+
+This reverts commit 8cd8820547257299a33b2d1e3ecf7c6241a569b2.
+Resolves: #1623990
+---
+ 50-dracut.install            | 2 +-
+ 51-dracut-rescue-postinst.sh | 2 +-
+ 51-dracut-rescue.install     | 2 +-
+ 3 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/50-dracut.install b/50-dracut.install
+index 64e3549f..ec59dcb3 100755
+--- a/50-dracut.install
++++ b/50-dracut.install
+@@ -25,7 +25,7 @@ case "$COMMAND" in
+         if [[ -f ${INITRD_IMAGE_PREGENERATED} ]]; then
+             # we found an initrd at the same place as the kernel
+             # use this and don't generate a new one
+-            cp --reflink=auto "$INITRD_IMAGE_PREGENERATED" "$BOOT_DIR_ABS/$INITRD" \
++            cp "$INITRD_IMAGE_PREGENERATED" "$BOOT_DIR_ABS/$INITRD" \
+                 && chown root:root "$BOOT_DIR_ABS/$INITRD" \
+                 && chmod 0600 "$BOOT_DIR_ABS/$INITRD" \
+                 && exit 0
+diff --git a/51-dracut-rescue-postinst.sh b/51-dracut-rescue-postinst.sh
+index 67f5b717..23158552 100755
+--- a/51-dracut-rescue-postinst.sh
++++ b/51-dracut-rescue-postinst.sh
+@@ -57,7 +57,7 @@ if [[ ! -f $INITRDFILE ]]; then
+ fi
+ 
+ if [[ ! -f $NEW_KERNEL_IMAGE ]]; then
+-    cp --reflink=auto "$KERNEL_IMAGE" "$NEW_KERNEL_IMAGE"
++    cp "$KERNEL_IMAGE" "$NEW_KERNEL_IMAGE"
+     ((ret+=$?))
+ fi
+ 
+diff --git a/51-dracut-rescue.install b/51-dracut-rescue.install
+index 6ddafdb6..426ddee5 100755
+--- a/51-dracut-rescue.install
++++ b/51-dracut-rescue.install
+@@ -93,7 +93,7 @@ case "$COMMAND" in
+ 
+         [[ -d "$BOOT_DIR_ABS" ]] || mkdir -p "$BOOT_DIR_ABS"
+ 
+-        if ! cp --reflink=auto "$KERNEL_IMAGE" "$BOOT_DIR_ABS/$KERNEL"; then
++        if ! cp "$KERNEL_IMAGE" "$BOOT_DIR_ABS/$KERNEL"; then
+             echo "Can't copy '$KERNEL_IMAGE to '$BOOT_DIR_ABS/$KERNEL'!" >&2
+         fi
+ 
+
diff --git a/SOURCES/0002.patch b/SOURCES/0002.patch
new file mode 100644
index 0000000..0d63bf8
--- /dev/null
+++ b/SOURCES/0002.patch
@@ -0,0 +1,28 @@
+From 2e5265c80e03112c75888a31c170963e913070ed Mon Sep 17 00:00:00 2001
+From: Lukas Nykryn <lnykryn@redhat.com>
+Date: Tue, 14 Aug 2018 14:04:02 +0200
+Subject: [PATCH] spec: return old provides
+
+---
+ dracut.spec | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+diff --git a/dracut.spec b/dracut.spec
+index 155868ce..553280c3 100644
+--- a/dracut.spec
++++ b/dracut.spec
+@@ -65,6 +65,13 @@ Provides:  dracut-fips = %{version}-%{release}
+ Obsoletes: dracut-fips-aesni <= 047
+ Provides:  dracut-fips-aesni = %{version}-%{release}
+ 
++Obsoletes: dracut-kernel < 005
++Provides:  dracut-kernel = %{version}-%{release}
++
++Obsoletes: dracut < 030
++Obsoletes: dracut-norescue < 030
++Provides:  dracut-norescue = %{version}-%{release}
++
+ Requires: bash >= 4
+ Requires: coreutils
+ Requires: cpio
+
diff --git a/SOURCES/0003.patch b/SOURCES/0003.patch
new file mode 100644
index 0000000..c385522
--- /dev/null
+++ b/SOURCES/0003.patch
@@ -0,0 +1,44 @@
+From 44c9d019d88df05f69f2112aeae34bdbff61cee6 Mon Sep 17 00:00:00 2001
+From: Kairui Song <kasong@redhat.com>
+Date: Sat, 29 Sep 2018 17:14:31 +0800
+Subject: [PATCH] dracut.spec: Fix error introduced by 70291ed
+
+70291e0 ('dracut.spec: Add dracut-squash package') introduced a new
+dracut-squash package, but by accident it overrided some other package
+spec and the dependency name is wrong. This patch will fix it.
+---
+ dracut.spec | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/dracut.spec b/dracut.spec
+index 553280c3..de57703c 100644
+--- a/dracut.spec
++++ b/dracut.spec
+@@ -188,7 +188,7 @@ This package contains tools to assemble the local initrd and host configuration.
+ %package squash
+ Summary: dracut module to build an initramfs with most files in a squashfs image
+ Requires: %{name} = %{version}-%{release}
+-Requires: squash-tools
++Requires: squashfs-tools
+ 
+ %description squash
+ This package provides a dracut module to build an initramfs, but store most files
+@@ -459,14 +459,14 @@ install -m 0755 51-dracut-rescue-postinst.sh $RPM_BUILD_ROOT%{_sysconfdir}/kerne
+ %doc %{_mandir}/man8/dracut-catimages.8*
+ %endif
+ 
+-%files squash
+-%{dracutlibdir}/modules.d/99squash
+-
+ %{_bindir}/dracut-catimages
+ %dir /boot/dracut
+ %dir /var/lib/dracut
+ %dir /var/lib/dracut/overlay
+ 
++%files squash
++%{dracutlibdir}/modules.d/99squash
++
+ %files config-generic
+ %{dracutlibdir}/dracut.conf.d/02-generic-image.conf
+ 
+
diff --git a/SOURCES/0004.patch b/SOURCES/0004.patch
new file mode 100644
index 0000000..3aff94b
--- /dev/null
+++ b/SOURCES/0004.patch
@@ -0,0 +1,34 @@
+From 3b9b20d237b3ec939b1bf9dd065c875fee54fe63 Mon Sep 17 00:00:00 2001
+From: Kairui Song <kasong@redhat.com>
+Date: Fri, 12 Oct 2018 13:07:13 +0800
+Subject: [PATCH] 40network: Don't include 40network by default
+
+commit 7347391 ('network-legacy: split off from network module')
+splitted network function to network-legacy and removed check() function
+of 40network. This caused 40network to be included even if network is
+not needed.
+
+Signed-off-by: Kairui Song <kasong@redhat.com>
+
+Cherry-picked from: 83cbc06ab91288e2d931b4f36935bfdb79a99b0e
+Resolves: #1639088
+---
+ modules.d/40network/module-setup.sh | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/modules.d/40network/module-setup.sh b/modules.d/40network/module-setup.sh
+index 57c0a45e..e8541636 100755
+--- a/modules.d/40network/module-setup.sh
++++ b/modules.d/40network/module-setup.sh
+@@ -1,5 +1,10 @@
+ #!/bin/bash
+ 
++# called by dracut
++check() {
++    return 255
++}
++
+ # called by dracut
+ depends() {
+     echo -n "kernel-network-modules "
+
diff --git a/SOURCES/0005.patch b/SOURCES/0005.patch
new file mode 100644
index 0000000..1ff4258
--- /dev/null
+++ b/SOURCES/0005.patch
@@ -0,0 +1,34 @@
+From b63e0c5040d9881f8c3c0bc09fc21c6588c8a26f Mon Sep 17 00:00:00 2001
+From: Kairui Song <kasong@redhat.com>
+Date: Thu, 18 Oct 2018 17:05:22 +0800
+Subject: [PATCH] 99squash: Don't clean up squahfs on isolate
+
+The only time we need to cleanup squahfs manually is on switch root, to
+release resource and memory. We've covered that by setting
+"Conflicts=initrd-switch-root.target" for squash cleanup service.
+On shutdown systemd will take care of squahfs mounts. But for other
+isolate, files in initramfs are most likely still required, so don't
+clean up squahfs. For example, kdump's emergency handler will isolate
+into its own target, if squahfs is cleaned up it will fail.
+
+Signed-off-by: Kairui Song <kasong@redhat.com>
+
+Cherry-picked from: b9af0fcd
+Resolves: #1641423
+---
+ modules.d/99squash/squash-mnt-clear.service | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/modules.d/99squash/squash-mnt-clear.service b/modules.d/99squash/squash-mnt-clear.service
+index 8dd17812..f8d5db46 100644
+--- a/modules.d/99squash/squash-mnt-clear.service
++++ b/modules.d/99squash/squash-mnt-clear.service
+@@ -9,6 +9,7 @@ After=dracut-initqueue.service dracut-pre-pivot.service
+ Before=initrd-cleanup.service
+ ConditionPathExists=/squash/root
+ Conflicts=initrd-switch-root.target
++IgnoreOnIsolate=true
+ 
+ [Service]
+ Type=oneshot
+
diff --git a/SOURCES/0006.patch b/SOURCES/0006.patch
new file mode 100644
index 0000000..e03762e
--- /dev/null
+++ b/SOURCES/0006.patch
@@ -0,0 +1,46 @@
+From 5541b0c46f02f678c698aa523db7a86dde82a947 Mon Sep 17 00:00:00 2001
+From: Lukas Nykryn <lnykryn@redhat.com>
+Date: Thu, 25 Oct 2018 15:30:36 +0200
+Subject: [PATCH] dracut.install: call dracut with --force
+
+The kernel-install is called even if you run make install.
+Since we don't call dracut with -f a second make install will fail
+because initrd with same version is already there.
+This makes kernel developers feel miserable.
+
+https://bugzilla.redhat.com/show_bug.cgi?id=1642402
+
+Cherry-picked from: 48c283a2
+Resolves: #1642402
+---
+ 50-dracut.install        | 2 +-
+ 51-dracut-rescue.install | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/50-dracut.install b/50-dracut.install
+index ec59dcb3..139ff82e 100755
+--- a/50-dracut.install
++++ b/50-dracut.install
+@@ -49,7 +49,7 @@ case "$COMMAND" in
+                 break
+             fi
+         done
+-	dracut ${noimageifnotneeded:+--noimageifnotneeded} "$BOOT_DIR_ABS/$INITRD" "$KERNEL_VERSION"
++	dracut -f ${noimageifnotneeded:+--noimageifnotneeded} "$BOOT_DIR_ABS/$INITRD" "$KERNEL_VERSION"
+         ret=$?
+ 	;;
+     remove)
+diff --git a/51-dracut-rescue.install b/51-dracut-rescue.install
+index 426ddee5..0580062f 100755
+--- a/51-dracut-rescue.install
++++ b/51-dracut-rescue.install
+@@ -98,7 +98,7 @@ case "$COMMAND" in
+         fi
+ 
+         if [[ ! -f "$BOOT_DIR_ABS/$INITRD" ]]; then
+-            dracut --no-hostonly -a "rescue" "$BOOT_DIR_ABS/$INITRD" "$KERNEL_VERSION"
++            dracut -f --no-hostonly -a "rescue" "$BOOT_DIR_ABS/$INITRD" "$KERNEL_VERSION"
+             ((ret+=$?))
+         fi
+ 
+
diff --git a/SOURCES/0007.patch b/SOURCES/0007.patch
new file mode 100644
index 0000000..ac24ddf
--- /dev/null
+++ b/SOURCES/0007.patch
@@ -0,0 +1,41 @@
+From d8386b5d8fae2e45a27635c48ecab63abba10e39 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Wed, 24 Oct 2018 15:14:03 +0200
+Subject: [PATCH] Makefile: add srpm target
+
+---
+ Makefile | 13 ++++++++++++-
+ 1 file changed, 12 insertions(+), 1 deletion(-)
+
+diff --git a/Makefile b/Makefile
+index 80623437..503d069f 100644
+--- a/Makefile
++++ b/Makefile
+@@ -40,7 +40,7 @@ man8pages = dracut.8 \
+ 
+ manpages = $(man1pages) $(man5pages) $(man7pages) $(man8pages)
+ 
+-.PHONY: install clean archive rpm testimage test all check AUTHORS doc dracut-version.sh
++.PHONY: install clean archive rpm srpm testimage test all check AUTHORS doc dracut-version.sh
+ 
+ all: dracut-version.sh dracut.pc dracut-install skipcpio/skipcpio
+ 
+@@ -216,6 +216,17 @@ rpm: dracut-$(VERSION).tar.xz syncheck
+ 		--define "_rpmdir $$PWD" -ba dracut.spec; ) && \
+ 	( mv "$$rpmbuild"/{,$$(arch)/}*.rpm $(DESTDIR).; rm -fr -- "$$rpmbuild"; ls $(DESTDIR)*.rpm )
+ 
++srpm: dracut-$(VERSION).tar.xz syncheck
++	rpmbuild=$$(mktemp -d -t rpmbuild-dracut.XXXXXX); src=$$(pwd); \
++	cp dracut-$(VERSION).tar.xz "$$rpmbuild"; \
++	LC_MESSAGES=C $$src/git2spec.pl $(VERSION) "$$rpmbuild" < dracut.spec > $$rpmbuild/dracut.spec; \
++	(cd "$$rpmbuild"; \
++	[ -f $$src/lgpl-2.1.txt ] && cp $$src/lgpl-2.1.txt . || wget https://www.gnu.org/licenses/lgpl-2.1.txt; \
++	rpmbuild --define "_topdir $$PWD" --define "_sourcedir $$PWD" \
++	        --define "_specdir $$PWD" --define "_srcrpmdir $$PWD" \
++		--define "_rpmdir $$PWD" -bs dracut.spec; ) && \
++	( mv "$$rpmbuild"/*.src.rpm $(DESTDIR).; rm -fr -- "$$rpmbuild"; ls $(DESTDIR)*.rpm )
++
+ syncheck:
+ 	@ret=0;for i in dracut-initramfs-restore.sh modules.d/*/*.sh; do \
+                 [ "$${i##*/}" = "module-setup.sh" ] && continue; \
+
diff --git a/SOURCES/0008.patch b/SOURCES/0008.patch
new file mode 100644
index 0000000..003e514
--- /dev/null
+++ b/SOURCES/0008.patch
@@ -0,0 +1,38 @@
+From 90054e4f1f2f64cb9a2b06b44b5a82b293c387dd Mon Sep 17 00:00:00 2001
+From: Lukas Nykryn <lnykryn@redhat.com>
+Date: Thu, 10 Jan 2019 18:08:32 +0100
+Subject: [PATCH] 95iscsi: decouple iscsi from sysinit.target
+
+---
+ modules.d/95iscsi/module-setup.sh | 17 +++++++++++++++++
+ 1 file changed, 17 insertions(+)
+
+diff --git a/modules.d/95iscsi/module-setup.sh b/modules.d/95iscsi/module-setup.sh
+index 5c2073bb..ae1924cc 100755
+--- a/modules.d/95iscsi/module-setup.sh
++++ b/modules.d/95iscsi/module-setup.sh
+@@ -265,6 +265,23 @@ install() {
+             echo "After=dracut-cmdline.service"
+             echo "Before=dracut-initqueue.service"
+         ) > "${initdir}/$systemdsystemunitdir/iscsid.service.d/dracut.conf"
++
++        # The iscsi deamon does not need to wait for any storage inside initrd
++        mkdir -p "${initdir}/$systemdsystemunitdir/iscsid.socket.d"
++        (
++            echo "[Unit]"
++            echo "DefaultDependencies=no"
++            echo "Conflicts=shutdown.target"
++            echo "Before=shutdown.target sockets.target"
++        ) > "${initdir}/$systemdsystemunitdir/iscsid.socket.d/dracut.conf"
++        mkdir -p "${initdir}/$systemdsystemunitdir/iscsuio.socket.d"
++        (
++            echo "[Unit]"
++            echo "DefaultDependencies=no"
++            echo "Conflicts=shutdown.target"
++            echo "Before=shutdown.target sockets.target"
++        ) > "${initdir}/$systemdsystemunitdir/iscsuio.socket.d/dracut.conf"
++
+     fi
+     inst_dir /var/lib/iscsi
+     dracut_need_initqueue
+
diff --git a/SOURCES/0009.patch b/SOURCES/0009.patch
new file mode 100644
index 0000000..c93daeb
--- /dev/null
+++ b/SOURCES/0009.patch
@@ -0,0 +1,30 @@
+From e44c26f0fc6b29fb42cbc6d5ab57e34b07aa2ce1 Mon Sep 17 00:00:00 2001
+From: Lukas Nykryn <lnykryn@redhat.com>
+Date: Tue, 15 Jan 2019 16:42:38 +0100
+Subject: [PATCH] 95iscsi: fix a typo in a name of iscsiuio
+
+---
+ modules.d/95iscsi/module-setup.sh | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/modules.d/95iscsi/module-setup.sh b/modules.d/95iscsi/module-setup.sh
+index ae1924cc..79af4a47 100755
+--- a/modules.d/95iscsi/module-setup.sh
++++ b/modules.d/95iscsi/module-setup.sh
+@@ -274,13 +274,13 @@ install() {
+             echo "Conflicts=shutdown.target"
+             echo "Before=shutdown.target sockets.target"
+         ) > "${initdir}/$systemdsystemunitdir/iscsid.socket.d/dracut.conf"
+-        mkdir -p "${initdir}/$systemdsystemunitdir/iscsuio.socket.d"
++        mkdir -p "${initdir}/$systemdsystemunitdir/iscsiuio.socket.d"
+         (
+             echo "[Unit]"
+             echo "DefaultDependencies=no"
+             echo "Conflicts=shutdown.target"
+             echo "Before=shutdown.target sockets.target"
+-        ) > "${initdir}/$systemdsystemunitdir/iscsuio.socket.d/dracut.conf"
++        ) > "${initdir}/$systemdsystemunitdir/iscsiuio.socket.d/dracut.conf"
+ 
+     fi
+     inst_dir /var/lib/iscsi
+
diff --git a/SOURCES/0010.patch b/SOURCES/0010.patch
new file mode 100644
index 0000000..59fca50
--- /dev/null
+++ b/SOURCES/0010.patch
@@ -0,0 +1,26 @@
+From c787ad30ab5467c9f3c740a1cd7ed8b3198b9719 Mon Sep 17 00:00:00 2001
+From: Lukas Nykryn <lnykryn@redhat.com>
+Date: Tue, 21 May 2019 17:58:38 +0200
+Subject: [PATCH] net-lib: strstr is not for globs
+
+(cherry picked from commit 1a3dcc8b46c967445794e679280a3fb3b8e77ae0)
+
+Resolves: #1712469
+---
+ modules.d/40network/net-lib.sh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/modules.d/40network/net-lib.sh b/modules.d/40network/net-lib.sh
+index 1e7f1b33..7b93f25e 100755
+--- a/modules.d/40network/net-lib.sh
++++ b/modules.d/40network/net-lib.sh
+@@ -463,7 +463,7 @@ ip_to_var() {
+         #         ip=<ipv4-address> means anaconda-style static config argument cluster
+         autoconf="$1"
+ 
+-        if strstr "$autoconf" "*.*.*.*"; then
++        if strglob "$autoconf" "*.*.*.*"; then
+             # ip=<ipv4-address> means anaconda-style static config argument cluster:
+             # ip=<ip> gateway=<gw> netmask=<nm> hostname=<host> mtu=<mtu>
+             # ksdevice={link|bootif|ibft|<MAC>|<ifname>}
+
diff --git a/SOURCES/0011.patch b/SOURCES/0011.patch
new file mode 100644
index 0000000..190a00d
--- /dev/null
+++ b/SOURCES/0011.patch
@@ -0,0 +1,40 @@
+From 81b59fbbd6ebeee05b5d6869ae4f36bb9e486f72 Mon Sep 17 00:00:00 2001
+From: Lukas Nykryn <lnykryn@redhat.com>
+Date: Tue, 8 Jan 2019 17:16:07 +0100
+Subject: [PATCH] 95iscsi: rd.iscsi.initiator should have priority over stored
+ configuration
+
+(cherry picked from commit 61afc704548cecc7f7d2fa3b5f1319e790cc5bee)
+
+Resolves: #1664062
+---
+ modules.d/95iscsi/parse-iscsiroot.sh | 15 +++++++--------
+ 1 file changed, 7 insertions(+), 8 deletions(-)
+
+diff --git a/modules.d/95iscsi/parse-iscsiroot.sh b/modules.d/95iscsi/parse-iscsiroot.sh
+index 7a64d888..f00a83bb 100755
+--- a/modules.d/95iscsi/parse-iscsiroot.sh
++++ b/modules.d/95iscsi/parse-iscsiroot.sh
+@@ -107,14 +107,13 @@ if arg=$(getarg rd.iscsi.initiator -d iscsi_initiator=) && [ -n "$arg" ] && ! [
+     iscsi_initiator=$arg
+     echo "InitiatorName=$iscsi_initiator" > /run/initiatorname.iscsi
+     ln -fs /run/initiatorname.iscsi /dev/.initiatorname.iscsi
+-    if ! [ -e /etc/iscsi/initiatorname.iscsi ]; then
+-        mkdir -p /etc/iscsi
+-        ln -fs /run/initiatorname.iscsi /etc/iscsi/initiatorname.iscsi
+-        if [ -n "$DRACUT_SYSTEMD" ]; then
+-            systemctl try-restart iscsid
+-            # FIXME: iscsid is not yet ready, when the service is :-/
+-            sleep 1
+-        fi
++    rm -f /etc/iscsi/initiatorname.iscsi
++    mkdir -p /etc/iscsi
++    ln -fs /run/initiatorname.iscsi /etc/iscsi/initiatorname.iscsi
++    if [ -n "$DRACUT_SYSTEMD" ]; then
++        systemctl try-restart iscsid
++        # FIXME: iscsid is not yet ready, when the service is :-/
++        sleep 1
+     fi
+ fi
+ 
+
diff --git a/SOURCES/0012.patch b/SOURCES/0012.patch
new file mode 100644
index 0000000..92e1758
--- /dev/null
+++ b/SOURCES/0012.patch
@@ -0,0 +1,86 @@
+From 9c54932f590fd7accadc780c6ee946a94286b7e6 Mon Sep 17 00:00:00 2001
+From: Lukas Nykryn <lnykryn@redhat.com>
+Date: Tue, 14 May 2019 09:23:55 +0200
+Subject: [PATCH] fips: split loading the crypto modules and checking the
+ kernel
+
+In e54ab383 we moved the fips script to a later pahse of boot, since
+the /boot might not be available early on.
+
+The problem is that systemd-cryptsetup* services could be run now
+started before the do_fips is executed and need the crypto modules
+to decrypted the devices.
+
+So let's split the do_fips and load the module before udev does the
+trigger.
+---
+ modules.d/01fips/fips-load-crypto.sh |  8 ++++++++
+ modules.d/01fips/fips.sh             | 19 +++++++++++--------
+ modules.d/01fips/module-setup.sh     |  1 +
+ 3 files changed, 20 insertions(+), 8 deletions(-)
+
+diff --git a/modules.d/01fips/fips-load-crypto.sh b/modules.d/01fips/fips-load-crypto.sh
+new file mode 100644
+index 00000000..82cbeee4
+--- /dev/null
++++ b/modules.d/01fips/fips-load-crypto.sh
+@@ -0,0 +1,8 @@
++#!/bin/sh
++
++if ! fipsmode=$(getarg fips) || [ $fipsmode = "0" ]; then
++    rm -f -- /etc/modprobe.d/fips.conf >/dev/null 2>&1
++else
++    . /sbin/fips.sh
++    fips_load_crypto || die "FIPS integrity test failed"
++fi
+diff --git a/modules.d/01fips/fips.sh b/modules.d/01fips/fips.sh
+index 9bc089f2..beaa692b 100755
+--- a/modules.d/01fips/fips.sh
++++ b/modules.d/01fips/fips.sh
+@@ -69,15 +69,8 @@ do_rhevh_check()
+     return 0
+ }
+ 
+-do_fips()
++fips_load_crypto()
+ {
+-    local _v
+-    local _s
+-    local _v
+-    local _module
+-
+-    KERNEL=$(uname -r)
+-
+     FIPSMODULES=$(cat /etc/fipsmodules)
+ 
+     info "Loading and integrity checking all crypto modules"
+@@ -102,6 +95,16 @@ do_fips()
+     info "Self testing crypto algorithms"
+     modprobe tcrypt || return 1
+     rmmod tcrypt
++}
++
++do_fips()
++{
++    local _v
++    local _s
++    local _v
++    local _module
++
++    KERNEL=$(uname -r)
+ 
+     info "Checking integrity of kernel"
+     if [ -e "/run/initramfs/live/vmlinuz0" ]; then
+diff --git a/modules.d/01fips/module-setup.sh b/modules.d/01fips/module-setup.sh
+index f3af4d90..18186d62 100755
+--- a/modules.d/01fips/module-setup.sh
++++ b/modules.d/01fips/module-setup.sh
+@@ -54,6 +54,7 @@ install() {
+     local _dir
+     inst_hook pre-trigger 01 "$moddir/fips-boot.sh"
+     inst_hook pre-pivot 01 "$moddir/fips-noboot.sh"
++    inst_hook pre-udev 01 "$moddir/fips-load-crypto.sh"
+     inst_script "$moddir/fips.sh" /sbin/fips.sh
+ 
+     inst_multiple sha512hmac rmmod insmod mount uname umount
+
diff --git a/SOURCES/0013.patch b/SOURCES/0013.patch
new file mode 100644
index 0000000..b15e070
--- /dev/null
+++ b/SOURCES/0013.patch
@@ -0,0 +1,51 @@
+From a1435c3d535707f1d21aaf85e62175ff2bb1ad2b Mon Sep 17 00:00:00 2001
+From: Kairui Song <kasong@redhat.com>
+Date: Thu, 14 Mar 2019 18:54:10 +0800
+Subject: [PATCH] fips: ensure fs module for /boot is installed
+
+When using dracut with  --hostonly and --no-hostonly-default-device,
+/boot will be inaccessible as dracut will most fs modules unless
+specified. But FIPS require /boot to be accessible, and it will try
+to mount it on boot. It will fail if corresponding fs module is missing.
+
+For most case /boot will be a simple partition, include the fs module
+will be enough for FIPS to mount it. For other cases users have to pass
+extra parameters by themselves.
+
+Suggested-by: Kenneth Dsouza <kdsouza@redhat.com>
+Signed-off-by: Kairui Song <kasong@redhat.com>
+---
+ modules.d/01fips/module-setup.sh | 12 +++++++++++-
+ 1 file changed, 11 insertions(+), 1 deletion(-)
+
+diff --git a/modules.d/01fips/module-setup.sh b/modules.d/01fips/module-setup.sh
+index 18186d62..89734a09 100755
+--- a/modules.d/01fips/module-setup.sh
++++ b/modules.d/01fips/module-setup.sh
+@@ -12,7 +12,7 @@ depends() {
+ 
+ # called by dracut
+ installkernel() {
+-    local _fipsmodules _mod
++    local _fipsmodules _mod _bootfstype
+     if [[ -f "${srcmods}/modules.fips" ]]; then
+         _fipsmodules="$(cat "${srcmods}/modules.fips")"
+     else
+@@ -47,6 +47,16 @@ installkernel() {
+             echo "blacklist $_mod" >> "${initdir}/etc/modprobe.d/fips.conf"
+         fi
+     done
++
++    # with hostonly_default_device fs module for /boot is not installed by default
++    if [[ $hostonly ]] && [[ "$hostonly_default_device" == "no" ]]; then
++        _bootfstype=$(find_mp_fstype /boot)
++        if [[ -n "$_bootfstype" ]]; then
++            hostonly='' instmods $_bootfstype
++        else
++            dwarning "Can't determine fs type for /boot, FIPS check may fail."
++        fi
++    fi
+ }
+ 
+ # called by dracut
+
diff --git a/SOURCES/0014.patch b/SOURCES/0014.patch
new file mode 100644
index 0000000..4247482
--- /dev/null
+++ b/SOURCES/0014.patch
@@ -0,0 +1,49 @@
+From 7c35556da4c803bbb08c96e96262e598d5c42274 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Tue, 21 Aug 2018 13:14:44 +0200
+Subject: [PATCH] network: skip already enslaved interfaces
+
+(cherry picked from commit f6e3b59e5ea6f52a25631557badc7f4dfabbd7ee)
+
+Resolves: #1625042
+---
+ modules.d/35network-legacy/ifup.sh | 6 +++++-
+ modules.d/40network/net-lib.sh     | 7 +++++++
+ 2 files changed, 12 insertions(+), 1 deletion(-)
+
+diff --git a/modules.d/35network-legacy/ifup.sh b/modules.d/35network-legacy/ifup.sh
+index ea2a67ff..b4f5bf10 100755
+--- a/modules.d/35network-legacy/ifup.sh
++++ b/modules.d/35network-legacy/ifup.sh
+@@ -408,7 +408,11 @@ for p in $(getargs ip=); do
+     esac
+ 
+     # If this option isn't directed at our interface, skip it
+-    [ -n "$dev" ] && [ "$dev" != "$netif" ] && continue
++    if [ -n "$dev" ]; then
++        [ "$dev" != "$netif" ] && continue
++    else
++        iface_is_enslaved "$netif" && continue
++    fi
+ 
+     # Store config for later use
+     for i in ip srv gw mask hostname macaddr mtu dns1 dns2; do
+diff --git a/modules.d/40network/net-lib.sh b/modules.d/40network/net-lib.sh
+index 7b93f25e..f9569573 100755
+--- a/modules.d/40network/net-lib.sh
++++ b/modules.d/40network/net-lib.sh
+@@ -745,6 +745,13 @@ iface_has_link() {
+     iface_has_carrier "$@"
+ }
+ 
++iface_is_enslaved() {
++    local _li
++    _li=$(ip -o link show dev $1)
++    strstr "$li" " master " || return 1
++    return 0
++}
++
+ find_iface_with_link() {
+     local iface_path="" iface=""
+     for iface_path in /sys/class/net/*; do
+
diff --git a/SOURCES/0015.patch b/SOURCES/0015.patch
new file mode 100644
index 0000000..f79f1e7
--- /dev/null
+++ b/SOURCES/0015.patch
@@ -0,0 +1,24 @@
+From 4971a2c4eb4526cb88a5c9aff30c57527a746036 Mon Sep 17 00:00:00 2001
+From: Lukas Nykryn <lnykryn@redhat.com>
+Date: Tue, 16 Jul 2019 08:27:01 +0100
+Subject: [PATCH] 01fips: add cfb cipher
+
+Required by FIPS standard
+---
+ modules.d/01fips/module-setup.sh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/modules.d/01fips/module-setup.sh b/modules.d/01fips/module-setup.sh
+index 89734a09..f011f15d 100755
+--- a/modules.d/01fips/module-setup.sh
++++ b/modules.d/01fips/module-setup.sh
+@@ -24,7 +24,7 @@ installkernel() {
+         _fipsmodules+="crc32c crct10dif ghash "
+ 
+         # Ciphers:
+-        _fipsmodules+="cipher_null des3_ede aes "
++        _fipsmodules+="cipher_null des3_ede aes cfb "
+ 
+         # Modes/templates:
+         _fipsmodules+="ecb cbc ctr xts gcm ccm authenc hmac cmac "
+
diff --git a/SOURCES/0016.patch b/SOURCES/0016.patch
new file mode 100644
index 0000000..57aed12
--- /dev/null
+++ b/SOURCES/0016.patch
@@ -0,0 +1,86 @@
+From 31116110ff0090324a568ce2aba6519a860d66b3 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Renaud=20M=C3=A9trich?= <rmetrich@redhat.com>
+Date: Thu, 11 Jul 2019 10:50:40 +0200
+Subject: [PATCH] rngd: new module running early during boot to help generating
+ entropy when system's default entropy sources are poor (e.g. use of SSD disks
+ or UEFI RNG not available)
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+On systems with low entropy at boot, the boot can take up to several
+hours, specially when NBDE is used (e.g. clevis) which makes use of
+the random number generator.
+
+Enabling rngd service at boot early, because dracut-initqueue runs,
+enables to initialize the random number generator in a couple of seconds
+instead of minutes or hours.
+
+Signed-off-by: Renaud Métrich <rmetrich@redhat.com>
+(cherry picked from commit adee5b97bc5418b6e357342bb3be20568668aa55)
+
+Resolves: #1726617
+---
+ modules.d/06rngd/module-setup.sh | 39 +++++++++++++++++++++++++++++++++++++++
+ modules.d/06rngd/rngd.service    |  7 +++++++
+ 2 files changed, 46 insertions(+)
+
+diff --git a/modules.d/06rngd/module-setup.sh b/modules.d/06rngd/module-setup.sh
+new file mode 100644
+index 00000000..43d5c2d3
+--- /dev/null
++++ b/modules.d/06rngd/module-setup.sh
+@@ -0,0 +1,39 @@
++#!/bin/bash
++# vim: set tabstop=8 shiftwidth=4 softtabstop=4 expandtab smarttab colorcolumn=80:
++#
++# Copyright (c) 2019 Red Hat, Inc.
++# Author: Renaud Métrich <rmetrich@redhat.com>
++#
++# 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
++# the Free Software Foundation, either version 3 of the License, or
++# (at your option) any later version.
++#
++# This program is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++# GNU General Public License for more details.
++#
++# You should have received a copy of the GNU General Public License
++# along with this program.  If not, see <http://www.gnu.org/licenses/>.
++#
++
++depends() {
++    echo systemd
++    return 0
++}
++
++check() {
++    # if there's no rngd binary, no go.
++    require_binaries rngd || return 1
++
++    return 0
++}
++
++install() {
++    inst rngd
++    inst_simple "${moddir}/rngd.service" "${systemdsystemunitdir}/rngd.service"
++    mkdir -p "${initdir}${systemdsystemunitdir}/sysinit.target.wants"
++    ln -rfs "${initdir}${systemdsystemunitdir}/rngd.service" \
++        "${initdir}${systemdsystemunitdir}/sysinit.target.wants/rngd.service"
++}
+diff --git a/modules.d/06rngd/rngd.service b/modules.d/06rngd/rngd.service
+new file mode 100644
+index 00000000..570fbedb
+--- /dev/null
++++ b/modules.d/06rngd/rngd.service
+@@ -0,0 +1,7 @@
++[Unit]
++Description=Hardware RNG Entropy Gatherer Daemon
++DefaultDependencies=no
++Before=systemd-udevd.service
++
++[Service]
++ExecStart=/usr/sbin/rngd -f
+
diff --git a/SOURCES/0017.patch b/SOURCES/0017.patch
new file mode 100644
index 0000000..899efb3
--- /dev/null
+++ b/SOURCES/0017.patch
@@ -0,0 +1,22 @@
+From d86dfcd148e5d726f00b8a83eeadb11aa0017fba Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Mon, 22 Jul 2019 14:07:26 +0200
+Subject: [PATCH] dracut.spec: add 06rngd
+
+---
+ dracut.spec | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/dracut.spec b/dracut.spec
+index de57703c..92c7f7bf 100644
+--- a/dracut.spec
++++ b/dracut.spec
+@@ -346,6 +346,7 @@ install -m 0755 51-dracut-rescue-postinst.sh $RPM_BUILD_ROOT%{_sysconfdir}/kerne
+ %{dracutlibdir}/modules.d/03rescue
+ %{dracutlibdir}/modules.d/04watchdog
+ %{dracutlibdir}/modules.d/05busybox
++%{dracutlibdir}/modules.d/06rngd
+ %{dracutlibdir}/modules.d/10i18n
+ %{dracutlibdir}/modules.d/30convertfs
+ %{dracutlibdir}/modules.d/45url-lib
+
diff --git a/SOURCES/0018.patch b/SOURCES/0018.patch
new file mode 100644
index 0000000..8e21561
--- /dev/null
+++ b/SOURCES/0018.patch
@@ -0,0 +1,49 @@
+From 927428e6a5e90b2214ee9edf15d4eb6c0fc5c203 Mon Sep 17 00:00:00 2001
+From: Kairui Song <kasong@redhat.com>
+Date: Mon, 11 Mar 2019 18:44:02 +0800
+Subject: [PATCH] squash: squash systemd binary and udevadm
+
+systemd binary and udevadm are not needed to be outside the squash
+image. Some binaries are kept outside because they are required before
+mounting the image, or after umounting the image (when switching root),
+or they may block umounting the image. But we are using lazy umounting,
+so actually nothing will block the umount.
+
+Keep more binaries outside the squash image won't hurt but cost extra
+memories, the idea of squash image is to save memory usage.
+
+So, there is no reason to keep udevadm outside, that should be a debug
+left over. For systemd binary, it's running when switch root happens,
+But we have lazy umounted the image and overlay, once systemd process
+exec the new systemd in new root, everything will be cleared by kernel.
+
+Also tidy up the comment make it less confussing.
+
+Signed-off-by: Kairui Song <kasong@redhat.com>
+(cherry picked from commit e1e1f6e8e6747d8f32c065e267e0a57587818c9e)
+
+Resolves: #1691705
+---
+ dracut.sh | 8 +++++---
+ 1 file changed, 5 insertions(+), 3 deletions(-)
+
+diff --git a/dracut.sh b/dracut.sh
+index e683a9bc..a0158f22 100755
+--- a/dracut.sh
++++ b/dracut.sh
+@@ -1772,9 +1772,11 @@ if dracut_module_included "squash"; then
+         mv $initdir/$folder $squash_dir/$folder
+     done
+ 
+-    # Reinstall required files, because we have moved some important folders to $squash_dir
+-    inst_multiple "echo" "sh" "mount" "modprobe" "mkdir" \
+-        "systemctl" "udevadm" "$systemdutildir/systemd"
++    # Reinstall required files for the squash image setup script.
++    # We have moved them inside the squashed image, but they need to be
++    # accessible before mounting the image. Also install systemctl,
++    # it's requires for switch-root, but we will umount the image before switch-root
++    inst_multiple "echo" "sh" "mount" "modprobe" "mkdir" "systemctl"
+     hostonly="" instmods "loop" "squashfs" "overlay"
+ 
+     for folder in "${squash_candidate[@]}"; do
+
diff --git a/SOURCES/0019.patch b/SOURCES/0019.patch
new file mode 100644
index 0000000..6b7cac8
--- /dev/null
+++ b/SOURCES/0019.patch
@@ -0,0 +1,71 @@
+From b6d52b504fc7eefc3f405f75463d9e818471ee99 Mon Sep 17 00:00:00 2001
+From: Kairui Song <kasong@redhat.com>
+Date: Mon, 11 Mar 2019 19:46:19 +0800
+Subject: [PATCH] squash: fix and simplify required_in_root
+
+If required target is a symbol link, create the link then following the
+link. If it's a directory, create new directory, else just move it.
+
+Signed-off-by: Kairui Song <kasong@redhat.com>
+(cherry picked from commit 11ce69e4bd9172cf54251ea62bb4a5ead1700fd6)
+
+Resolves: #1691705
+---
+ dracut.sh | 42 +++++++++++++++++++-----------------------
+ 1 file changed, 19 insertions(+), 23 deletions(-)
+
+diff --git a/dracut.sh b/dracut.sh
+index a0158f22..6de88b3e 100755
+--- a/dracut.sh
++++ b/dracut.sh
+@@ -1811,30 +1811,26 @@ if dracut_module_included "squash"; then
+             required_in_root $(dirname $file)
+         fi
+ 
+-        if [[ -d $_sqsh_file ]]; then
+-            if [[ -L $_sqsh_file ]]; then
+-                cp --preserve=all -P $_sqsh_file $_init_file
+-            else
+-                mkdir $_init_file
+-            fi
++        if [[ -L $_sqsh_file ]]; then
++          cp --preserve=all -P $_sqsh_file $_init_file
++          _sqsh_file=$(realpath $_sqsh_file 2>/dev/null)
++          if [[ -e $_sqsh_file ]] && [[ "$_sqsh_file" == "$squash_dir"* ]]; then
++            # Relative symlink
++            required_in_root ${_sqsh_file#$squash_dir/}
++            return
++          fi
++          if [[ -e $squash_dir$_sqsh_file ]]; then
++            # Absolute symlink
++            required_in_root ${_sqsh_file#/}
++            return
++          fi
++          required_in_root ${module_spec#$squash_dir/}
+         else
+-            if [[ -L $_sqsh_file ]]; then
+-                cp --preserve=all -P $_sqsh_file $_init_file
+-                _sqsh_file=$(realpath $_sqsh_file 2>/dev/null)
+-                if [[ -e $_sqsh_file ]] && [[ "$_sqsh_file" == "$squash_dir"* ]]; then
+-                    # Relative symlink
+-                    required_in_root ${_sqsh_file#$squash_dir/}
+-                    return
+-                fi
+-                if [[ -e $squash_dir$_sqsh_file ]]; then
+-                    # Absolute symlink
+-                    required_in_root ${_sqsh_file#/}
+-                    return
+-                fi
+-                required_in_root ${module_spec#$squash_dir/}
+-            else
+-                mv $_sqsh_file $_init_file
+-            fi
++          if [[ -d $_sqsh_file ]]; then
++            mkdir $_init_file
++          else
++            mv $_sqsh_file $_init_file
++          fi
+         fi
+     }
+ 
+
diff --git a/SOURCES/0020.patch b/SOURCES/0020.patch
new file mode 100644
index 0000000..64dfdff
--- /dev/null
+++ b/SOURCES/0020.patch
@@ -0,0 +1,94 @@
+From 829ed8ef5cca250fac475ad6b0265c792c3af015 Mon Sep 17 00:00:00 2001
+From: Kairui Song <kasong@redhat.com>
+Date: Wed, 13 Mar 2019 17:36:53 +0800
+Subject: [PATCH] squash: also squash systemctl if switch-root is not needed
+
+systemctl need to be accessible on switch-root, but we unmount the
+squash image on switch-root, so it will fail. systemctl depends on a lot
+of libraries, squash them can save more RAM. So allow modules
+(eg. kdump) to tell dracut that switch-root will be intercepted,
+then we don't need to take care of that.
+
+Signed-off-by: Kairui Song <kasong@redhat.com>
+(cherry picked from commit 3ee0ca5eb74be5d1fbd0e6d643f6fff06234177f)
+
+Resolves: #1691705
+---
+ dracut-init.sh |  4 ++++
+ dracut.sh      | 40 ++++++++++++++++++++++------------------
+ 2 files changed, 26 insertions(+), 18 deletions(-)
+
+diff --git a/dracut-init.sh b/dracut-init.sh
+index 50d23e2d..b1ac9966 100644
+--- a/dracut-init.sh
++++ b/dracut-init.sh
+@@ -150,6 +150,10 @@ dracut_module_included() {
+     [[ " $mods_to_load $modules_loaded " == *\ $*\ * ]]
+ }
+ 
++dracut_no_switch_root() {
++    >"$initdir/lib/dracut/no-switch-root"
++}
++
+ if ! [[ $DRACUT_INSTALL ]]; then
+     DRACUT_INSTALL=$(find_binary dracut-install)
+ fi
+diff --git a/dracut.sh b/dracut.sh
+index 6de88b3e..8144a16e 100755
+--- a/dracut.sh
++++ b/dracut.sh
+@@ -1772,24 +1772,6 @@ if dracut_module_included "squash"; then
+         mv $initdir/$folder $squash_dir/$folder
+     done
+ 
+-    # Reinstall required files for the squash image setup script.
+-    # We have moved them inside the squashed image, but they need to be
+-    # accessible before mounting the image. Also install systemctl,
+-    # it's requires for switch-root, but we will umount the image before switch-root
+-    inst_multiple "echo" "sh" "mount" "modprobe" "mkdir" "systemctl"
+-    hostonly="" instmods "loop" "squashfs" "overlay"
+-
+-    for folder in "${squash_candidate[@]}"; do
+-        # Remove duplicated files in squashfs image, save some more space
+-        [[ ! -d $initdir/$folder/ ]] && continue
+-        for file in $(find $initdir/$folder/ -not -type d);
+-        do
+-            if [[ -e $squash_dir${file#$initdir} ]]; then
+-                mv $squash_dir${file#$initdir} $file
+-            fi
+-        done
+-    done
+-
+     # Move some files out side of the squash image, including:
+     # - Files required to boot and mount the squashfs image
+     # - Files need to be accessable without mounting the squash image
+@@ -1851,6 +1833,28 @@ if dracut_module_included "squash"; then
+     ln -s squash/init.sh $initdir/init
+     ln -s squash/shutdown.sh $initdir/shutdown
+ 
++    # Reinstall required files for the squash image setup script.
++    # We have moved them inside the squashed image, but they need to be
++    # accessible before mounting the image.
++    inst_multiple "echo" "sh" "mount" "modprobe" "mkdir"
++    hostonly="" instmods "loop" "squashfs" "overlay"
++
++    # Only keep systemctl outsite if we need switch root
++    if [[ ! -f "$initdir/lib/dracut/no-switch-root" ]]; then
++      inst "systemctl"
++    fi
++
++    for folder in "${squash_candidate[@]}"; do
++        # Remove duplicated files in squashfs image, save some more space
++        [[ ! -d $initdir/$folder/ ]] && continue
++        for file in $(find $initdir/$folder/ -not -type d);
++        do
++            if [[ -e $squash_dir${file#$initdir} ]]; then
++                mv $squash_dir${file#$initdir} $file
++            fi
++        done
++    done
++
+     mksquashfs $squash_dir $squash_img -comp xz -b 64K -Xdict-size 100% &> /dev/null
+ 
+     if [[ $? != 0 ]]; then
+
diff --git a/SOURCES/0021.patch b/SOURCES/0021.patch
new file mode 100644
index 0000000..ed54a76
--- /dev/null
+++ b/SOURCES/0021.patch
@@ -0,0 +1,94 @@
+From 7ee74e539dba61c3765afe34426b085eff0de027 Mon Sep 17 00:00:00 2001
+From: Kairui Song <kasong@redhat.com>
+Date: Thu, 21 Feb 2019 13:18:37 +0800
+Subject: [PATCH] dracut: let module handling function accept optional path
+ option
+
+Let the caller pass in the module path instead of try to find the module
+path everytime. This helps optimize the overall runtime.
+
+Test results (3 rounds) on Fedora 30 in KVM VM with 8 CPUs, 2G memory, HDD:
+
+    $ time ./dracut.sh --local --quiet --hostonly --hostonly-cmdline --hostonly-i18n --hostonly-mode 'strict' -o 'plymouth dash resume ifcfg' --mount '/dev/mapper/fedora-root /sysroot xfs defaults' --no-hostonly-default-device -f initramfs.img
+    Before the commit:
+    real    0m11.782s  |  real    0m11.505s  |  real    0m11.958s
+    user    0m9.169s   |  user    0m9.218s   |  user    0m9.327s
+    sys     0m10.839s  |  sys     0m10.829s  |  sys     0m10.925s
+
+    After this commit:
+    real    0m9.866s  |  real    0m9.580s  |  real    0m9.638s
+    user    0m9.048s  |  user    0m9.142s  |  user    0m9.120s
+    sys     0m7.411s  |  sys     0m7.775s  |  sys     0m7.745s
+
+Test result of building a ordinary image:
+
+    $ time ./dracut.sh --local --quiet -f initramfs.img
+    Before the commit:
+    real    0m34.697s  |  real    0m34.371s  |  real    0m35.122s
+    user    0m27.608s  |  user    0m27.524s  |  user    0m27.705s
+    sys     0m22.341s  |  sys     0m22.032s  |  sys     0m22.246s
+
+    After the commit:
+    real    0m31.914s  |  real    0m31.006  |  real    0m31.289ss
+    user    0m27.315s  |  user    0m27.324  |  user    0m27.290ss
+    sys     0m19.051s  |  sys     0m18.916  |  sys     0m19.022ss
+
+This will have an ~2s speed up.
+
+Signed-off-by: Kairui Song <kasong@redhat.com>
+(cherry picked from commit 5916d31b24ad9eb21fd376929a96c459813315a1)
+
+Cherry-picked from: 5916d31b
+Resolves: #1734047
+---
+ dracut-init.sh | 4 ++++
+ dracut.sh      | 8 ++++----
+ 2 files changed, 8 insertions(+), 4 deletions(-)
+
+diff --git a/dracut-init.sh b/dracut-init.sh
+index b1ac9966..ab07cabf 100644
+--- a/dracut-init.sh
++++ b/dracut-init.sh
+@@ -154,6 +154,10 @@ dracut_no_switch_root() {
+     >"$initdir/lib/dracut/no-switch-root"
+ }
+ 
++dracut_module_path() {
++    echo ${dracutbasedir}/modules.d/??${1} | { read a b; echo "$a"; }
++}
++
+ if ! [[ $DRACUT_INSTALL ]]; then
+     DRACUT_INSTALL=$(find_binary dracut-install)
+ fi
+diff --git a/dracut.sh b/dracut.sh
+index 8144a16e..f270af76 100755
+--- a/dracut.sh
++++ b/dracut.sh
+@@ -1373,7 +1373,7 @@ do_print_cmdline()
+     for moddir in "$dracutbasedir/modules.d"/[0-9][0-9]*; do
+         _d_mod=${moddir##*/}; _d_mod=${_d_mod#[0-9][0-9]}
+         [[ ${_mods_to_print[$_d_mod]} ]] || continue
+-        module_cmdline "$_d_mod"
++        module_cmdline "$_d_mod" "$moddir"
+     done
+     unset moddir
+ }
+@@ -1454,14 +1454,14 @@ for moddir in "$dracutbasedir/modules.d"/[0-9][0-9]*; do
+         dinfo "*** Including module: $_d_mod ***"
+     fi
+     if [[ $kernel_only == yes ]]; then
+-        module_installkernel "$_d_mod" || {
++        module_installkernel "$_d_mod" "$moddir" || {
+             dfatal "installkernel failed in module $_d_mod"
+             exit 1
+         }
+     else
+-        module_install "$_d_mod"
++        module_install "$_d_mod" "$moddir"
+         if [[ $no_kernel != yes ]]; then
+-            module_installkernel "$_d_mod" || {
++            module_installkernel "$_d_mod" "$moddir" || {
+                 dfatal "installkernel failed in module $_d_mod"
+                 exit 1
+             }
+
diff --git a/SOURCES/0022.patch b/SOURCES/0022.patch
new file mode 100644
index 0000000..4bcd5e4
--- /dev/null
+++ b/SOURCES/0022.patch
@@ -0,0 +1,36 @@
+From 17cd55169c3549d85ba3e4d7e0e81c496d1b2940 Mon Sep 17 00:00:00 2001
+From: Lianbo Jiang <lijiang@redhat.com>
+Date: Mon, 13 May 2019 16:09:25 +0800
+Subject: [PATCH] 99base: enable the initqueue in both 'dracut --add-device'
+ and 'dracut --mount' cases.
+
+The commit 9f3c31cd8d68 ("99base: enable initqueue if extra devices are added")
+only covers 'dracut --add-device' case, but it did not cover 'dracut --mount'
+case, which causes the kdump failure in the Amazon virtual machine.
+
+Lets make sure that the initqueue is enabled in both cases in order to wake up
+the device in time.
+
+Reported-by: Xiao Liang <xiliang@redhat.com>
+Signed-off-by: Lianbo Jiang <lijiang@redhat.com>
+(cherry picked from commit e0fc62f619ba55a96179382e22f7665e969c3d42)
+
+Resolves: #1678094
+---
+ modules.d/99base/module-setup.sh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/modules.d/99base/module-setup.sh b/modules.d/99base/module-setup.sh
+index 21523fc9..c9ead01d 100755
+--- a/modules.d/99base/module-setup.sh
++++ b/modules.d/99base/module-setup.sh
+@@ -93,7 +93,7 @@ install() {
+ 
+     ## save host_devs which we need bring up
+     if [[ $hostonly_cmdline == "yes" ]]; then
+-        if [[ -n $add_device ]]; then
++        if [[ -n "${host_devs[@]}" ]]; then
+             dracut_need_initqueue
+         fi
+         if [[ -f "$initdir/lib/dracut/need-initqueue" ]] || ! dracut_module_included "systemd"; then
+
diff --git a/SOURCES/0023.patch b/SOURCES/0023.patch
new file mode 100644
index 0000000..e0d31d5
--- /dev/null
+++ b/SOURCES/0023.patch
@@ -0,0 +1,34 @@
+From 1851348709df5413a767faecdee908534baf0da1 Mon Sep 17 00:00:00 2001
+From: Kairui Song <kasong@redhat.com>
+Date: Wed, 12 Jun 2019 14:27:44 +0800
+Subject: [PATCH] 95fcoe: load 'libfcoe' module as a fallback
+
+The kernel may only enable 'libfcoe' module. Some modules like bnx2fc
+provides FCoE but only depend on 'libfcoe'. Loading 'fcoe' module may
+fail but the kernel do support FCoE.
+
+'libfcoe' will be installed as a dependency when installing block device
+drivers if it's required. So no need to install it in installkernel.
+
+Signed-off-by: Kairui Song <kasong@redhat.com>
+(cherry picked from commit 65fe1af2eca7d0ed340520577ab861fcd695b34a)
+
+Resolves: #1719645
+---
+ modules.d/95fcoe/parse-fcoe.sh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/modules.d/95fcoe/parse-fcoe.sh b/modules.d/95fcoe/parse-fcoe.sh
+index 75cca9a5..12701cdb 100755
+--- a/modules.d/95fcoe/parse-fcoe.sh
++++ b/modules.d/95fcoe/parse-fcoe.sh
+@@ -18,7 +18,7 @@
+ # If it's not set we don't continue
+ [ -z "$fcoe" ] && return
+ 
+-[ -e /sys/bus/fcoe/ctlr_create ] || modprobe -b -a fcoe || die "FCoE requested but kernel/initrd does not support FCoE"
++[ -e /sys/bus/fcoe/ctlr_create ] || modprobe -b -a fcoe || modprobe -b -a libfcoe || die "FCoE requested but kernel/initrd does not support FCoE"
+ 
+ initqueue --onetime modprobe -b -q bnx2fc
+ 
+
diff --git a/SOURCES/0024.patch b/SOURCES/0024.patch
new file mode 100644
index 0000000..28b2e15
--- /dev/null
+++ b/SOURCES/0024.patch
@@ -0,0 +1,36 @@
+From 9b2497dffb8f699ce040cdbafa967f5fe02b57b6 Mon Sep 17 00:00:00 2001
+From: Lukas Nykryn <lnykryn@redhat.com>
+Date: Fri, 2 Aug 2019 14:26:23 +0200
+Subject: [PATCH] 90kernel-modules-extra: don't resolve symlinks before instmod
+
+When you install a third-party driver, you will probably end in a
+situation, where the module will be in a different directory and
+in $depmod_module_dir you will only have symlink. If we resolve the
+symlink before we pass the module path to instmod, the dracut-install
+will only include the module with its original path, but not the
+symlink. Hence the module can't be automatically loaded.
+
+Dracut-install is clever enough to handle symlinks and will include both
+the symlink and the module to the initrd.
+
+(cherry picked from commit d1afff43aea01c8d43817adf3ac4041dd4b9f022)
+
+Resolves: #1720275
+---
+ modules.d/90kernel-modules-extra/module-setup.sh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/modules.d/90kernel-modules-extra/module-setup.sh b/modules.d/90kernel-modules-extra/module-setup.sh
+index c0a2b7f9..1706c822 100755
+--- a/modules.d/90kernel-modules-extra/module-setup.sh
++++ b/modules.d/90kernel-modules-extra/module-setup.sh
+@@ -187,7 +187,7 @@ installkernel()
+ 	printf "^%s\.ko(\.gz|\.bz2|\.xz)?:\n" "${pathlist[@]}" \
+ 		| (LANG=C grep -E -o -f - -- "$depmod_modules_dep" || exit 0) \
+ 		| tr -d ':' \
+-		| (cd "$depmod_module_dir" || exit; xargs -r realpath -e --) \
++		| (cd "$depmod_module_dir" || exit; xargs -r realpath -se --) \
+ 		| instmods || return 1
+ 
+ 	return 0
+
diff --git a/SOURCES/0025.patch b/SOURCES/0025.patch
new file mode 100644
index 0000000..664f9be
--- /dev/null
+++ b/SOURCES/0025.patch
@@ -0,0 +1,26 @@
+From 3464297288b50a062e1094e57d46ad21e51b351b Mon Sep 17 00:00:00 2001
+From: Lukas Nykryn <lnykryn@redhat.com>
+Date: Tue, 6 Aug 2019 10:54:09 +0200
+Subject: [PATCH] net-lib: fix typo $li -> $_li
+
+(cherry picked from commit cd97d8d2c0646b95aee47efd5eee39f29d617a67)
+
+Resolves: #1625042
+---
+ modules.d/40network/net-lib.sh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/modules.d/40network/net-lib.sh b/modules.d/40network/net-lib.sh
+index f9569573..ad78d225 100755
+--- a/modules.d/40network/net-lib.sh
++++ b/modules.d/40network/net-lib.sh
+@@ -748,7 +748,7 @@ iface_has_link() {
+ iface_is_enslaved() {
+     local _li
+     _li=$(ip -o link show dev $1)
+-    strstr "$li" " master " || return 1
++    strstr "$_li" " master " || return 1
+     return 0
+ }
+ 
+
diff --git a/SOURCES/0026.patch b/SOURCES/0026.patch
new file mode 100644
index 0000000..2c2c621
--- /dev/null
+++ b/SOURCES/0026.patch
@@ -0,0 +1,38 @@
+From 95bbcaa8550534f03b332487ef3a2ed6650424fe Mon Sep 17 00:00:00 2001
+From: Frantisek Sumsal <frantisek@sumsal.cz>
+Date: Wed, 21 Aug 2019 11:16:07 +0200
+Subject: [PATCH] git2spec: avoid malforming of SHA-1 hashes
+
+When a SHA-1 hash of a specific commit is used as a tag, the regex
+shenanigans later in the script can (and will) corrupt it in certain
+cases.
+
+e.g.:
+$ perl -e '
+$tag="6e8cd92261577230daa1098f7e05ec198c3c4281";
+$tag=~s/[^0-9]+?([0-9]+)/$1/;
+print("$tag\n");
+'
+68cd92261577230daa1098f7e05ec198c3c4281
+
+(Notice the missing 'e')
+
+Let's fix this by limiting the regex's scope to a non-SHA-1 tags only.
+---
+ git2spec.pl | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/git2spec.pl b/git2spec.pl
+index 7853791e..9ddc3805 100755
+--- a/git2spec.pl
++++ b/git2spec.pl
+@@ -37,7 +37,7 @@ $tag=`git describe --abbrev=0 --tags` if not defined $tag;
+ chomp($tag);
+ my @patches=&create_patches($tag, $pdir);
+ my $num=$#patches + 2;
+-$tag=~s/[^0-9]+?([0-9]+)/$1/;
++$tag=~s/[^0-9]+?([0-9]+)/$1/ if $tag !~ /\b[0-9a-f]{5,40}\b/;
+ my $release="$num.git$datestr";
+ $release="1" if $num == 1;
+ 
+
diff --git a/SOURCES/0027.patch b/SOURCES/0027.patch
new file mode 100644
index 0000000..cf5627e
--- /dev/null
+++ b/SOURCES/0027.patch
@@ -0,0 +1,25 @@
+From d3f542cc9d0135a408be7ba995b8adad80bcd606 Mon Sep 17 00:00:00 2001
+From: Frantisek Sumsal <frantisek@sumsal.cz>
+Date: Wed, 21 Aug 2019 14:06:29 +0200
+Subject: [PATCH] travis: fetch only tags
+
+The original `git pull` would try to pull & merge changes from the
+master branch, which breaks CI runs on PRs based on non-master branches
+---
+ .travis.yml | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/.travis.yml b/.travis.yml
+index f913db57..efb0df1b 100644
+--- a/.travis.yml
++++ b/.travis.yml
+@@ -29,7 +29,7 @@ before_script:
+     sudo modprobe kvm-intel nested=1 || :
+     sudo modprobe kvm-amd nested=1 || :
+     dmesg | tail || :
+-  - git pull --depth=100
++  - git fetch --tags --unshallow
+   - |
+     git describe --abbrev=0 --tags || :
+     git describe --tags || :
+
diff --git a/SOURCES/0028.patch b/SOURCES/0028.patch
new file mode 100644
index 0000000..0203f97
--- /dev/null
+++ b/SOURCES/0028.patch
@@ -0,0 +1,98 @@
+From e3b2b02c7f5b4e9f1d2a3cfe8749534959e29e3e Mon Sep 17 00:00:00 2001
+From: Lubomir Rintel <lkundrak@v3.sk>
+Date: Fri, 21 Jun 2019 18:39:48 +0200
+Subject: [PATCH] fs-lib: drop a bashism
+
+Bash 5 apparently longer propagates variable assignments to local variables
+in front of function calls when in POSIX mode:
+
+  [lkundrak@demiurge ~]$ cat feh.sh
+  print_VAR () {
+          echo "$VAR";
+  }
+
+  testfunc () {
+          local VAR="OLD"
+          VAR=NEW print_VAR
+  }
+
+  testfunc
+  [lkundrak@demiurge ~]$ bash4 --posix feh.sh
+  NEW
+  [lkundrak@demiurge ~]$ bash5 --posix feh.sh
+  OLD
+  [lkundrak@demiurge ~]$ bash5 feh.sh
+  NEW
+  [lkundrak@demiurge ~]$
+
+It works the way it did in Bash 4 in non-POSIX mode, for external programs,
+or for non-local variables. Don't ask me why -- it's probably some
+compatibility thing for some sad old people.
+
+However, this precisely happens when fsck_single() is calling into the
+fsck_drv_com(), assigned to _drv by fsck_able(). That ruins the
+TEST-70-BONDBRIDGETEAMVLAN test's server and probably more.
+
+Let's pass the fsck driver binary via the function argument instead. It's
+less messy anyway.
+
+(cherry picked from commit 43c8c4ce0471abbb8c0fc4b8be2515cebc636030)
+---
+ modules.d/99fs-lib/fs-lib.sh | 13 +++++++------
+ 1 file changed, 7 insertions(+), 6 deletions(-)
+
+diff --git a/modules.d/99fs-lib/fs-lib.sh b/modules.d/99fs-lib/fs-lib.sh
+index d39ca1b7..11e795d9 100755
+--- a/modules.d/99fs-lib/fs-lib.sh
++++ b/modules.d/99fs-lib/fs-lib.sh
+@@ -44,22 +44,22 @@ fsck_able() {
+             ;;
+         ext?)
+             type e2fsck >/dev/null 2>&1 &&
+-            _drv="_drv=e2fsck fsck_drv_com" &&
++            _drv="fsck_drv_com e2fsck" &&
+             return 0
+             ;;
+         f2fs)
+ 	    type fsck.f2fs >/dev/null 2>&1 &&
+-	    _drv="_drv=fsck.f2fs fsck_drv_com" &&
++	    _drv="fsck_drv_com fsck.f2fs" &&
+ 	    return 0
+ 	    ;;
+         jfs)
+             type jfs_fsck >/dev/null 2>&1 &&
+-            _drv="_drv=jfs_fsck fsck_drv_com" &&
++            _drv="fsck_drv_com jfs_fsck" &&
+             return 0
+             ;;
+         reiserfs)
+             type reiserfsck >/dev/null 2>&1 &&
+-            _drv="_drv=reiserfsck fsck_drv_com" &&
++            _drv="fsck_drv_com reiserfsck" &&
+             return 0
+             ;;
+         btrfs)
+@@ -70,12 +70,12 @@ fsck_able() {
+             ;;
+         nfs*)
+             # nfs can be a nop, returning success
+-            _drv="_drv=none :" &&
++            _drv=":" &&
+             return 0
+             ;;
+         *)
+             type fsck >/dev/null 2>&1 &&
+-            _drv="_drv=fsck fsck_drv_std" &&
++            _drv="fsck_drv_std fsck" &&
+             return 0
+             ;;
+     esac
+@@ -97,6 +97,7 @@ fsck_drv_btrfs() {
+ 
+ # common code for checkers that follow usual subset of options and return codes
+ fsck_drv_com() {
++    local _drv="$1"
+     local _ret
+     local _out
+ 
+
diff --git a/SOURCES/0029.patch b/SOURCES/0029.patch
new file mode 100644
index 0000000..b80d988
--- /dev/null
+++ b/SOURCES/0029.patch
@@ -0,0 +1,79 @@
+From e671c3a06a7e58461d4e9c9f3546cf6eac809300 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Tue, 4 Dec 2018 10:27:17 +0100
+Subject: [PATCH] 95iscsi/module-setup.sh: do not require 'hostname' anymore
+
+(cherry picked from commit ebe1821635dd99f07c817179ee5358d27aab53c5)
+
+[lkundrak@v3.sk: fixes TEST-30 that fails with: dracut: dracut module
+'iscsi' will not be installed, because command 'hostname' could not be
+found!]
+---
+ modules.d/40network/netroot.sh               | 2 +-
+ modules.d/95iscsi/module-setup.sh            | 4 ++--
+ modules.d/98dracut-systemd/dracut-cmdline.sh | 2 +-
+ modules.d/99base/init.sh                     | 2 +-
+ 4 files changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/modules.d/40network/netroot.sh b/modules.d/40network/netroot.sh
+index 207364cd..654cfc72 100755
+--- a/modules.d/40network/netroot.sh
++++ b/modules.d/40network/netroot.sh
+@@ -66,7 +66,7 @@ if [ -z "$2" ]; then
+ 
+     # Check: do we really know how to handle (net)root?
+     [ -z "$root" ] && die "No or empty root= argument"
+-    [ -z "$rootok" ] && die "Don't know how to handle 'root=$root'"
++    [ -z "$rootok" ] && die "X2 Don't know how to handle 'root=$root'"
+ 
+     handler=${netroot%%:*}
+     handler=${handler%%4}
+diff --git a/modules.d/95iscsi/module-setup.sh b/modules.d/95iscsi/module-setup.sh
+index 79af4a47..f6f3520d 100755
+--- a/modules.d/95iscsi/module-setup.sh
++++ b/modules.d/95iscsi/module-setup.sh
+@@ -4,7 +4,7 @@
+ check() {
+     local _rootdev
+     # If our prerequisites are not met, fail anyways.
+-    require_binaries hostname iscsi-iname iscsiadm iscsid || return 1
++    require_binaries iscsi-iname iscsiadm iscsid || return 1
+ 
+     # If hostonly was requested, fail the check if we are not actually
+     # booting from root.
+@@ -206,7 +206,7 @@ cmdline() {
+ install() {
+     inst_multiple -o iscsiuio
+     inst_libdir_file 'libgcc_s.so*'
+-    inst_multiple umount hostname iscsi-iname iscsiadm iscsid
++    inst_multiple umount iscsi-iname iscsiadm iscsid
+ 
+     inst_multiple -o \
+         $systemdsystemunitdir/iscsid.socket \
+diff --git a/modules.d/98dracut-systemd/dracut-cmdline.sh b/modules.d/98dracut-systemd/dracut-cmdline.sh
+index bff9435a..89c52d13 100755
+--- a/modules.d/98dracut-systemd/dracut-cmdline.sh
++++ b/modules.d/98dracut-systemd/dracut-cmdline.sh
+@@ -76,7 +76,7 @@ case "${root}${root_unset}" in
+ esac
+ 
+ [ -z "${root}${root_unset}" ] && die "Empty root= argument"
+-[ -z "$rootok" ] && die "Don't know how to handle 'root=$root'"
++[ -z "$rootok" ] && die "X1 Don't know how to handle 'root=$root'"
+ 
+ export root rflags fstype netroot NEWROOT
+ 
+diff --git a/modules.d/99base/init.sh b/modules.d/99base/init.sh
+index e4f7cff1..3e20069f 100755
+--- a/modules.d/99base/init.sh
++++ b/modules.d/99base/init.sh
+@@ -136,7 +136,7 @@ getarg 'rd.break=cmdline' -d 'rdbreak=cmdline' && emergency_shell -n cmdline "Br
+ source_hook cmdline
+ 
+ [ -z "$root" ] && die "No or empty root= argument"
+-[ -z "$rootok" ] && die "Don't know how to handle 'root=$root'"
++[ -z "$rootok" ] && die "X0 Don't know how to handle 'root=$root'"
+ 
+ export root rflags fstype netroot NEWROOT
+ 
+
diff --git a/SOURCES/0030.patch b/SOURCES/0030.patch
new file mode 100644
index 0000000..f0a13c5
--- /dev/null
+++ b/SOURCES/0030.patch
@@ -0,0 +1,24 @@
+From 50192de38d756203a414405e2d7552e89b1c0423 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Tue, 4 Dec 2018 10:06:12 +0100
+Subject: [PATCH] test/test-functions: correctly move server.log
+
+(cherry picked from commit 712f471ebfae70fd71c0c740e9a3e120464ca7e7)
+---
+ test/test-functions | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/test/test-functions b/test/test-functions
+index a6254ec7..51b3df80 100644
+--- a/test/test-functions
++++ b/test/test-functions
+@@ -80,7 +80,7 @@ while (($# > 0)); do
+                     ret=$?
+                     test_cleanup
+                     if ((ret!=0)) && [[ -f "$TESTDIR"/server.log ]]; then
+-                        mv [[ -f "$TESTDIR"/server.log ]] ./server${TEST_RUN_ID:+-$TEST_RUN_ID}.log
++                        mv "$TESTDIR"/server.log ./server${TEST_RUN_ID:+-$TEST_RUN_ID}.log
+                     fi
+                     rm -fr -- "$TESTDIR"
+                     rm -f -- .testdir${TEST_RUN_ID:+-$TEST_RUN_ID}
+
diff --git a/SOURCES/0031.patch b/SOURCES/0031.patch
new file mode 100644
index 0000000..b0741b9
--- /dev/null
+++ b/SOURCES/0031.patch
@@ -0,0 +1,43 @@
+From bf69beb6f3824b1ebed221c8255d1f5c9efd136a Mon Sep 17 00:00:00 2001
+From: Lubomir Rintel <lkundrak@v3.sk>
+Date: Wed, 26 Jun 2019 16:42:04 +0200
+Subject: [PATCH] test/TEST-17-LVM-THIN: fail setup if we run out of space in
+ the thin pool
+
+This condition is rather difficult to detect -- the writes will just remain
+queued and get lost on shutdown, resulting in a corrupt filesystem.
+
+(cherry picked from commit 91c15babdf0215df59325f3086acfdf0ba247bfa)
+---
+ test/TEST-17-LVM-THIN/create-root.sh | 5 +++--
+ test/TEST-17-LVM-THIN/test.sh        | 2 +-
+ 2 files changed, 4 insertions(+), 3 deletions(-)
+
+diff --git a/test/TEST-17-LVM-THIN/create-root.sh b/test/TEST-17-LVM-THIN/create-root.sh
+index 117d1341..0e52f879 100755
+--- a/test/TEST-17-LVM-THIN/create-root.sh
++++ b/test/TEST-17-LVM-THIN/create-root.sh
+@@ -27,6 +27,7 @@ cp -a -t /sysroot /source/* && \
+ umount /sysroot && \
+ sleep 1 && \
+ lvm lvchange -a n /dev/dracut/root && \
+-sleep 1 && \
+-echo "dracut-root-block-created" >/dev/sda1
++sleep 1
++dmsetup status |grep out_of_data_space || \
++    echo "dracut-root-block-created" >/dev/sda1
+ poweroff -f
+diff --git a/test/TEST-17-LVM-THIN/test.sh b/test/TEST-17-LVM-THIN/test.sh
+index af349246..1b36a216 100755
+--- a/test/TEST-17-LVM-THIN/test.sh
++++ b/test/TEST-17-LVM-THIN/test.sh
+@@ -56,7 +56,7 @@ test_setup() {
+     (
+ 	export initdir=$TESTDIR/overlay
+ 	. $basedir/dracut-init.sh
+-	inst_multiple sfdisk mke2fs poweroff cp umount
++	inst_multiple sfdisk mke2fs poweroff cp umount grep dmsetup
+ 	inst_hook initqueue 01 ./create-root.sh
+         inst_hook initqueue/finished 01 ./finished-false.sh
+ 	inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules
+
diff --git a/SOURCES/0032.patch b/SOURCES/0032.patch
new file mode 100644
index 0000000..b849baf
--- /dev/null
+++ b/SOURCES/0032.patch
@@ -0,0 +1,66 @@
+From 0f0b8c8f90cbcd56140e85b9997deda906c71118 Mon Sep 17 00:00:00 2001
+From: Lubomir Rintel <lkundrak@v3.sk>
+Date: Tue, 25 Jun 2019 17:39:57 +0200
+Subject: [PATCH] test/TEST-14-IMSM: detect failure to compose the test setup
+ root
+
+The dracut-root-block-created line should not be created if we fail to copy
+in the required files to sysroot. Let's turn on -e to trap failures and
+poweroff on them, like some other tests do.
+
+Also remove the &&. Not only it is unnecessary with -e, but defeats it.
+From bash(1):
+
+  The shell does not exit if the command that fails is [...] part of any
+  command executed in a && or || list except the command following the
+  final && or || [...]
+
+(cherry picked from commit c27ed38bb2986d31b08257782ce2b24a80415c6c)
+---
+ test/TEST-14-IMSM/create-root.sh | 23 +++++++++++++----------
+ 1 file changed, 13 insertions(+), 10 deletions(-)
+
+diff --git a/test/TEST-14-IMSM/create-root.sh b/test/TEST-14-IMSM/create-root.sh
+index f637ec88..a0324c6f 100755
+--- a/test/TEST-14-IMSM/create-root.sh
++++ b/test/TEST-14-IMSM/create-root.sh
+@@ -1,4 +1,7 @@
+ #!/bin/sh
++
++trap 'poweroff -f' EXIT
++
+ # don't let udev and this script step on eachother's toes
+ for x in 61-dmraid-imsm.rules 64-md-raid.rules 65-md-incremental-imsm.rules 65-md-incremental.rules 64-lvm.rules 70-mdadm.rules 99-mount-rules; do
+     rm -f -- "/etc/udev/rules.d/$x"
+@@ -55,20 +58,20 @@ mdadm --create /dev/md0 --run --auto=yes --level=5 --raid-devices=3 \
+ # wait for the array to finish initailizing, otherwise this sometimes fails
+ # randomly.
+ mdadm -W /dev/md0
++set -e
+ lvm pvcreate -ff  -y /dev/md0
+-lvm vgcreate dracut /dev/md0 && \
+-lvm lvcreate -l 100%FREE -n root dracut && \
+-lvm vgchange -ay && \
+-mke2fs -L root /dev/dracut/root && \
+-mkdir -p /sysroot && \
+-mount /dev/dracut/root /sysroot && \
+-cp -a -t /sysroot /source/* && \
+-umount /sysroot && \
+-lvm lvchange -a n /dev/dracut/root && \
++lvm vgcreate dracut /dev/md0
++lvm lvcreate -l 100%FREE -n root dracut
++lvm vgchange -ay
++mke2fs -L root /dev/dracut/root
++mkdir -p /sysroot
++mount /dev/dracut/root /sysroot
++cp -a -t /sysroot /source/*
++umount /sysroot
++lvm lvchange -a n /dev/dracut/root
+ udevadm settle
+ mdadm --detail --export /dev/md0 |grep -F MD_UUID > /tmp/mduuid
+ . /tmp/mduuid
+ echo "MD_UUID=$MD_UUID"
+ { echo "dracut-root-block-created"; echo MD_UUID=$MD_UUID;} > /dev/sda
+ mdadm --wait-clean /dev/md0
+-poweroff -f
+
diff --git a/SOURCES/0033.patch b/SOURCES/0033.patch
new file mode 100644
index 0000000..e45f147
--- /dev/null
+++ b/SOURCES/0033.patch
@@ -0,0 +1,346 @@
+From e35e43c1c28a8935660fe72650614e5dc1defb65 Mon Sep 17 00:00:00 2001
+From: Lubomir Rintel <lkundrak@v3.sk>
+Date: Wed, 26 Jun 2019 11:47:21 +0200
+Subject: [PATCH] test: tell systemd to reboot on fatal errors
+
+Otherwise systemd would freeze execution, causing the test to time out
+instead of failing fast.
+
+(cherry picked from commit 7934c6f918de2e82d0df5da557c5792c4fb7b798)
+---
+ test/TEST-01-BASIC/test.sh              | 2 +-
+ test/TEST-02-SYSTEMD/test.sh            | 2 +-
+ test/TEST-03-USR-MOUNT/test.sh          | 2 +-
+ test/TEST-04-FULL-SYSTEMD/test.sh       | 2 +-
+ test/TEST-10-RAID/test.sh               | 2 +-
+ test/TEST-11-LVM/test.sh                | 2 +-
+ test/TEST-12-RAID-DEG/test.sh           | 2 +-
+ test/TEST-13-ENC-RAID-LVM/test.sh       | 6 +++---
+ test/TEST-14-IMSM/test.sh               | 2 +-
+ test/TEST-15-BTRFSRAID/test.sh          | 2 +-
+ test/TEST-16-DMSQUASH/test.sh           | 2 +-
+ test/TEST-17-LVM-THIN/test.sh           | 2 +-
+ test/TEST-20-NFS/test.sh                | 4 ++--
+ test/TEST-30-ISCSI/test.sh              | 4 ++--
+ test/TEST-31-ISCSI-MULTI/test.sh        | 4 ++--
+ test/TEST-40-NBD/test.sh                | 4 ++--
+ test/TEST-50-MULTINIC/test.sh           | 4 ++--
+ test/TEST-70-BONDBRIDGETEAMVLAN/test.sh | 6 +++---
+ 18 files changed, 27 insertions(+), 27 deletions(-)
+
+diff --git a/test/TEST-01-BASIC/test.sh b/test/TEST-01-BASIC/test.sh
+index ed2ae5de..ca4a8288 100755
+--- a/test/TEST-01-BASIC/test.sh
++++ b/test/TEST-01-BASIC/test.sh
+@@ -15,7 +15,7 @@ test_run() {
+ 	-net none \
+ 	-watchdog i6300esb -watchdog-action poweroff \
+         -no-reboot \
+-	-append "panic=1 root=LABEL=dracut rw systemd.log_level=debug systemd.log_target=console rd.retry=3 rd.debug console=ttyS0,115200n81 rd.shell=0 $DEBUGFAIL" \
++	-append "panic=1 systemd.crash_reboot root=LABEL=dracut rw systemd.log_level=debug systemd.log_target=console rd.retry=3 rd.debug console=ttyS0,115200n81 rd.shell=0 $DEBUGFAIL" \
+ 	-initrd $TESTDIR/initramfs.testing || return 1
+     grep -F -m 1 -q dracut-root-block-success $TESTDIR/result || return 1
+ }
+diff --git a/test/TEST-02-SYSTEMD/test.sh b/test/TEST-02-SYSTEMD/test.sh
+index 8c5eb168..848021e5 100755
+--- a/test/TEST-02-SYSTEMD/test.sh
++++ b/test/TEST-02-SYSTEMD/test.sh
+@@ -11,7 +11,7 @@ test_run() {
+         -m 512M  -smp 2 -nographic \
+         -net none \
+         -no-reboot \
+-        -append "panic=1 root=LABEL=dracut rw loglevel=77 systemd.log_level=debug systemd.log_target=console rd.retry=3 rd.info console=ttyS0,115200n81 selinux=0 init=/sbin/init rd.shell=0 $DEBUGFAIL" \
++        -append "panic=1 systemd.crash_reboot root=LABEL=dracut rw loglevel=77 systemd.log_level=debug systemd.log_target=console rd.retry=3 rd.info console=ttyS0,115200n81 selinux=0 init=/sbin/init rd.shell=0 $DEBUGFAIL" \
+         -initrd $TESTDIR/initramfs.testing
+     grep -F -m 1 -q dracut-root-block-success $TESTDIR/root.ext3 || return 1
+ }
+diff --git a/test/TEST-03-USR-MOUNT/test.sh b/test/TEST-03-USR-MOUNT/test.sh
+index 42c0da65..5d5ec8f8 100755
+--- a/test/TEST-03-USR-MOUNT/test.sh
++++ b/test/TEST-03-USR-MOUNT/test.sh
+@@ -22,7 +22,7 @@ client_run() {
+ 	-net none \
+ 	-watchdog i6300esb -watchdog-action poweroff \
+         -no-reboot \
+-	-append "panic=1 root=LABEL=dracut $client_opts quiet rd.retry=3 rd.info console=ttyS0,115200n81 selinux=0 rd.debug rd.shell=0 $DEBUGFAIL" \
++	-append "panic=1 systemd.crash_reboot root=LABEL=dracut $client_opts quiet rd.retry=3 rd.info console=ttyS0,115200n81 selinux=0 rd.debug rd.shell=0 $DEBUGFAIL" \
+ 	-initrd $TESTDIR/initramfs.testing
+ 
+     if (($? != 0)); then
+diff --git a/test/TEST-04-FULL-SYSTEMD/test.sh b/test/TEST-04-FULL-SYSTEMD/test.sh
+index 97528e4f..f65f30f2 100755
+--- a/test/TEST-04-FULL-SYSTEMD/test.sh
++++ b/test/TEST-04-FULL-SYSTEMD/test.sh
+@@ -23,7 +23,7 @@ client_run() {
+ 	-m 512M  -smp 2 -nographic \
+ 	-net none \
+         -no-reboot \
+-	-append "panic=1 root=LABEL=dracut $client_opts rd.retry=3 console=ttyS0,115200n81 selinux=0 $DEBUGOUT rd.shell=0 $DEBUGFAIL" \
++	-append "panic=1 systemd.crash_reboot root=LABEL=dracut $client_opts rd.retry=3 console=ttyS0,115200n81 selinux=0 $DEBUGOUT rd.shell=0 $DEBUGFAIL" \
+ 	-initrd $TESTDIR/initramfs.testing
+ 
+     if (($? != 0)); then
+diff --git a/test/TEST-10-RAID/test.sh b/test/TEST-10-RAID/test.sh
+index 444126b2..0beb26c3 100755
+--- a/test/TEST-10-RAID/test.sh
++++ b/test/TEST-10-RAID/test.sh
+@@ -13,7 +13,7 @@ test_run() {
+ 	-m 512M  -smp 2 -nographic \
+ 	-net none \
+         -no-reboot \
+-	-append "panic=1 root=/dev/dracut/root rd.auto rw rd.retry=10 console=ttyS0,115200n81 selinux=0 rd.shell=0 $DEBUGFAIL" \
++	-append "panic=1 systemd.crash_reboot root=/dev/dracut/root rd.auto rw rd.retry=10 console=ttyS0,115200n81 selinux=0 rd.shell=0 $DEBUGFAIL" \
+ 	-initrd $TESTDIR/initramfs.testing
+     grep -F -m 1 -q dracut-root-block-success $DISKIMAGE || return 1
+ }
+diff --git a/test/TEST-11-LVM/test.sh b/test/TEST-11-LVM/test.sh
+index 5c105e01..a907c4b1 100755
+--- a/test/TEST-11-LVM/test.sh
++++ b/test/TEST-11-LVM/test.sh
+@@ -12,7 +12,7 @@ test_run() {
+ 	-m 512M  -smp 2 -nographic \
+ 	-net none \
+         -no-reboot \
+-	-append "panic=1 root=/dev/dracut/root rw rd.auto=1 quiet rd.retry=3 rd.info console=ttyS0,115200n81 selinux=0 rd.debug rd.shell=0 $DEBUGFAIL" \
++	-append "panic=1 systemd.crash_reboot root=/dev/dracut/root rw rd.auto=1 quiet rd.retry=3 rd.info console=ttyS0,115200n81 selinux=0 rd.debug rd.shell=0 $DEBUGFAIL" \
+ 	-initrd $TESTDIR/initramfs.testing
+     grep -F -m 1 -q dracut-root-block-success $TESTDIR/root.ext2 || return 1
+ }
+diff --git a/test/TEST-12-RAID-DEG/test.sh b/test/TEST-12-RAID-DEG/test.sh
+index 4e381d84..c82cde1e 100755
+--- a/test/TEST-12-RAID-DEG/test.sh
++++ b/test/TEST-12-RAID-DEG/test.sh
+@@ -20,7 +20,7 @@ client_run() {
+         -drive format=raw,index=3,media=disk,file=$TESTDIR/disk3.img.new \
+         -net none \
+         -no-reboot \
+-        -append "panic=1 $* systemd.log_target=kmsg loglevel=7 root=LABEL=root rw rd.retry=20 rd.info console=ttyS0,115200n81 log_buf_len=2M selinux=0 rd.debug rd.shell=0 $DEBUGFAIL " \
++        -append "panic=1 systemd.crash_reboot $* systemd.log_target=kmsg loglevel=7 root=LABEL=root rw rd.retry=20 rd.info console=ttyS0,115200n81 log_buf_len=2M selinux=0 rd.debug rd.shell=0 $DEBUGFAIL " \
+         -initrd $TESTDIR/initramfs.testing
+     if ! grep -F -m 1 -q dracut-root-block-success $TESTDIR/root.ext2; then
+         echo "CLIENT TEST END: $@ [FAIL]"
+diff --git a/test/TEST-13-ENC-RAID-LVM/test.sh b/test/TEST-13-ENC-RAID-LVM/test.sh
+index 76ec36b3..99324ce9 100755
+--- a/test/TEST-13-ENC-RAID-LVM/test.sh
++++ b/test/TEST-13-ENC-RAID-LVM/test.sh
+@@ -20,7 +20,7 @@ test_run() {
+ 	-m 512M  -smp 2 -nographic \
+ 	-net none \
+         -no-reboot \
+-	-append "panic=1 root=/dev/dracut/root rw rd.auto rd.retry=20 console=ttyS0,115200n81 selinux=0 rd.debug rootwait $LUKSARGS rd.shell=0 $DEBUGFAIL" \
++	-append "panic=1 systemd.crash_reboot root=/dev/dracut/root rw rd.auto rd.retry=20 console=ttyS0,115200n81 selinux=0 rd.debug rootwait $LUKSARGS rd.shell=0 $DEBUGFAIL" \
+ 	-initrd $TESTDIR/initramfs.testing
+     grep -F -m 1 -q dracut-root-block-success $TESTDIR/check-success.img || return 1
+     echo "CLIENT TEST END: [OK]"
+@@ -34,7 +34,7 @@ test_run() {
+ 	-m 512M  -smp 2 -nographic \
+ 	-net none \
+         -no-reboot \
+-	-append "panic=1 root=/dev/dracut/root rw quiet rd.auto rd.retry=20 rd.info console=ttyS0,115200n81 selinux=0 rd.debug  $DEBUGFAIL" \
++	-append "panic=1 systemd.crash_reboot root=/dev/dracut/root rw quiet rd.auto rd.retry=20 rd.info console=ttyS0,115200n81 selinux=0 rd.debug  $DEBUGFAIL" \
+ 	-initrd $TESTDIR/initramfs.testing
+     grep -F -m 1 -q dracut-root-block-success $TESTDIR/check-success.img || return 1
+     echo "CLIENT TEST END: [OK]"
+@@ -48,7 +48,7 @@ test_run() {
+ 	-m 512M  -smp 2 -nographic \
+ 	-net none \
+         -no-reboot \
+-	-append "panic=1 root=/dev/dracut/root rw quiet rd.auto rd.retry=10 rd.info console=ttyS0,115200n81 selinux=0 rd.debug  $DEBUGFAIL rd.luks.uuid=failme" \
++	-append "panic=1 systemd.crash_reboot root=/dev/dracut/root rw quiet rd.auto rd.retry=10 rd.info console=ttyS0,115200n81 selinux=0 rd.debug  $DEBUGFAIL rd.luks.uuid=failme" \
+ 	-initrd $TESTDIR/initramfs.testing
+     grep -F -m 1 -q dracut-root-block-success $TESTDIR/check-success.img && return 1
+     echo "CLIENT TEST END: [OK]"
+diff --git a/test/TEST-14-IMSM/test.sh b/test/TEST-14-IMSM/test.sh
+index 8ebc285a..ed60f052 100755
+--- a/test/TEST-14-IMSM/test.sh
++++ b/test/TEST-14-IMSM/test.sh
+@@ -16,7 +16,7 @@ client_run() {
+ 	-m 512M  -smp 2 -nographic \
+ 	-net none \
+         -no-reboot \
+-	-append "panic=1 $* root=LABEL=root rw debug rd.retry=5 rd.debug console=ttyS0,115200n81 selinux=0 rd.info rd.shell=0 $DEBUGFAIL" \
++	-append "panic=1 systemd.crash_reboot $* root=LABEL=root rw debug rd.retry=5 rd.debug console=ttyS0,115200n81 selinux=0 rd.info rd.shell=0 $DEBUGFAIL" \
+ 	-initrd $TESTDIR/initramfs.testing
+     if ! grep -F -m 1 -q dracut-root-block-success $TESTDIR/root.ext2; then
+ 	echo "CLIENT TEST END: $@ [FAIL]"
+diff --git a/test/TEST-15-BTRFSRAID/test.sh b/test/TEST-15-BTRFSRAID/test.sh
+index 02cb4976..dda76672 100755
+--- a/test/TEST-15-BTRFSRAID/test.sh
++++ b/test/TEST-15-BTRFSRAID/test.sh
+@@ -15,7 +15,7 @@ test_run() {
+ 	-m 512M -smp 2 -nographic \
+ 	-net none \
+         -no-reboot \
+-	-append "panic=1 root=LABEL=root rw rd.retry=3 rd.info console=ttyS0,115200n81 selinux=0 rd.shell=0 $DEBUGFAIL" \
++	-append "panic=1 systemd.crash_reboot root=LABEL=root rw rd.retry=3 rd.info console=ttyS0,115200n81 selinux=0 rd.shell=0 $DEBUGFAIL" \
+ 	-initrd $TESTDIR/initramfs.testing
+     grep -F -m 1 -q dracut-root-block-success $MARKER_DISKIMAGE || return 1
+ }
+diff --git a/test/TEST-16-DMSQUASH/test.sh b/test/TEST-16-DMSQUASH/test.sh
+index 45d8c4c0..65d5bdbb 100755
+--- a/test/TEST-16-DMSQUASH/test.sh
++++ b/test/TEST-16-DMSQUASH/test.sh
+@@ -23,7 +23,7 @@ test_run() {
+         -nographic \
+         -net none \
+         -no-reboot \
+-        -append "panic=1 root=live:CDLABEL=LiveCD live rw quiet rd.retry=3 rd.info console=ttyS0,115200n81 selinux=0 rd.shell=0 $DEBUGFAIL" \
++        -append "panic=1 systemd.crash_reboot root=live:CDLABEL=LiveCD live rw quiet rd.retry=3 rd.info console=ttyS0,115200n81 selinux=0 rd.shell=0 $DEBUGFAIL" \
+         -initrd "$TESTDIR"/initramfs.testing
+ 
+     # mediacheck test with qemu GUI
+diff --git a/test/TEST-17-LVM-THIN/test.sh b/test/TEST-17-LVM-THIN/test.sh
+index 1b36a216..c13e9063 100755
+--- a/test/TEST-17-LVM-THIN/test.sh
++++ b/test/TEST-17-LVM-THIN/test.sh
+@@ -12,7 +12,7 @@ test_run() {
+ 	-m 512M  -smp 2 -nographic \
+ 	-net none \
+         -no-reboot \
+-	-append "panic=1 root=/dev/dracut/root rw rd.auto=1 quiet rd.retry=3 rd.info console=ttyS0,115200n81 selinux=0 rd.debug rd.shell=0 $DEBUGFAIL" \
++	-append "panic=1 systemd.crash_reboot root=/dev/dracut/root rw rd.auto=1 quiet rd.retry=3 rd.info console=ttyS0,115200n81 selinux=0 rd.debug rd.shell=0 $DEBUGFAIL" \
+ 	-initrd $TESTDIR/initramfs.testing
+     grep -F -m 1 -q dracut-root-block-success $TESTDIR/root.ext2 || return 1
+ }
+diff --git a/test/TEST-20-NFS/test.sh b/test/TEST-20-NFS/test.sh
+index e942745a..4ad7fd77 100755
+--- a/test/TEST-20-NFS/test.sh
++++ b/test/TEST-20-NFS/test.sh
+@@ -22,7 +22,7 @@ run_server() {
+         ${SERIAL:--serial file:"$TESTDIR"/server.log} \
+         -watchdog i6300esb -watchdog-action poweroff \
+         -no-reboot \
+-        -append "panic=1 rd.debug loglevel=77 root=/dev/sda rootfstype=ext3 rw console=ttyS0,115200n81 selinux=0" \
++        -append "panic=1 systemd.crash_reboot rd.debug loglevel=77 root=/dev/sda rootfstype=ext3 rw console=ttyS0,115200n81 selinux=0" \
+         -initrd $TESTDIR/initramfs.server \
+         -pidfile $TESTDIR/server.pid -daemonize || return 1
+     sudo chmod 644 $TESTDIR/server.pid || return 1
+@@ -57,7 +57,7 @@ client_test() {
+         -net socket,connect=127.0.0.1:12320 \
+         -watchdog i6300esb -watchdog-action poweroff \
+         -no-reboot \
+-        -append "panic=1 rd.shell=0 $cmdline $DEBUGFAIL rd.debug rd.retry=10 rd.info quiet  ro console=ttyS0,115200n81 selinux=0" \
++        -append "panic=1 systemd.crash_reboot rd.shell=0 $cmdline $DEBUGFAIL rd.debug rd.retry=10 rd.info quiet  ro console=ttyS0,115200n81 selinux=0" \
+         -initrd $TESTDIR/initramfs.testing
+ 
+     if [[ $? -ne 0 ]] || ! grep -F -m 1 -q nfs-OK $TESTDIR/client.img; then
+diff --git a/test/TEST-30-ISCSI/test.sh b/test/TEST-30-ISCSI/test.sh
+index f6cc56d5..d5a6ba58 100755
+--- a/test/TEST-30-ISCSI/test.sh
++++ b/test/TEST-30-ISCSI/test.sh
+@@ -26,7 +26,7 @@ run_server() {
+         -net nic,macaddr=52:54:00:12:34:57,model=e1000 \
+         -net socket,listen=127.0.0.1:12330 \
+         -no-reboot \
+-        -append "panic=1 root=/dev/sda rootfstype=ext3 rw console=ttyS0,115200n81 selinux=0 $SERVER_DEBUG" \
++        -append "panic=1 systemd.crash_reboot root=/dev/sda rootfstype=ext3 rw console=ttyS0,115200n81 selinux=0 $SERVER_DEBUG" \
+         -initrd $TESTDIR/initramfs.server \
+         -pidfile $TESTDIR/server.pid -daemonize || return 1
+     sudo chmod 644 $TESTDIR/server.pid || return 1
+@@ -51,7 +51,7 @@ run_client() {
+         -net nic,macaddr=52:54:00:12:34:01,model=e1000 \
+         -net socket,connect=127.0.0.1:12330 \
+         -no-reboot \
+-        -append "panic=1 rw rd.auto rd.retry=50 console=ttyS0,115200n81 selinux=0 rd.debug=0 rd.shell=0 $DEBUGFAIL $*" \
++        -append "panic=1 systemd.crash_reboot rw rd.auto rd.retry=50 console=ttyS0,115200n81 selinux=0 rd.debug=0 rd.shell=0 $DEBUGFAIL $*" \
+         -initrd $TESTDIR/initramfs.testing
+     if ! grep -F -m 1 -q iscsi-OK $TESTDIR/client.img; then
+ 	echo "CLIENT TEST END: $test_name [FAILED - BAD EXIT]"
+diff --git a/test/TEST-31-ISCSI-MULTI/test.sh b/test/TEST-31-ISCSI-MULTI/test.sh
+index 5c38249c..20db2451 100755
+--- a/test/TEST-31-ISCSI-MULTI/test.sh
++++ b/test/TEST-31-ISCSI-MULTI/test.sh
+@@ -26,7 +26,7 @@ run_server() {
+         -net nic,macaddr=52:54:00:12:34:57,model=e1000 \
+         -net socket,listen=127.0.0.1:12331 \
+         -no-reboot \
+-        -append "panic=1 root=/dev/sda rootfstype=ext3 rw console=ttyS0,115200n81 selinux=0 $SERVER_DEBUG" \
++        -append "panic=1 systemd.crash_reboot root=/dev/sda rootfstype=ext3 rw console=ttyS0,115200n81 selinux=0 $SERVER_DEBUG" \
+         -initrd $TESTDIR/initramfs.server \
+         -pidfile $TESTDIR/server.pid -daemonize || return 1
+     sudo chmod 644 $TESTDIR/server.pid || return 1
+@@ -51,7 +51,7 @@ run_client() {
+         -net nic,macaddr=52:54:00:12:34:01,model=e1000 \
+         -net socket,connect=127.0.0.1:12331 \
+         -no-reboot \
+-        -append "panic=1 rw rd.auto rd.retry=50 console=ttyS0,115200n81 selinux=0 rd.debug=0 rd.shell=0 $DEBUGFAIL $*" \
++        -append "panic=1 systemd.crash_reboot rw rd.auto rd.retry=50 console=ttyS0,115200n81 selinux=0 rd.debug=0 rd.shell=0 $DEBUGFAIL $*" \
+         -initrd $TESTDIR/initramfs.testing
+     if ! grep -F -m 1 -q iscsi-OK $TESTDIR/client.img; then
+ 	echo "CLIENT TEST END: $test_name [FAILED - BAD EXIT]"
+diff --git a/test/TEST-40-NBD/test.sh b/test/TEST-40-NBD/test.sh
+index 12736a15..19ec5b0e 100755
+--- a/test/TEST-40-NBD/test.sh
++++ b/test/TEST-40-NBD/test.sh
+@@ -28,7 +28,7 @@ run_server() {
+         ${SERIAL:+-serial "$SERIAL"} \
+         ${SERIAL:--serial file:"$TESTDIR"/server.log} \
+         -no-reboot \
+-        -append "panic=1 root=/dev/sda rootfstype=ext2 rw quiet console=ttyS0,115200n81 selinux=0" \
++        -append "panic=1 systemd.crash_reboot root=/dev/sda rootfstype=ext2 rw quiet console=ttyS0,115200n81 selinux=0" \
+         -initrd $TESTDIR/initramfs.server -pidfile $TESTDIR/server.pid -daemonize || return 1
+     sudo chmod 644 $TESTDIR/server.pid || return 1
+ 
+@@ -65,7 +65,7 @@ client_test() {
+         -net nic,macaddr=$mac,model=e1000 \
+         -net socket,connect=127.0.0.1:12340 \
+         -no-reboot \
+-        -append "panic=1 rd.shell=0 $cmdline $DEBUGFAIL rd.auto rd.info rd.retry=10 ro console=ttyS0,115200n81  selinux=0  " \
++        -append "panic=1 systemd.crash_reboot rd.shell=0 $cmdline $DEBUGFAIL rd.auto rd.info rd.retry=10 ro console=ttyS0,115200n81  selinux=0  " \
+         -initrd $TESTDIR/initramfs.testing
+ 
+     if [[ $? -ne 0 ]] || ! grep -F -m 1 -q nbd-OK $TESTDIR/flag.img; then
+diff --git a/test/TEST-50-MULTINIC/test.sh b/test/TEST-50-MULTINIC/test.sh
+index 495a66f2..ff2961dc 100755
+--- a/test/TEST-50-MULTINIC/test.sh
++++ b/test/TEST-50-MULTINIC/test.sh
+@@ -23,7 +23,7 @@ run_server() {
+         ${SERIAL:--serial file:"$TESTDIR"/server.log} \
+         -watchdog i6300esb -watchdog-action poweroff \
+         -no-reboot \
+-        -append "panic=1 loglevel=7 root=/dev/sda rootfstype=ext3 rw console=ttyS0,115200n81 selinux=0" \
++        -append "panic=1 systemd.crash_reboot loglevel=7 root=/dev/sda rootfstype=ext3 rw console=ttyS0,115200n81 selinux=0" \
+         -initrd "$TESTDIR"/initramfs.server \
+         -pidfile "$TESTDIR"/server.pid -daemonize || return 1
+ 
+@@ -63,7 +63,7 @@ client_test() {
+                       -device e1000,netdev=n2,mac=52:54:00:12:34:99 \
+                       -watchdog i6300esb -watchdog-action poweroff \
+                       -no-reboot \
+-                      -append "panic=1 rd.shell=0 $cmdline $DEBUGFAIL rd.retry=5 ro console=ttyS0,115200n81 selinux=0 init=/sbin/init rd.debug systemd.log_target=console loglevel=7" \
++                      -append "panic=1 systemd.crash_reboot rd.shell=0 $cmdline $DEBUGFAIL rd.retry=5 ro console=ttyS0,115200n81 selinux=0 init=/sbin/init rd.debug systemd.log_target=console loglevel=7" \
+                       -initrd "$TESTDIR"/initramfs.testing
+ 
+     { read OK; read IFACES; } < "$TESTDIR"/client.img
+diff --git a/test/TEST-70-BONDBRIDGETEAMVLAN/test.sh b/test/TEST-70-BONDBRIDGETEAMVLAN/test.sh
+index 8c11a7d3..5618baee 100755
+--- a/test/TEST-70-BONDBRIDGETEAMVLAN/test.sh
++++ b/test/TEST-70-BONDBRIDGETEAMVLAN/test.sh
+@@ -31,7 +31,7 @@ run_server() {
+         ${SERIAL:--serial file:"$TESTDIR"/server.log} \
+         -watchdog i6300esb -watchdog-action poweroff \
+         -no-reboot \
+-        -append "panic=1 loglevel=7 root=/dev/sda rootfstype=ext3 rw console=ttyS0,115200n81 selinux=0 rd.debug" \
++        -append "panic=1 systemd.crash_reboot loglevel=7 root=/dev/sda rootfstype=ext3 rw console=ttyS0,115200n81 selinux=0 rd.debug" \
+         -initrd "$TESTDIR"/initramfs.server \
+         -pidfile "$TESTDIR"/server.pid -daemonize || return 1
+     chmod 644 -- "$TESTDIR"/server.pid || return 1
+@@ -79,7 +79,7 @@ client_test() {
+             $nic3 -device e1000,mac=52:54:00:12:34:05,netdev=n3 \
+             -watchdog i6300esb -watchdog-action poweroff \
+             -no-reboot \
+-            -append "panic=1 $cmdline rd.debug $DEBUGFAIL rd.retry=5 rw console=ttyS0,115200n81 selinux=0 init=/sbin/init" \
++            -append "panic=1 systemd.crash_reboot $cmdline rd.debug $DEBUGFAIL rd.retry=5 rw console=ttyS0,115200n81 selinux=0 init=/sbin/init" \
+             -initrd "$TESTDIR"/initramfs.testing
+     else
+         $testdir/run-qemu \
+@@ -95,7 +95,7 @@ client_test() {
+             -net nic,vlan=3,macaddr=52:54:00:12:34:05,model=e1000 \
+             -watchdog i6300esb -watchdog-action poweroff \
+             -no-reboot \
+-            -append "panic=1 $cmdline rd.debug $DEBUGFAIL rd.retry=5 rw console=ttyS0,115200n81 selinux=0 init=/sbin/init" \
++            -append "panic=1 systemd.crash_reboot $cmdline rd.debug $DEBUGFAIL rd.retry=5 rw console=ttyS0,115200n81 selinux=0 init=/sbin/init" \
+             -initrd "$TESTDIR"/initramfs.testing
+     fi
+ 
+
diff --git a/SOURCES/0034.patch b/SOURCES/0034.patch
new file mode 100644
index 0000000..f9f8d59
--- /dev/null
+++ b/SOURCES/0034.patch
@@ -0,0 +1,229 @@
+From a34b1baa6ca45b420399ec4cefe3cfe225c14dcf Mon Sep 17 00:00:00 2001
+From: Lubomir Rintel <lkundrak@v3.sk>
+Date: Tue, 11 Jun 2019 09:56:13 +0200
+Subject: [PATCH] test/{10,12,13,14,17,30,31}: increase the disk sizes
+
+On Fedora 30 the paritition sizes turn out to be too small again:
+
+  + mkdir -p /sysroot
+  + mount /dev/dracut/root /sysroot
+  + cp -a -t /sysroot /source/bin /source/dev /source/etc /source/lib /source/lib64 /source/proc /source/root /source/sbin /source/sys /source/tmp /source/usr /source/var
+  cp: error writing '/sysroot/usr/lib64/libkrb5.so.3.3': No space left on device
+  cp: error writing '/sysroot/usr/lib64/libkrb5support.so.0.1': No space left on device
+
+It turns out that there has been quite some size increase in some libraries,
+notably glibc, though not all -- some even shrunk, ruling out a toolchain
+problem. Here's are files over 1M we install on Fedora 30:
+
+   f29    f30
+  2.7M => 6.4M /usr/lib64/{libc-2.28.so => libc-2.29.so}
+  3.1M => 6.0M /usr/lib64/libcrypto.so.1.1.1c
+  2.0M => 3.5M /usr/lib64/{libm-2.28.so => libm-2.29.so}
+  2.9M => 2.8M /usr/lib/systemd/{libsystemd-shared-239.so => libsystemd-shared-241.so}
+  1.7M => 2.5M /usr/lib64/libunistring.so.2.1.0
+  2.3M => 2.4M /usr/lib64/bind9-export/libdns-export.so.1105.0.0
+  1.2M => 2.1M /usr/bin/bash
+  1.1M => 1.4M /usr/lib64/libkrb5.so.3.3
+  1.2M => 1.4M /usr/lib64/libgcrypt.so.20.2.4
+  612K => 1.1M /usr/lib64/libssl.so.1.1.1c
+
+This increases the image sizes to accomodate for this. There's probably
+little else we can do.
+
+(cherry picked from commit e318ba30fbd84d510a5bbb071d868e523d965869)
+---
+ test/TEST-10-RAID/create-root.sh         | 6 +++---
+ test/TEST-10-RAID/test.sh                | 2 +-
+ test/TEST-12-RAID-DEG/test.sh            | 6 +++---
+ test/TEST-13-ENC-RAID-LVM/create-root.sh | 6 +++---
+ test/TEST-13-ENC-RAID-LVM/test.sh        | 2 +-
+ test/TEST-14-IMSM/create-root.sh         | 6 +++---
+ test/TEST-14-IMSM/test.sh                | 4 ++--
+ test/TEST-17-LVM-THIN/create-root.sh     | 8 ++++----
+ test/TEST-17-LVM-THIN/test.sh            | 2 +-
+ test/TEST-30-ISCSI/test.sh               | 6 +++---
+ test/TEST-31-ISCSI-MULTI/test.sh         | 6 +++---
+ 11 files changed, 27 insertions(+), 27 deletions(-)
+
+diff --git a/test/TEST-10-RAID/create-root.sh b/test/TEST-10-RAID/create-root.sh
+index 7b5f2a76..af4cac0d 100755
+--- a/test/TEST-10-RAID/create-root.sh
++++ b/test/TEST-10-RAID/create-root.sh
+@@ -8,9 +8,9 @@ udevadm control --reload
+ # save a partition at the beginning for future flagging purposes
+ sfdisk /dev/sda <<EOF
+ ,4M
+-,25M
+-,25M
+-,25M
++,41M
++,41M
++,41M
+ EOF
+ udevadm settle
+ mdadm --create /dev/md0 --run --auto=yes --level=5 --raid-devices=3 /dev/sda2 /dev/sda3 /dev/sda4
+diff --git a/test/TEST-10-RAID/test.sh b/test/TEST-10-RAID/test.sh
+index 0beb26c3..07179a29 100755
+--- a/test/TEST-10-RAID/test.sh
++++ b/test/TEST-10-RAID/test.sh
+@@ -22,7 +22,7 @@ test_setup() {
+     DISKIMAGE=$TESTDIR/TEST-10-RAID-root.img
+     # Create the blank file to use as a root filesystem
+     rm -f -- $DISKIMAGE
+-    dd if=/dev/null of=$DISKIMAGE bs=1M seek=80
++    dd if=/dev/null of=$DISKIMAGE bs=1M seek=128
+ 
+     kernel=$KVERSION
+     # Create what will eventually be our root filesystem onto an overlay
+diff --git a/test/TEST-12-RAID-DEG/test.sh b/test/TEST-12-RAID-DEG/test.sh
+index c82cde1e..920baafd 100755
+--- a/test/TEST-12-RAID-DEG/test.sh
++++ b/test/TEST-12-RAID-DEG/test.sh
+@@ -59,9 +59,9 @@ test_setup() {
+     # Create the blank file to use as a root filesystem
+     rm -f -- $TESTDIR/root.ext2
+     dd if=/dev/null of=$TESTDIR/root.ext2 bs=1M seek=40
+-    dd if=/dev/null of=$TESTDIR/disk1.img bs=1M seek=20
+-    dd if=/dev/null of=$TESTDIR/disk2.img bs=1M seek=20
+-    dd if=/dev/null of=$TESTDIR/disk3.img bs=1M seek=20
++    dd if=/dev/null of=$TESTDIR/disk1.img bs=1M seek=35
++    dd if=/dev/null of=$TESTDIR/disk2.img bs=1M seek=35
++    dd if=/dev/null of=$TESTDIR/disk3.img bs=1M seek=35
+ 
+     kernel=$KVERSION
+     # Create what will eventually be our root filesystem onto an overlay
+diff --git a/test/TEST-13-ENC-RAID-LVM/create-root.sh b/test/TEST-13-ENC-RAID-LVM/create-root.sh
+index 72bc765f..13e65838 100755
+--- a/test/TEST-13-ENC-RAID-LVM/create-root.sh
++++ b/test/TEST-13-ENC-RAID-LVM/create-root.sh
+@@ -9,9 +9,9 @@ udevadm control --reload
+ # save a partition at the beginning for future flagging purposes
+ sfdisk /dev/sda <<EOF
+ ,4M
+-,25M
+-,25M
+-,25M
++,43M
++,43M
++,43M
+ EOF
+ udevadm settle
+ printf test >keyfile
+diff --git a/test/TEST-13-ENC-RAID-LVM/test.sh b/test/TEST-13-ENC-RAID-LVM/test.sh
+index 99324ce9..9ffe24b1 100755
+--- a/test/TEST-13-ENC-RAID-LVM/test.sh
++++ b/test/TEST-13-ENC-RAID-LVM/test.sh
+@@ -59,7 +59,7 @@ test_run() {
+ test_setup() {
+     # Create the blank file to use as a root filesystem
+     rm -f -- $TESTDIR/root.ext2
+-    dd if=/dev/null of=$TESTDIR/root.ext2 bs=1M seek=80
++    dd if=/dev/null of=$TESTDIR/root.ext2 bs=1M seek=134
+ 
+     kernel=$KVERSION
+     # Create what will eventually be our root filesystem onto an overlay
+diff --git a/test/TEST-14-IMSM/create-root.sh b/test/TEST-14-IMSM/create-root.sh
+index a0324c6f..0d10945b 100755
+--- a/test/TEST-14-IMSM/create-root.sh
++++ b/test/TEST-14-IMSM/create-root.sh
+@@ -32,9 +32,9 @@ sfdisk -g /dev/mapper/isw*Test0
+ # save a partition at the beginning for future flagging purposes
+ sfdisk --no-reread /dev/mapper/isw*Test0 <<EOF
+ ,4M
+-,20M
+-,20M
+-,20M
++,28M
++,28M
++,28M
+ EOF
+ 
+ udevadm settle
+diff --git a/test/TEST-14-IMSM/test.sh b/test/TEST-14-IMSM/test.sh
+index ed60f052..a3e52b53 100755
+--- a/test/TEST-14-IMSM/test.sh
++++ b/test/TEST-14-IMSM/test.sh
+@@ -53,8 +53,8 @@ test_setup() {
+     rm -f -- $TESTDIR/disk1
+     rm -f -- $TESTDIR/disk2
+     dd if=/dev/null of=$TESTDIR/root.ext2 bs=1M seek=1
+-    dd if=/dev/null of=$TESTDIR/disk1 bs=1M seek=80
+-    dd if=/dev/null of=$TESTDIR/disk2 bs=1M seek=80
++    dd if=/dev/null of=$TESTDIR/disk1 bs=1M seek=104
++    dd if=/dev/null of=$TESTDIR/disk2 bs=1M seek=104
+ 
+     kernel=$KVERSION
+     # Create what will eventually be our root filesystem onto an overlay
+diff --git a/test/TEST-17-LVM-THIN/create-root.sh b/test/TEST-17-LVM-THIN/create-root.sh
+index 0e52f879..6e09012e 100755
+--- a/test/TEST-17-LVM-THIN/create-root.sh
++++ b/test/TEST-17-LVM-THIN/create-root.sh
+@@ -8,16 +8,16 @@ udevadm control --reload
+ # save a partition at the beginning for future flagging purposes
+ sfdisk /dev/sda <<EOF
+ ,4M
+-,25M
+-,25M
+-,25M
++,29M
++,29M
++,29M
+ EOF
+ udevadm settle
+ for i in sda2 sda3 sda4; do
+ lvm pvcreate -ff  -y /dev/$i ;
+ done && \
+ lvm vgcreate dracut /dev/sda[234] && \
+-lvm lvcreate -l 16  -T dracut/mythinpool && \
++lvm lvcreate -l 17  -T dracut/mythinpool && \
+ lvm lvcreate -V1G -T dracut/mythinpool -n root && \
+ lvm vgchange -ay && \
+ mke2fs /dev/dracut/root && \
+diff --git a/test/TEST-17-LVM-THIN/test.sh b/test/TEST-17-LVM-THIN/test.sh
+index c13e9063..c7247c91 100755
+--- a/test/TEST-17-LVM-THIN/test.sh
++++ b/test/TEST-17-LVM-THIN/test.sh
+@@ -19,7 +19,7 @@ test_run() {
+ 
+ test_setup() {
+     # Create the blank file to use as a root filesystem
+-    dd if=/dev/null of=$TESTDIR/root.ext2 bs=1M seek=80
++    dd if=/dev/null of=$TESTDIR/root.ext2 bs=1M seek=92
+ 
+     kernel=$KVERSION
+     # Create what will eventually be our root filesystem onto an overlay
+diff --git a/test/TEST-30-ISCSI/test.sh b/test/TEST-30-ISCSI/test.sh
+index d5a6ba58..c126e3dd 100755
+--- a/test/TEST-30-ISCSI/test.sh
++++ b/test/TEST-30-ISCSI/test.sh
+@@ -109,9 +109,9 @@ test_setup() {
+     fi
+ 
+     # Create the blank file to use as a root filesystem
+-    dd if=/dev/null of=$TESTDIR/root.ext3 bs=1M seek=40
+-    dd if=/dev/null of=$TESTDIR/iscsidisk2.img bs=1M seek=40
+-    dd if=/dev/null of=$TESTDIR/iscsidisk3.img bs=1M seek=40
++    dd if=/dev/null of=$TESTDIR/root.ext3 bs=1M seek=45
++    dd if=/dev/null of=$TESTDIR/iscsidisk2.img bs=1M seek=45
++    dd if=/dev/null of=$TESTDIR/iscsidisk3.img bs=1M seek=45
+ 
+     kernel=$KVERSION
+     # Create what will eventually be our root filesystem onto an overlay
+diff --git a/test/TEST-31-ISCSI-MULTI/test.sh b/test/TEST-31-ISCSI-MULTI/test.sh
+index 20db2451..122c69e3 100755
+--- a/test/TEST-31-ISCSI-MULTI/test.sh
++++ b/test/TEST-31-ISCSI-MULTI/test.sh
+@@ -131,9 +131,9 @@ test_setup() {
+     fi
+ 
+     # Create the blank file to use as a root filesystem
+-    dd if=/dev/null of=$TESTDIR/root.ext3 bs=1M seek=40
+-    dd if=/dev/null of=$TESTDIR/iscsidisk2.img bs=1M seek=40
+-    dd if=/dev/null of=$TESTDIR/iscsidisk3.img bs=1M seek=40
++    dd if=/dev/null of=$TESTDIR/root.ext3 bs=1M seek=45
++    dd if=/dev/null of=$TESTDIR/iscsidisk2.img bs=1M seek=45
++    dd if=/dev/null of=$TESTDIR/iscsidisk3.img bs=1M seek=45
+ 
+     kernel=$KVERSION
+     # Create what will eventually be our root filesystem onto an overlay
+
diff --git a/SOURCES/0035.patch b/SOURCES/0035.patch
new file mode 100644
index 0000000..a9724c2
--- /dev/null
+++ b/SOURCES/0035.patch
@@ -0,0 +1,27 @@
+From d9bf0c38be49199724abe1d18bc1c2686e6f0c88 Mon Sep 17 00:00:00 2001
+From: Lubomir Rintel <lkundrak@v3.sk>
+Date: Thu, 27 Jun 2019 16:20:32 +0200
+Subject: [PATCH] travis: run TEST-14-IMSM on Fedora 29
+
+Systemd in Fedora 30 is broken at the moment.
+Fix: https://github.com/systemd/systemd/pull/12872/
+
+(cherry picked from commit 7a2503ab8cec9473ad6dacf4f48b17344219f3c0)
+---
+ .travis.yml | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/.travis.yml b/.travis.yml
+index efb0df1b..de0af438 100644
+--- a/.travis.yml
++++ b/.travis.yml
+@@ -19,7 +19,7 @@ env:
+   - IMAGE=latest TESTS=10
+   - IMAGE=latest TESTS=11
+   - IMAGE=latest TESTS=13
+-  - IMAGE=latest TESTS=14
++  - IMAGE=29 TESTS=14
+   - IMAGE=latest TESTS=15
+   - IMAGE=latest TESTS=17
+ 
+
diff --git a/SOURCES/0036.patch b/SOURCES/0036.patch
new file mode 100644
index 0000000..4e3f921
--- /dev/null
+++ b/SOURCES/0036.patch
@@ -0,0 +1,27 @@
+From c60f4fc027272c221a887128070ac89547b6ecc3 Mon Sep 17 00:00:00 2001
+From: Lubomir Rintel <lkundrak@v3.sk>
+Date: Thu, 27 Jun 2019 16:22:04 +0200
+Subject: [PATCH] travis: run TEST-13-ENC-RAID-LVM on Fedora 29
+
+Systemd in Fedora 30 is broken at the moment.
+Fix: https://github.com/systemd/systemd/pull/12897
+
+(cherry picked from commit 8238f41b34777c3c75b03a9b598d4b9e1c7bf911)
+---
+ .travis.yml | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/.travis.yml b/.travis.yml
+index de0af438..364078cf 100644
+--- a/.travis.yml
++++ b/.travis.yml
+@@ -18,7 +18,7 @@ env:
+   - IMAGE=latest TESTS=04
+   - IMAGE=latest TESTS=10
+   - IMAGE=latest TESTS=11
+-  - IMAGE=latest TESTS=13
++  - IMAGE=29 TESTS=13
+   - IMAGE=29 TESTS=14
+   - IMAGE=latest TESTS=15
+   - IMAGE=latest TESTS=17
+
diff --git a/SOURCES/0037.patch b/SOURCES/0037.patch
new file mode 100644
index 0000000..5d067a6
--- /dev/null
+++ b/SOURCES/0037.patch
@@ -0,0 +1,53 @@
+From d8f0e52ac7d05c364ca24d2058c970e5e03f82ff Mon Sep 17 00:00:00 2001
+From: Lubomir Rintel <lkundrak@v3.sk>
+Date: Fri, 30 Aug 2019 16:16:51 +0200
+Subject: [PATCH] all: remove debugging leftovers
+
+Accidentally folded into commit e671c3a06a7e5 ('95iscsi/module-setup.sh:
+do not require 'hostname' anymore').
+---
+ modules.d/40network/netroot.sh               | 2 +-
+ modules.d/98dracut-systemd/dracut-cmdline.sh | 2 +-
+ modules.d/99base/init.sh                     | 2 +-
+ 3 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/modules.d/40network/netroot.sh b/modules.d/40network/netroot.sh
+index 654cfc72..207364cd 100755
+--- a/modules.d/40network/netroot.sh
++++ b/modules.d/40network/netroot.sh
+@@ -66,7 +66,7 @@ if [ -z "$2" ]; then
+ 
+     # Check: do we really know how to handle (net)root?
+     [ -z "$root" ] && die "No or empty root= argument"
+-    [ -z "$rootok" ] && die "X2 Don't know how to handle 'root=$root'"
++    [ -z "$rootok" ] && die "Don't know how to handle 'root=$root'"
+ 
+     handler=${netroot%%:*}
+     handler=${handler%%4}
+diff --git a/modules.d/98dracut-systemd/dracut-cmdline.sh b/modules.d/98dracut-systemd/dracut-cmdline.sh
+index 89c52d13..bff9435a 100755
+--- a/modules.d/98dracut-systemd/dracut-cmdline.sh
++++ b/modules.d/98dracut-systemd/dracut-cmdline.sh
+@@ -76,7 +76,7 @@ case "${root}${root_unset}" in
+ esac
+ 
+ [ -z "${root}${root_unset}" ] && die "Empty root= argument"
+-[ -z "$rootok" ] && die "X1 Don't know how to handle 'root=$root'"
++[ -z "$rootok" ] && die "Don't know how to handle 'root=$root'"
+ 
+ export root rflags fstype netroot NEWROOT
+ 
+diff --git a/modules.d/99base/init.sh b/modules.d/99base/init.sh
+index 3e20069f..e4f7cff1 100755
+--- a/modules.d/99base/init.sh
++++ b/modules.d/99base/init.sh
+@@ -136,7 +136,7 @@ getarg 'rd.break=cmdline' -d 'rdbreak=cmdline' && emergency_shell -n cmdline "Br
+ source_hook cmdline
+ 
+ [ -z "$root" ] && die "No or empty root= argument"
+-[ -z "$rootok" ] && die "X0 Don't know how to handle 'root=$root'"
++[ -z "$rootok" ] && die "Don't know how to handle 'root=$root'"
+ 
+ export root rflags fstype netroot NEWROOT
+ 
+
diff --git a/SOURCES/0038.patch b/SOURCES/0038.patch
new file mode 100644
index 0000000..43acb72
--- /dev/null
+++ b/SOURCES/0038.patch
@@ -0,0 +1,31 @@
+From 8eb08e55286e77f005246d1db1bfd2adf4a0e40b Mon Sep 17 00:00:00 2001
+From: Lubomir Rintel <lkundrak@v3.sk>
+Date: Tue, 27 Nov 2018 15:30:48 +0100
+Subject: [PATCH] network-manager: call the online hook for connected devices
+
+Look for "connection-uuid" instead of "managed" to determine the devices
+that are actually activated with a connection and call the online hook.
+
+This fixes the anaconda-net root mount, which utilizes the online hook.
+
+(cherry picked from commit 79a17b0112995eb60c85c64d15070c52f213b28d)
+---
+ modules.d/35network-manager/nm-run.sh | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/modules.d/35network-manager/nm-run.sh b/modules.d/35network-manager/nm-run.sh
+index f6defa99..0f943631 100755
+--- a/modules.d/35network-manager/nm-run.sh
++++ b/modules.d/35network-manager/nm-run.sh
+@@ -9,8 +9,9 @@ fi
+ for _i in /sys/class/net/*/
+ do
+     state=/run/NetworkManager/devices/$(cat $_i/ifindex)
+-    grep -q managed=true $state 2>/dev/null || continue
++    grep -q connection-uuid= $state 2>/dev/null || continue
+     ifname=$(basename $_i)
+     sed -n 's/root-path/new_root_path/p' <$state >/tmp/dhclient.$ifname.dhcpopts
++    source_hook initqueue/online $ifname
+     /sbin/netroot $ifname
+ done
+
diff --git a/SOURCES/0039.patch b/SOURCES/0039.patch
new file mode 100644
index 0000000..df4625b
--- /dev/null
+++ b/SOURCES/0039.patch
@@ -0,0 +1,24 @@
+From 34011ee53e745f74d70bc5b52dade6d4ef349e90 Mon Sep 17 00:00:00 2001
+From: Lubomir Rintel <lkundrak@v3.sk>
+Date: Mon, 17 Jun 2019 10:07:38 +0200
+Subject: [PATCH] network-manager: remove useless use of basename
+
+(cherry picked from commit 5e0f8c8a4ced36268d0077acafa1db2402776fa6)
+---
+ modules.d/35network-manager/nm-run.sh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/modules.d/35network-manager/nm-run.sh b/modules.d/35network-manager/nm-run.sh
+index 0f943631..5f4b38ca 100755
+--- a/modules.d/35network-manager/nm-run.sh
++++ b/modules.d/35network-manager/nm-run.sh
+@@ -10,7 +10,7 @@ for _i in /sys/class/net/*/
+ do
+     state=/run/NetworkManager/devices/$(cat $_i/ifindex)
+     grep -q connection-uuid= $state 2>/dev/null || continue
+-    ifname=$(basename $_i)
++    ifname=${_i##*/}
+     sed -n 's/root-path/new_root_path/p' <$state >/tmp/dhclient.$ifname.dhcpopts
+     source_hook initqueue/online $ifname
+     /sbin/netroot $ifname
+
diff --git a/SOURCES/0040.patch b/SOURCES/0040.patch
new file mode 100644
index 0000000..e2fa551
--- /dev/null
+++ b/SOURCES/0040.patch
@@ -0,0 +1,24 @@
+From 94c75a2a827ff09ffac18454d5c4ba4756d721d6 Mon Sep 17 00:00:00 2001
+From: Lubomir Rintel <lkundrak@v3.sk>
+Date: Mon, 27 May 2019 12:44:17 +0200
+Subject: [PATCH] network-manager: also read out next-server from NM state
+
+(cherry picked from commit 4be95b67a73e7434f92a7d7c40955eae0b59717e)
+---
+ modules.d/35network-manager/nm-run.sh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/modules.d/35network-manager/nm-run.sh b/modules.d/35network-manager/nm-run.sh
+index 5f4b38ca..a539d5b2 100755
+--- a/modules.d/35network-manager/nm-run.sh
++++ b/modules.d/35network-manager/nm-run.sh
+@@ -11,7 +11,7 @@ do
+     state=/run/NetworkManager/devices/$(cat $_i/ifindex)
+     grep -q connection-uuid= $state 2>/dev/null || continue
+     ifname=${_i##*/}
+-    sed -n 's/root-path/new_root_path/p' <$state >/tmp/dhclient.$ifname.dhcpopts
++    sed -n 's/root-path/new_root_path/p;s/next-server/new_next_server/p' <$state >/tmp/dhclient.$ifname.dhcpopts
+     source_hook initqueue/online $ifname
+     /sbin/netroot $ifname
+ done
+
diff --git a/SOURCES/0041.patch b/SOURCES/0041.patch
new file mode 100644
index 0000000..52083c3
--- /dev/null
+++ b/SOURCES/0041.patch
@@ -0,0 +1,30 @@
+From 68fefe6f9424d3f29e6da9133579c385e7b470b2 Mon Sep 17 00:00:00 2001
+From: Lubomir Rintel <lkundrak@v3.sk>
+Date: Mon, 27 May 2019 12:43:59 +0200
+Subject: [PATCH] network-manager: generate configuration with netroot=
+
+If the root is on network, let nm-initrd-generator create configuration
+even if none was explicitly specified on the command line.
+
+Also do the same if /tmp/net.ifaces exists, because the anaconda plugin
+creates an empty file in that location in hopes that will make us
+configure the network.
+
+(cherry picked from commit 381ab6b7cd2d35bf7f9da63b10c20f5ef6e61a8b)
+---
+ modules.d/35network-manager/nm-config.sh | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/modules.d/35network-manager/nm-config.sh b/modules.d/35network-manager/nm-config.sh
+index 1339ebe7..1efa737c 100755
+--- a/modules.d/35network-manager/nm-config.sh
++++ b/modules.d/35network-manager/nm-config.sh
+@@ -1,3 +1,7 @@
+ #!/bin/sh
+ 
++if [ -n "$netroot" ] || [ -e /tmp/net.ifaces ]; then
++    echo rd.neednet >> /etc/cmdline.d/35-neednet.conf
++fi
++
+ /usr/libexec/nm-initrd-generator -- $(getcmdline)
+
diff --git a/SOURCES/0042.patch b/SOURCES/0042.patch
new file mode 100644
index 0000000..3bf3074
--- /dev/null
+++ b/SOURCES/0042.patch
@@ -0,0 +1,43 @@
+From 53cece208a44c53ecc001cb8eb769f6fb9b3d1dc Mon Sep 17 00:00:00 2001
+From: Lubomir Rintel <lkundrak@v3.sk>
+Date: Mon, 27 May 2019 11:12:22 +0200
+Subject: [PATCH] network: parse root=dhcp also with network-manager module
+
+Move the logic from network-legacy to common network code.
+
+(cherry picked from commit 35efada5ecffd139660b4a89f4cc3d627752c91e)
+---
+ modules.d/35network-legacy/module-setup.sh             | 1 -
+ modules.d/{35network-legacy => 40network}/dhcp-root.sh | 0
+ modules.d/40network/module-setup.sh                    | 1 +
+ 3 files changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/modules.d/35network-legacy/module-setup.sh b/modules.d/35network-legacy/module-setup.sh
+index 71abda36..5a82e998 100755
+--- a/modules.d/35network-legacy/module-setup.sh
++++ b/modules.d/35network-legacy/module-setup.sh
+@@ -36,7 +36,6 @@ install() {
+     inst_simple -H "/etc/dhclient.conf"
+     cat "$moddir/dhclient.conf" >> "${initdir}/etc/dhclient.conf"
+     inst_hook pre-udev 60 "$moddir/net-genrules.sh"
+-    inst_hook cmdline 91 "$moddir/dhcp-root.sh"
+     inst_hook cmdline 92 "$moddir/parse-ibft.sh"
+     inst_hook cmdline 95 "$moddir/parse-vlan.sh"
+     inst_hook cmdline 96 "$moddir/parse-bond.sh"
+diff --git a/modules.d/35network-legacy/dhcp-root.sh b/modules.d/40network/dhcp-root.sh
+similarity index 100%
+rename from modules.d/35network-legacy/dhcp-root.sh
+rename to modules.d/40network/dhcp-root.sh
+diff --git a/modules.d/40network/module-setup.sh b/modules.d/40network/module-setup.sh
+index e8541636..8e2a74a3 100755
+--- a/modules.d/40network/module-setup.sh
++++ b/modules.d/40network/module-setup.sh
+@@ -28,6 +28,7 @@ install() {
+     inst_script "$moddir/netroot.sh" "/sbin/netroot"
+     inst_simple "$moddir/net-lib.sh" "/lib/net-lib.sh"
+     inst_hook pre-udev 50 "$moddir/ifname-genrules.sh"
++    inst_hook cmdline 91 "$moddir/dhcp-root.sh"
+ 
+     dracut_need_initqueue
+ }
+
diff --git a/SOURCES/0043.patch b/SOURCES/0043.patch
new file mode 100644
index 0000000..b59dc53
--- /dev/null
+++ b/SOURCES/0043.patch
@@ -0,0 +1,620 @@
+From 4e10601254bb20891dc2919416d7151583678c3d Mon Sep 17 00:00:00 2001
+From: Lubomir Rintel <lkundrak@v3.sk>
+Date: Mon, 10 Jun 2019 16:04:18 +0200
+Subject: [PATCH] test: copy BONDBRIDGETEAMVLAN to IFCFG
+
+The IFCFG test will make sure the network-legacy plugin keeps writing
+out correct ifcfg files.
+
+This is a separate commit so that actual changes are visible in the
+following one.
+
+(cherry picked from commit 70787ab61957741a05e4046bad49758c4e9bc1cc)
+---
+ test/TEST-60-IFCFG/99-idesymlinks.rules |   8 +
+ test/TEST-60-IFCFG/Makefile             |  10 +
+ test/TEST-60-IFCFG/client-init.sh       |  22 +++
+ test/TEST-60-IFCFG/dhcpd.conf           |  27 +++
+ test/TEST-60-IFCFG/exports              |   1 +
+ test/TEST-60-IFCFG/finished-false.sh    |   2 +
+ test/TEST-60-IFCFG/hard-off.sh          |   3 +
+ test/TEST-60-IFCFG/hosts                |   5 +
+ test/TEST-60-IFCFG/server-init.sh       | 120 ++++++++++++
+ test/TEST-60-IFCFG/test.sh              | 336 ++++++++++++++++++++++++++++++++
+ 10 files changed, 534 insertions(+)
+
+diff --git a/test/TEST-60-IFCFG/99-idesymlinks.rules b/test/TEST-60-IFCFG/99-idesymlinks.rules
+new file mode 100644
+index 00000000..d557790a
+--- /dev/null
++++ b/test/TEST-60-IFCFG/99-idesymlinks.rules
+@@ -0,0 +1,8 @@
++ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hda", SYMLINK+="sda"
++ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hda*", SYMLINK+="sda$env{MINOR}"
++ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdb", SYMLINK+="sdb"
++ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdb*", SYMLINK+="sdb$env{MINOR}"
++ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdc", SYMLINK+="sdc"
++ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdc*", SYMLINK+="sdc$env{MINOR}"
++ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdd", SYMLINK+="sdd"
++ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdd*", SYMLINK+="sdd$env{MINOR}"
+diff --git a/test/TEST-60-IFCFG/Makefile b/test/TEST-60-IFCFG/Makefile
+new file mode 100644
+index 00000000..aad27059
+--- /dev/null
++++ b/test/TEST-60-IFCFG/Makefile
+@@ -0,0 +1,10 @@
++all:
++	@$(MAKE) -s --no-print-directory -C ../.. all
++	@V=$(V) basedir=../.. testdir=../ ./test.sh --all
++setup:
++	@$(MAKE) --no-print-directory -C ../.. all
++	@basedir=../.. testdir=../ ./test.sh --setup
++clean:
++	@basedir=../.. testdir=../ ./test.sh --clean
++run:
++	@basedir=../.. testdir=../ ./test.sh --run
+diff --git a/test/TEST-60-IFCFG/client-init.sh b/test/TEST-60-IFCFG/client-init.sh
+new file mode 100755
+index 00000000..8c33ff0f
+--- /dev/null
++++ b/test/TEST-60-IFCFG/client-init.sh
+@@ -0,0 +1,22 @@
++#!/bin/sh
++exec >/dev/console 2>&1
++export PATH=/sbin:/bin:/usr/sbin:/usr/bin
++strstr() { [ "${1#*$2*}" != "$1" ]; }
++CMDLINE=$(while read line; do echo $line;done < /proc/cmdline)
++export TERM=linux
++export PS1='initramfs-test:\w\$ '
++stty sane
++echo "made it to the rootfs! Powering down."
++
++(
++    echo OK
++    ip -o -4 address show scope global | while read n if rest; do echo $if;done | sort
++    for i in /run/initramfs/state/etc/sysconfig/network-scripts/ifcfg-*; do
++	echo $i
++	grep -v 'UUID=' $i
++    done
++    echo EOF
++) > /dev/sda
++
++strstr "$CMDLINE" "rd.shell" && sh -i
++poweroff -f
+diff --git a/test/TEST-60-IFCFG/dhcpd.conf b/test/TEST-60-IFCFG/dhcpd.conf
+new file mode 100644
+index 00000000..e26bd60b
+--- /dev/null
++++ b/test/TEST-60-IFCFG/dhcpd.conf
+@@ -0,0 +1,27 @@
++ddns-update-style none;
++
++use-host-decl-names true;
++
++subnet 192.168.50.0 netmask 255.255.255.0 {
++	option subnet-mask      255.255.255.0;
++	option routers          192.168.50.1;
++	next-server             192.168.50.1;
++	server-identifier       192.168.50.1;
++	option domain-name-servers 192.168.50.1;
++	option domain-search "example.com";
++	option domain-name "other.com";
++	option root-path "nfs:192.168.50.1:/nfs/client";
++	range 192.168.50.10 192.168.50.100;
++}
++
++subnet 192.168.51.0 netmask 255.255.255.0 {
++	option subnet-mask      255.255.255.0;
++	option routers          192.168.51.1;
++	next-server             192.168.51.1;
++	server-identifier       192.168.51.1;
++	option domain-name-servers 192.168.51.1;
++	option domain-search "example.com";
++	option domain-name "other.com";
++	option root-path "nfs:192.168.51.1:/nfs/client";
++	range 192.168.51.10 192.168.51.100;
++}
+diff --git a/test/TEST-60-IFCFG/exports b/test/TEST-60-IFCFG/exports
+new file mode 100644
+index 00000000..ff5f29b1
+--- /dev/null
++++ b/test/TEST-60-IFCFG/exports
+@@ -0,0 +1 @@
++/nfs/client	192.168.50.0/24(rw,insecure,no_subtree_check,no_root_squash)
+diff --git a/test/TEST-60-IFCFG/finished-false.sh b/test/TEST-60-IFCFG/finished-false.sh
+new file mode 100755
+index 00000000..ecdbef95
+--- /dev/null
++++ b/test/TEST-60-IFCFG/finished-false.sh
+@@ -0,0 +1,2 @@
++#!/bin/sh
++exit 1
+diff --git a/test/TEST-60-IFCFG/hard-off.sh b/test/TEST-60-IFCFG/hard-off.sh
+new file mode 100755
+index 00000000..12c3d5ac
+--- /dev/null
++++ b/test/TEST-60-IFCFG/hard-off.sh
+@@ -0,0 +1,3 @@
++#!/bin/sh
++getarg rd.shell || poweroff -f
++getarg failme && poweroff -f
+diff --git a/test/TEST-60-IFCFG/hosts b/test/TEST-60-IFCFG/hosts
+new file mode 100644
+index 00000000..d02a4e9b
+--- /dev/null
++++ b/test/TEST-60-IFCFG/hosts
+@@ -0,0 +1,5 @@
++127.0.0.1	localhost
++192.168.50.1	server
++192.168.50.100	client-if1
++192.168.50.101	client-if2
++192.168.50.102	client-if3
+diff --git a/test/TEST-60-IFCFG/server-init.sh b/test/TEST-60-IFCFG/server-init.sh
+new file mode 100755
+index 00000000..b9f01c9b
+--- /dev/null
++++ b/test/TEST-60-IFCFG/server-init.sh
+@@ -0,0 +1,120 @@
++#!/bin/sh
++exec </dev/console >/dev/console 2>&1
++set -x
++export PATH=/sbin:/bin:/usr/sbin:/usr/bin
++export TERM=linux
++export PS1='nfstest-server:\w\$ '
++stty sane
++echo "made it to the rootfs!"
++echo server > /proc/sys/kernel/hostname
++
++wait_for_if_link() {
++    local cnt=0
++    local li
++    while [ $cnt -lt 600 ]; do
++        li=$(ip -o link show dev $1 2>/dev/null)
++        [ -n "$li" ] && return 0
++        sleep 0.1
++        cnt=$(($cnt+1))
++    done
++    return 1
++}
++
++wait_for_if_up() {
++    local cnt=0
++    local li
++    while [ $cnt -lt 200 ]; do
++        li=$(ip -o link show up dev $1)
++        [ -n "$li" ] && return 0
++        sleep 0.1
++        cnt=$(($cnt+1))
++    done
++    return 1
++}
++
++wait_for_route_ok() {
++    local cnt=0
++    while [ $cnt -lt 200 ]; do
++        li=$(ip route show)
++        [ -n "$li" ] && [ -z "${li##*$1*}" ] && return 0
++        sleep 0.1
++        cnt=$(($cnt+1))
++    done
++    return 1
++}
++
++linkup() {
++    wait_for_if_link $1 2>/dev/null\
++     && ip link set $1 up 2>/dev/null\
++     && wait_for_if_up $1 2>/dev/null
++}
++
++modprobe --all -b -q 8021q ipvlan macvlan
++>/dev/watchdog
++ip addr add 127.0.0.1/8 dev lo
++linkup lo
++ip link set dev eth0 name ens3
++ip addr add 192.168.50.1/24 dev ens3
++linkup ens3
++>/dev/watchdog
++ip link set dev eth1 name ens4
++ip link add dev ens4.1 link ens4 type vlan id 1
++ip link add dev ens4.2 link ens4 type vlan id 2
++ip link add dev ens4.3 link ens4 type vlan id 3
++ip link add dev ens4.4 link ens4 type vlan id 4
++ip addr add 192.168.54.1/24 dev ens4.1
++ip addr add 192.168.55.1/24 dev ens4.2
++ip addr add 192.168.56.1/24 dev ens4.3
++ip addr add 192.168.57.1/24 dev ens4.4
++linkup ens4
++ip link set dev ens4.1 up
++ip link set dev ens4.2 up
++ip link set dev ens4.3 up
++ip link set dev ens4.4 up
++ip link set dev eth2 name ens5
++ip addr add 192.168.51.1/24 dev ens5
++linkup ens5
++ip link set dev eth3 name ens6
++linkup ens6
++>/dev/watchdog
++modprobe af_packet
++> /dev/watchdog
++modprobe sunrpc
++>/dev/watchdog
++mount -t rpc_pipefs sunrpc /var/lib/nfs/rpc_pipefs
++>/dev/watchdog
++[ -x /sbin/portmap ] && portmap
++>/dev/watchdog
++mkdir -p /run/rpcbind
++[ -x /sbin/rpcbind ] && rpcbind
++>/dev/watchdog
++modprobe nfsd
++>/dev/watchdog
++mount -t nfsd nfsd /proc/fs/nfsd
++>/dev/watchdog
++exportfs -r
++>/dev/watchdog
++rpc.nfsd
++>/dev/watchdog
++rpc.mountd
++>/dev/watchdog
++rpc.idmapd
++>/dev/watchdog
++exportfs -r
++>/dev/watchdog
++>/var/lib/dhcpd/dhcpd.leases
++>/dev/watchdog
++chmod 777 /var/lib/dhcpd/dhcpd.leases
++>/dev/watchdog
++dhcpd -cf /etc/dhcpd.conf -lf /var/lib/dhcpd/dhcpd.leases ens3 ens5
++#echo -n 'V' > /dev/watchdog
++#sh -i
++#tcpdump -i ens3
++# Wait forever for the VM to die
++echo "Serving NFS mounts"
++while :; do
++	sleep 10
++	>/dev/watchdog
++done
++mount -n -o remount,ro /
++poweroff -f
+diff --git a/test/TEST-60-IFCFG/test.sh b/test/TEST-60-IFCFG/test.sh
+new file mode 100755
+index 00000000..8c11a7d3
+--- /dev/null
++++ b/test/TEST-60-IFCFG/test.sh
+@@ -0,0 +1,336 @@
++#!/bin/bash
++# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
++# ex: ts=8 sw=4 sts=4 et filetype=sh
++TEST_DESCRIPTION="root filesystem on NFS with bridging/bonding/vlan"
++KVERSION=${KVERSION-$(uname -r)}
++
++# Uncomment this to debug failures
++#DEBUGFAIL="rd.shell rd.break"
++#DEBUGFAIL="rd.shell rd.break rd.debug"
++#SERIAL="tcp:127.0.0.1:9999"
++
++run_server() {
++    # Start server first
++    echo "MULTINIC TEST SETUP: Starting DHCP/NFS server"
++
++    fsck -a "$TESTDIR"/server.ext3 || return 1
++
++    $testdir/run-qemu \
++        -hda "$TESTDIR"/server.ext3 \
++        -m 512M -smp 2 \
++        -display none \
++        -netdev socket,id=n0,listen=127.0.0.1:12370 \
++        -netdev socket,id=n1,listen=127.0.0.1:12371 \
++        -netdev socket,id=n2,listen=127.0.0.1:12372 \
++        -netdev socket,id=n3,listen=127.0.0.1:12373 \
++        -device e1000,netdev=n0,mac=52:54:01:12:34:56 \
++        -device e1000,netdev=n1,mac=52:54:01:12:34:57 \
++        -device e1000,netdev=n2,mac=52:54:01:12:34:58 \
++        -device e1000,netdev=n3,mac=52:54:01:12:34:59 \
++        ${SERIAL:+-serial "$SERIAL"} \
++        ${SERIAL:--serial file:"$TESTDIR"/server.log} \
++        -watchdog i6300esb -watchdog-action poweroff \
++        -no-reboot \
++        -append "panic=1 loglevel=7 root=/dev/sda rootfstype=ext3 rw console=ttyS0,115200n81 selinux=0 rd.debug" \
++        -initrd "$TESTDIR"/initramfs.server \
++        -pidfile "$TESTDIR"/server.pid -daemonize || return 1
++    chmod 644 -- "$TESTDIR"/server.pid || return 1
++
++    # Cleanup the terminal if we have one
++    tty -s && stty sane
++
++    echo Sleeping 10 seconds to give the server a head start
++    sleep 10
++}
++
++client_test() {
++    local test_name="$1"
++    local do_vlan13="$2"
++    local cmdline="$3"
++    local check="$4"
++    local CONF
++
++    echo "CLIENT TEST START: $test_name"
++
++    [ "$do_vlan13" != "yes" ] && unset do_vlan13
++
++    # Need this so kvm-qemu will boot (needs non-/dev/zero local disk)
++    if ! dd if=/dev/zero of="$TESTDIR"/client.img bs=1M count=1; then
++        echo "Unable to make client sda image" 1>&2
++        return 1
++    fi
++    if [[ $do_vlan13 ]]; then
++        nic1=" -netdev socket,connect=127.0.0.1:12371,id=n1"
++        nic3=" -netdev socket,connect=127.0.0.1:12373,id=n3"
++    else
++        nic1=" -netdev hubport,id=n1,hubid=2"
++        nic3=" -netdev hubport,id=n3,hubid=3"
++    fi
++
++    if $testdir/run-qemu --help | grep -qF -m1 'netdev hubport,id=str,hubid=n[,netdev=nd]' && echo OK; then
++        $testdir/run-qemu \
++            -hda "$TESTDIR"/client.img -m 512M -smp 2 -nographic \
++            -netdev socket,connect=127.0.0.1:12370,id=s1 \
++            -netdev hubport,hubid=1,id=h1,netdev=s1 \
++            -netdev hubport,hubid=1,id=h2 -device e1000,mac=52:54:00:12:34:01,netdev=h2 \
++            -netdev hubport,hubid=1,id=h3 -device e1000,mac=52:54:00:12:34:02,netdev=h3 \
++            $nic1 -device e1000,mac=52:54:00:12:34:03,netdev=n1  \
++            -netdev socket,connect=127.0.0.1:12372,id=n2 -device e1000,mac=52:54:00:12:34:04,netdev=n2 \
++            $nic3 -device e1000,mac=52:54:00:12:34:05,netdev=n3 \
++            -watchdog i6300esb -watchdog-action poweroff \
++            -no-reboot \
++            -append "panic=1 $cmdline rd.debug $DEBUGFAIL rd.retry=5 rw console=ttyS0,115200n81 selinux=0 init=/sbin/init" \
++            -initrd "$TESTDIR"/initramfs.testing
++    else
++        $testdir/run-qemu \
++            -hda "$TESTDIR"/client.img -m 512M -smp 2 -nographic \
++            -net socket,vlan=0,connect=127.0.0.1:12370 \
++            ${do_vlan13:+-net socket,vlan=1,connect=127.0.0.1:12371} \
++            -net socket,vlan=2,connect=127.0.0.1:12372 \
++            ${do_vlan13:+-net socket,vlan=3,connect=127.0.0.1:12373} \
++            -net nic,vlan=0,macaddr=52:54:00:12:34:01,model=e1000 \
++            -net nic,vlan=0,macaddr=52:54:00:12:34:02,model=e1000 \
++            -net nic,vlan=1,macaddr=52:54:00:12:34:03,model=e1000 \
++            -net nic,vlan=2,macaddr=52:54:00:12:34:04,model=e1000 \
++            -net nic,vlan=3,macaddr=52:54:00:12:34:05,model=e1000 \
++            -watchdog i6300esb -watchdog-action poweroff \
++            -no-reboot \
++            -append "panic=1 $cmdline rd.debug $DEBUGFAIL rd.retry=5 rw console=ttyS0,115200n81 selinux=0 init=/sbin/init" \
++            -initrd "$TESTDIR"/initramfs.testing
++    fi
++
++    { 
++        read OK
++        if [[ "$OK" != "OK" ]]; then
++            echo "CLIENT TEST END: $test_name [FAILED - BAD EXIT]"
++            return 1
++        fi
++
++        while read line; do
++            [[ $line == END ]] && break
++            CONF+="$line "
++        done
++    } < "$TESTDIR"/client.img || return 1
++
++    if [[ "$check" != "$CONF" ]]; then
++        echo "Expected: '$check'"
++        echo
++        echo
++        echo "Got:      '$CONF'"
++        echo "CLIENT TEST END: $test_name [FAILED - BAD CONF]"
++        return 1
++    fi
++
++    echo "CLIENT TEST END: $test_name [OK]"
++    return 0
++}
++
++
++test_run() {
++    if ! run_server; then
++        echo "Failed to start server" 1>&2
++        return 1
++    fi
++    test_client || { kill_server; return 1; }
++}
++
++test_client() {
++    client_test "Multiple VLAN" \
++        "yes" \
++        "
++vlan=vlan0001:ens5
++vlan=vlan2:ens5
++vlan=ens5.3:ens5
++vlan=ens5.0004:ens5
++ip=ens3:dhcp
++ip=192.168.54.101::192.168.54.1:24:test:vlan0001:none
++ip=192.168.55.102::192.168.55.1:24:test:vlan2:none
++ip=192.168.56.103::192.168.56.1:24:test:ens5.3:none
++ip=192.168.57.104::192.168.57.1:24:test:ens5.0004:none
++rd.neednet=1
++root=nfs:192.168.50.1:/nfs/client bootdev=ens3
++" \
++    'ens3 ens5.0004 ens5.3 vlan0001 vlan2 /run/initramfs/state/etc/sysconfig/network-scripts/ifcfg-ens3 # Generated by dracut initrd NAME="ens3" DEVICE="ens3" ONBOOT=yes NETBOOT=yes IPV6INIT=yes BOOTPROTO=dhcp TYPE=Ethernet /run/initramfs/state/etc/sysconfig/network-scripts/ifcfg-ens5.0004 # Generated by dracut initrd NAME="ens5.0004" ONBOOT=yes NETBOOT=yes BOOTPROTO=none IPADDR="192.168.57.104" PREFIX="24" GATEWAY="192.168.57.1" TYPE=Vlan DEVICE="ens5.0004" VLAN=yes PHYSDEV="ens5" /run/initramfs/state/etc/sysconfig/network-scripts/ifcfg-ens5.3 # Generated by dracut initrd NAME="ens5.3" ONBOOT=yes NETBOOT=yes BOOTPROTO=none IPADDR="192.168.56.103" PREFIX="24" GATEWAY="192.168.56.1" TYPE=Vlan DEVICE="ens5.3" VLAN=yes PHYSDEV="ens5" /run/initramfs/state/etc/sysconfig/network-scripts/ifcfg-vlan0001 # Generated by dracut initrd NAME="vlan0001" ONBOOT=yes NETBOOT=yes BOOTPROTO=none IPADDR="192.168.54.101" PREFIX="24" GATEWAY="192.168.54.1" TYPE=Vlan DEVICE="vlan0001" VLAN=yes PHYSDEV="ens5" /run/initramfs/state/etc/sysconfig/network-scripts/ifcfg-vlan2 # Generated by dracut initrd NAME="vlan2" ONBOOT=yes NETBOOT=yes BOOTPROTO=none IPADDR="192.168.55.102" PREFIX="24" GATEWAY="192.168.55.1" TYPE=Vlan DEVICE="vlan2" VLAN=yes PHYSDEV="ens5" EOF ' \
++    || return 1
++
++    client_test "Multiple Bonds" \
++        "yes" \
++        "
++bond=bond0:ens4,ens5
++bond=bond1:ens6,ens7
++ip=bond0:dhcp
++ip=bond1:dhcp
++rd.neednet=1
++root=nfs:192.168.50.1:/nfs/client bootdev=bond0
++" \
++    'bond0 bond1 /run/initramfs/state/etc/sysconfig/network-scripts/ifcfg-bond0 # Generated by dracut initrd NAME="bond0" DEVICE="bond0" ONBOOT=yes NETBOOT=yes IPV6INIT=yes BOOTPROTO=dhcp BONDING_OPTS="" NAME="bond0" TYPE=Bond /run/initramfs/state/etc/sysconfig/network-scripts/ifcfg-bond1 # Generated by dracut initrd NAME="bond1" DEVICE="bond1" ONBOOT=yes NETBOOT=yes IPV6INIT=yes BOOTPROTO=dhcp BONDING_OPTS="" NAME="bond1" TYPE=Bond /run/initramfs/state/etc/sysconfig/network-scripts/ifcfg-ens4 # Generated by dracut initrd NAME="ens4" TYPE=Ethernet ONBOOT=yes NETBOOT=yes SLAVE=yes MASTER="bond0" DEVICE="ens4" /run/initramfs/state/etc/sysconfig/network-scripts/ifcfg-ens5 # Generated by dracut initrd NAME="ens5" TYPE=Ethernet ONBOOT=yes NETBOOT=yes SLAVE=yes MASTER="bond0" DEVICE="ens5" /run/initramfs/state/etc/sysconfig/network-scripts/ifcfg-ens6 # Generated by dracut initrd NAME="ens6" TYPE=Ethernet ONBOOT=yes NETBOOT=yes SLAVE=yes MASTER="bond1" DEVICE="ens6" /run/initramfs/state/etc/sysconfig/network-scripts/ifcfg-ens7 # Generated by dracut initrd NAME="ens7" TYPE=Ethernet ONBOOT=yes NETBOOT=yes SLAVE=yes MASTER="bond1" DEVICE="ens7" EOF ' \
++    || return 1
++
++    client_test "Multiple Bridges" \
++        "no" \
++        "
++bridge=br0:ens4,ens5
++bridge=br1:ens6,ens7
++ip=br0:dhcp
++ip=br1:dhcp
++rd.neednet=1
++root=nfs:192.168.50.1:/nfs/client bootdev=br0
++" \
++    'br0 br1 /run/initramfs/state/etc/sysconfig/network-scripts/ifcfg-br0 # Generated by dracut initrd NAME="br0" DEVICE="br0" ONBOOT=yes NETBOOT=yes IPV6INIT=yes BOOTPROTO=dhcp TYPE=Bridge NAME="br0" /run/initramfs/state/etc/sysconfig/network-scripts/ifcfg-br1 # Generated by dracut initrd NAME="br1" DEVICE="br1" ONBOOT=yes NETBOOT=yes IPV6INIT=yes BOOTPROTO=dhcp TYPE=Bridge NAME="br1" /run/initramfs/state/etc/sysconfig/network-scripts/ifcfg-ens4 # Generated by dracut initrd NAME="ens4" TYPE=Ethernet ONBOOT=yes NETBOOT=yes BRIDGE="br0" DEVICE="ens4" /run/initramfs/state/etc/sysconfig/network-scripts/ifcfg-ens5 # Generated by dracut initrd NAME="ens5" TYPE=Ethernet ONBOOT=yes NETBOOT=yes BRIDGE="br0" DEVICE="ens5" /run/initramfs/state/etc/sysconfig/network-scripts/ifcfg-ens6 # Generated by dracut initrd NAME="ens6" TYPE=Ethernet ONBOOT=yes NETBOOT=yes BRIDGE="br1" DEVICE="ens6" /run/initramfs/state/etc/sysconfig/network-scripts/ifcfg-ens7 # Generated by dracut initrd NAME="ens7" TYPE=Ethernet ONBOOT=yes NETBOOT=yes BRIDGE="br1" DEVICE="ens7" EOF ' \
++    || return 1
++
++    kill_server
++    return 0
++}
++
++test_setup() {
++     # Make server root
++    dd if=/dev/null of="$TESTDIR"/server.ext3 bs=1M seek=120
++    mke2fs -j -F -- "$TESTDIR"/server.ext3
++    mkdir -- "$TESTDIR"/mnt
++    mount -o loop -- "$TESTDIR"/server.ext3 "$TESTDIR"/mnt
++    kernel=$KVERSION
++    (
++        export initdir="$TESTDIR"/mnt
++        . "$basedir"/dracut-init.sh
++
++        (
++            cd "$initdir";
++            mkdir -p -- dev sys proc run etc var/run tmp var/lib/{dhcpd,rpcbind}
++            mkdir -p -- var/lib/nfs/{v4recovery,rpc_pipefs}
++            chmod 777 -- var/lib/rpcbind var/lib/nfs
++        )
++
++        for _f in modules.builtin.bin modules.builtin; do
++            [[ $srcmods/$_f ]] && break
++        done || {
++            dfatal "No modules.builtin.bin and modules.builtin found!"
++            return 1
++        }
++
++        for _f in modules.builtin.bin modules.builtin modules.order; do
++            [[ $srcmods/$_f ]] && inst_simple "$srcmods/$_f" "/lib/modules/$kernel/$_f"
++        done
++
++        inst_multiple sh ls shutdown poweroff stty cat ps ln ip \
++            dmesg mkdir cp ping exportfs \
++            modprobe rpc.nfsd rpc.mountd showmount tcpdump \
++            /etc/services sleep mount chmod
++        for _terminfodir in /lib/terminfo /etc/terminfo /usr/share/terminfo; do
++            [ -f "${_terminfodir}"/l/linux ] && break
++        done
++        inst_multiple -o "${_terminfodir}"/l/linux
++        type -P portmap >/dev/null && inst_multiple portmap
++        type -P rpcbind >/dev/null && inst_multiple rpcbind
++        [ -f /etc/netconfig ] && inst_multiple /etc/netconfig
++        type -P dhcpd >/dev/null && inst_multiple dhcpd
++        [ -x /usr/sbin/dhcpd3 ] && inst /usr/sbin/dhcpd3 /usr/sbin/dhcpd
++        instmods nfsd sunrpc ipv6 lockd af_packet 8021q ipvlan macvlan
++        inst_simple /etc/os-release
++        inst ./server-init.sh /sbin/init
++        inst ./hosts /etc/hosts
++        inst ./exports /etc/exports
++        inst ./dhcpd.conf /etc/dhcpd.conf
++        inst_multiple /etc/nsswitch.conf /etc/rpc /etc/protocols
++
++        inst_multiple rpc.idmapd /etc/idmapd.conf
++
++        inst_libdir_file 'libnfsidmap_nsswitch.so*'
++        inst_libdir_file 'libnfsidmap/*.so*'
++        inst_libdir_file 'libnfsidmap*.so*'
++
++        _nsslibs=$(sed -e '/^#/d' -e 's/^.*://' -e 's/\[NOTFOUND=return\]//' /etc/nsswitch.conf \
++            |  tr -s '[:space:]' '\n' | sort -u | tr -s '[:space:]' '|')
++        _nsslibs=${_nsslibs#|}
++        _nsslibs=${_nsslibs%|}
++
++        inst_libdir_file -n "$_nsslibs" 'libnss_*.so*'
++
++        inst /etc/nsswitch.conf /etc/nsswitch.conf
++        inst /etc/passwd /etc/passwd
++        inst /etc/group /etc/group
++
++        cp -a -- /etc/ld.so.conf* "$initdir"/etc
++        ldconfig -r "$initdir"
++        dracut_kernel_post
++    )
++
++    # Make client root inside server root
++    (
++        export initdir="$TESTDIR"/mnt/nfs/client
++        . "$basedir"/dracut-init.sh
++        inst_multiple sh shutdown poweroff stty cat ps ln ip \
++            mount dmesg mkdir cp ping grep ls sort
++        for _terminfodir in /lib/terminfo /etc/terminfo /usr/share/terminfo; do
++            [[ -f ${_terminfodir}/l/linux ]] && break
++        done
++        inst_multiple -o "${_terminfodir}"/l/linux
++        inst_simple /etc/os-release
++        inst ./client-init.sh /sbin/init
++        (
++            cd "$initdir"
++            mkdir -p -- dev sys proc etc run
++            mkdir -p -- var/lib/nfs/rpc_pipefs
++        )
++        inst /etc/nsswitch.conf /etc/nsswitch.conf
++        inst /etc/passwd /etc/passwd
++        inst /etc/group /etc/group
++
++        inst_multiple rpc.idmapd /etc/idmapd.conf
++        inst_libdir_file 'libnfsidmap_nsswitch.so*'
++        inst_libdir_file 'libnfsidmap/*.so*'
++        inst_libdir_file 'libnfsidmap*.so*'
++
++        _nsslibs=$(sed -e '/^#/d' -e 's/^.*://' -e 's/\[NOTFOUND=return\]//' -- /etc/nsswitch.conf \
++            |  tr -s '[:space:]' '\n' | sort -u | tr -s '[:space:]' '|')
++        _nsslibs=${_nsslibs#|}
++        _nsslibs=${_nsslibs%|}
++
++        inst_libdir_file -n "$_nsslibs" 'libnss_*.so*'
++
++        cp -a -- /etc/ld.so.conf* "$initdir"/etc
++        ldconfig -r "$initdir"
++    )
++
++    umount "$TESTDIR"/mnt
++    rm -fr -- "$TESTDIR"/mnt
++
++    # Make an overlay with needed tools for the test harness
++    (
++        export initdir="$TESTDIR"/overlay
++        . "$basedir"/dracut-init.sh
++        inst_multiple poweroff shutdown
++        inst_hook emergency 000 ./hard-off.sh
++        inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules
++    )
++
++    # Make server's dracut image
++    $basedir/dracut.sh -l -i "$TESTDIR"/overlay / \
++        --no-early-microcode \
++        -m "udev-rules base rootfs-block fs-lib debug kernel-modules watchdog" \
++        -d "ipvlan macvlan af_packet piix ide-gd_mod ata_piix ext3 sd_mod nfsv2 nfsv3 nfsv4 nfs_acl nfs_layout_nfsv41_files nfsd e1000 i6300esb ib700wdt" \
++        --no-hostonly-cmdline -N \
++        -f "$TESTDIR"/initramfs.server "$KVERSION" || return 1
++
++    # Make client's dracut image
++    $basedir/dracut.sh -l -i "$TESTDIR"/overlay / \
++        --no-early-microcode \
++        -o "plymouth" \
++        -a "debug" \
++        -d "ipvlan macvlan af_packet piix sd_mod sr_mod ata_piix ide-gd_mod e1000 nfsv2 nfsv3 nfsv4 nfs_acl nfs_layout_nfsv41_files sunrpc i6300esb ib700wdt" \
++        --no-hostonly-cmdline -N \
++        -f "$TESTDIR"/initramfs.testing "$KVERSION" || return 1
++}
++
++kill_server() {
++    if [[ -s "$TESTDIR"/server.pid ]]; then
++        kill -TERM -- $(cat "$TESTDIR"/server.pid)
++        rm -f -- "$TESTDIR"/server.pid
++    fi
++}
++
++test_cleanup() {
++    kill_server
++}
++
++. "$testdir"/test-functions
+
diff --git a/SOURCES/0044.patch b/SOURCES/0044.patch
new file mode 100644
index 0000000..b2c4f7f
--- /dev/null
+++ b/SOURCES/0044.patch
@@ -0,0 +1,53 @@
+From 3b89c398895abe5fc62e3c9240718310222925ef Mon Sep 17 00:00:00 2001
+From: Lubomir Rintel <lkundrak@v3.sk>
+Date: Mon, 10 Jun 2019 16:04:33 +0200
+Subject: [PATCH] test/IFCFG: make sure the network-legacy plugin is being used
+
+If the network-manager plugin is used instead, it wouldn't write out
+ifcfg files and we wouldn't have anything to check.
+
+While at that, also enable the test.
+
+(cherry picked from commit 2b1b3bcdcb0ddaa18337f18da515adb6284df0ab)
+---
+ .travis.yml                | 1 +
+ README.md                  | 1 +
+ test/TEST-60-IFCFG/test.sh | 2 +-
+ 3 files changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/.travis.yml b/.travis.yml
+index 364078cf..37002e9a 100644
+--- a/.travis.yml
++++ b/.travis.yml
+@@ -11,6 +11,7 @@ env:
+   - IMAGE=latest TESTS=50
+   - IMAGE=latest TESTS=30
+   - IMAGE=latest TESTS=31
++  - IMAGE=latest TESTS=60
+   - IMAGE=latest TESTS=70
+   - IMAGE=latest TESTS=99
+   - IMAGE=latest TESTS=02
+diff --git a/README.md b/README.md
+index 36ae7e1b..530f1c1b 100644
+--- a/README.md
++++ b/README.md
+@@ -27,4 +27,5 @@ dracut is an initramfs infrastructure.
+ - Test 31: [![Test 31](https://ci.centos.org/job/dracut-matrix-master/TESTS=31,label=dracut-ci-slave01/badge/icon)](https://ci.centos.org/job/dracut-matrix-master/TESTS=31,label=dracut-ci-slave01/)
+ - Test 40: [![Test 40](https://ci.centos.org/job/dracut-matrix-master/TESTS=40,label=dracut-ci-slave01/badge/icon)](https://ci.centos.org/job/dracut-matrix-master/TESTS=40,label=dracut-ci-slave01/)
+ - Test 50: [![Test 50](https://ci.centos.org/job/dracut-matrix-master/TESTS=50,label=dracut-ci-slave01/badge/icon)](https://ci.centos.org/job/dracut-matrix-master/TESTS=50,label=dracut-ci-slave01/)
++- Test 60: [![Test 60](https://ci.centos.org/job/dracut-matrix-master/TESTS=60,label=dracut-ci-slave01/badge/icon)](https://ci.centos.org/job/dracut-matrix-master/TESTS=60,label=dracut-ci-slave01/)
+ - Test 70: [![Test 70](https://ci.centos.org/job/dracut-matrix-master/TESTS=70,label=dracut-ci-slave01/badge/icon)](https://ci.centos.org/job/dracut-matrix-master/TESTS=70,label=dracut-ci-slave01/)
+diff --git a/test/TEST-60-IFCFG/test.sh b/test/TEST-60-IFCFG/test.sh
+index 8c11a7d3..8e8bd982 100755
+--- a/test/TEST-60-IFCFG/test.sh
++++ b/test/TEST-60-IFCFG/test.sh
+@@ -316,7 +316,7 @@ test_setup() {
+     $basedir/dracut.sh -l -i "$TESTDIR"/overlay / \
+         --no-early-microcode \
+         -o "plymouth" \
+-        -a "debug" \
++        -a "debug network-legacy" \
+         -d "ipvlan macvlan af_packet piix sd_mod sr_mod ata_piix ide-gd_mod e1000 nfsv2 nfsv3 nfsv4 nfs_acl nfs_layout_nfsv41_files sunrpc i6300esb ib700wdt" \
+         --no-hostonly-cmdline -N \
+         -f "$TESTDIR"/initramfs.testing "$KVERSION" || return 1
+
diff --git a/SOURCES/0045.patch b/SOURCES/0045.patch
new file mode 100644
index 0000000..2c2ccca
--- /dev/null
+++ b/SOURCES/0045.patch
@@ -0,0 +1,83 @@
+From 15ff303dde65e97ba224a9f2cc6275cbaafee52c Mon Sep 17 00:00:00 2001
+From: Lubomir Rintel <lkundrak@v3.sk>
+Date: Mon, 10 Jun 2019 16:05:23 +0200
+Subject: [PATCH] test/BONDBRIDGETEAMVLAN: don't assert against ifcfg files
+
+The network-manager module writes keyfiles instead of ifcfg files. Just
+check whether the configuration got actually applied correctly.
+
+(cherry picked from commit 9dfd73bcbd899d8da4bc680fa8b3326c47b939bd)
+---
+ test/TEST-70-BONDBRIDGETEAMVLAN/client-init.sh |  6 +-----
+ test/TEST-70-BONDBRIDGETEAMVLAN/test.sh        | 12 ++++++------
+ 2 files changed, 7 insertions(+), 11 deletions(-)
+
+diff --git a/test/TEST-70-BONDBRIDGETEAMVLAN/client-init.sh b/test/TEST-70-BONDBRIDGETEAMVLAN/client-init.sh
+index 8c33ff0f..083e0f59 100755
+--- a/test/TEST-70-BONDBRIDGETEAMVLAN/client-init.sh
++++ b/test/TEST-70-BONDBRIDGETEAMVLAN/client-init.sh
+@@ -10,11 +10,7 @@ echo "made it to the rootfs! Powering down."
+ 
+ (
+     echo OK
+-    ip -o -4 address show scope global | while read n if rest; do echo $if;done | sort
+-    for i in /run/initramfs/state/etc/sysconfig/network-scripts/ifcfg-*; do
+-	echo $i
+-	grep -v 'UUID=' $i
+-    done
++    ip -o -4 address show scope global |sed -n 's/^[^:]*: \([^ ]*\) *\(.*\) scope.*/\1 \2/p' |sort
+     echo EOF
+ ) > /dev/sda
+ 
+diff --git a/test/TEST-70-BONDBRIDGETEAMVLAN/test.sh b/test/TEST-70-BONDBRIDGETEAMVLAN/test.sh
+index 5618baee..b6dd080c 100755
+--- a/test/TEST-70-BONDBRIDGETEAMVLAN/test.sh
++++ b/test/TEST-70-BONDBRIDGETEAMVLAN/test.sh
+@@ -112,8 +112,8 @@ client_test() {
+         done
+     } < "$TESTDIR"/client.img || return 1
+ 
+-    if [[ "$check" != "$CONF" ]]; then
+-        echo "Expected: '$check'"
++    if [[ ! "$CONF" =~ ^$check$ ]]; then
++        echo "Expected: /^$check\$/"
+         echo
+         echo
+         echo "Got:      '$CONF'"
+@@ -150,7 +150,7 @@ ip=192.168.57.104::192.168.57.1:24:test:ens5.0004:none
+ rd.neednet=1
+ root=nfs:192.168.50.1:/nfs/client bootdev=ens3
+ " \
+-    'ens3 ens5.0004 ens5.3 vlan0001 vlan2 /run/initramfs/state/etc/sysconfig/network-scripts/ifcfg-ens3 # Generated by dracut initrd NAME="ens3" DEVICE="ens3" ONBOOT=yes NETBOOT=yes IPV6INIT=yes BOOTPROTO=dhcp TYPE=Ethernet /run/initramfs/state/etc/sysconfig/network-scripts/ifcfg-ens5.0004 # Generated by dracut initrd NAME="ens5.0004" ONBOOT=yes NETBOOT=yes BOOTPROTO=none IPADDR="192.168.57.104" PREFIX="24" GATEWAY="192.168.57.1" TYPE=Vlan DEVICE="ens5.0004" VLAN=yes PHYSDEV="ens5" /run/initramfs/state/etc/sysconfig/network-scripts/ifcfg-ens5.3 # Generated by dracut initrd NAME="ens5.3" ONBOOT=yes NETBOOT=yes BOOTPROTO=none IPADDR="192.168.56.103" PREFIX="24" GATEWAY="192.168.56.1" TYPE=Vlan DEVICE="ens5.3" VLAN=yes PHYSDEV="ens5" /run/initramfs/state/etc/sysconfig/network-scripts/ifcfg-vlan0001 # Generated by dracut initrd NAME="vlan0001" ONBOOT=yes NETBOOT=yes BOOTPROTO=none IPADDR="192.168.54.101" PREFIX="24" GATEWAY="192.168.54.1" TYPE=Vlan DEVICE="vlan0001" VLAN=yes PHYSDEV="ens5" /run/initramfs/state/etc/sysconfig/network-scripts/ifcfg-vlan2 # Generated by dracut initrd NAME="vlan2" ONBOOT=yes NETBOOT=yes BOOTPROTO=none IPADDR="192.168.55.102" PREFIX="24" GATEWAY="192.168.55.1" TYPE=Vlan DEVICE="vlan2" VLAN=yes PHYSDEV="ens5" EOF ' \
++    'ens3 inet 192\.168\.50\.[0-9]*/24 brd 192\.168\.50\.255 ens5\.0004 inet 192\.168\.57\.104/24 brd 192\.168\.57\.255 ens5\.3 inet 192\.168\.56\.103/24 brd 192\.168\.56\.255 vlan0001 inet 192\.168\.54\.101/24 brd 192\.168\.54\.255 vlan2 inet 192\.168\.55\.102/24 brd 192\.168\.55\.255 EOF ' \
+     || return 1
+ 
+     client_test "Multiple Bonds" \
+@@ -163,7 +163,7 @@ ip=bond1:dhcp
+ rd.neednet=1
+ root=nfs:192.168.50.1:/nfs/client bootdev=bond0
+ " \
+-    'bond0 bond1 /run/initramfs/state/etc/sysconfig/network-scripts/ifcfg-bond0 # Generated by dracut initrd NAME="bond0" DEVICE="bond0" ONBOOT=yes NETBOOT=yes IPV6INIT=yes BOOTPROTO=dhcp BONDING_OPTS="" NAME="bond0" TYPE=Bond /run/initramfs/state/etc/sysconfig/network-scripts/ifcfg-bond1 # Generated by dracut initrd NAME="bond1" DEVICE="bond1" ONBOOT=yes NETBOOT=yes IPV6INIT=yes BOOTPROTO=dhcp BONDING_OPTS="" NAME="bond1" TYPE=Bond /run/initramfs/state/etc/sysconfig/network-scripts/ifcfg-ens4 # Generated by dracut initrd NAME="ens4" TYPE=Ethernet ONBOOT=yes NETBOOT=yes SLAVE=yes MASTER="bond0" DEVICE="ens4" /run/initramfs/state/etc/sysconfig/network-scripts/ifcfg-ens5 # Generated by dracut initrd NAME="ens5" TYPE=Ethernet ONBOOT=yes NETBOOT=yes SLAVE=yes MASTER="bond0" DEVICE="ens5" /run/initramfs/state/etc/sysconfig/network-scripts/ifcfg-ens6 # Generated by dracut initrd NAME="ens6" TYPE=Ethernet ONBOOT=yes NETBOOT=yes SLAVE=yes MASTER="bond1" DEVICE="ens6" /run/initramfs/state/etc/sysconfig/network-scripts/ifcfg-ens7 # Generated by dracut initrd NAME="ens7" TYPE=Ethernet ONBOOT=yes NETBOOT=yes SLAVE=yes MASTER="bond1" DEVICE="ens7" EOF ' \
++    'bond0 inet 192\.168\.50\.[0-9]*/24 brd 192\.168\.50\.255 bond1 inet 192\.168\.51\.[0-9]*/24 brd 192\.168\.51\.255 EOF ' \
+     || return 1
+ 
+     client_test "Multiple Bridges" \
+@@ -176,7 +176,7 @@ ip=br1:dhcp
+ rd.neednet=1
+ root=nfs:192.168.50.1:/nfs/client bootdev=br0
+ " \
+-    'br0 br1 /run/initramfs/state/etc/sysconfig/network-scripts/ifcfg-br0 # Generated by dracut initrd NAME="br0" DEVICE="br0" ONBOOT=yes NETBOOT=yes IPV6INIT=yes BOOTPROTO=dhcp TYPE=Bridge NAME="br0" /run/initramfs/state/etc/sysconfig/network-scripts/ifcfg-br1 # Generated by dracut initrd NAME="br1" DEVICE="br1" ONBOOT=yes NETBOOT=yes IPV6INIT=yes BOOTPROTO=dhcp TYPE=Bridge NAME="br1" /run/initramfs/state/etc/sysconfig/network-scripts/ifcfg-ens4 # Generated by dracut initrd NAME="ens4" TYPE=Ethernet ONBOOT=yes NETBOOT=yes BRIDGE="br0" DEVICE="ens4" /run/initramfs/state/etc/sysconfig/network-scripts/ifcfg-ens5 # Generated by dracut initrd NAME="ens5" TYPE=Ethernet ONBOOT=yes NETBOOT=yes BRIDGE="br0" DEVICE="ens5" /run/initramfs/state/etc/sysconfig/network-scripts/ifcfg-ens6 # Generated by dracut initrd NAME="ens6" TYPE=Ethernet ONBOOT=yes NETBOOT=yes BRIDGE="br1" DEVICE="ens6" /run/initramfs/state/etc/sysconfig/network-scripts/ifcfg-ens7 # Generated by dracut initrd NAME="ens7" TYPE=Ethernet ONBOOT=yes NETBOOT=yes BRIDGE="br1" DEVICE="ens7" EOF ' \
++    'br0 inet 192\.168\.50\.[0-9]*/24 brd 192\.168\.50\.255 br1 inet 192\.168\.51\.[0-9]*/24 brd 192\.168\.51\.255 EOF ' \
+     || return 1
+ 
+     kill_server
+@@ -260,7 +260,7 @@ test_setup() {
+         export initdir="$TESTDIR"/mnt/nfs/client
+         . "$basedir"/dracut-init.sh
+         inst_multiple sh shutdown poweroff stty cat ps ln ip \
+-            mount dmesg mkdir cp ping grep ls sort
++            mount dmesg mkdir cp ping grep ls sort sed
+         for _terminfodir in /lib/terminfo /etc/terminfo /usr/share/terminfo; do
+             [[ -f ${_terminfodir}/l/linux ]] && break
+         done
+
diff --git a/SOURCES/0046.patch b/SOURCES/0046.patch
new file mode 100644
index 0000000..0a30c85
--- /dev/null
+++ b/SOURCES/0046.patch
@@ -0,0 +1,37 @@
+From 96976e84e2c8544ab32026f05da8a35b9c48b2e5 Mon Sep 17 00:00:00 2001
+From: Lubomir Rintel <lkundrak@v3.sk>
+Date: Mon, 10 Jun 2019 16:05:49 +0200
+Subject: [PATCH] test/MULTINIC: correctly note activated devices when using
+ network-manager
+
+The .did-setup files are not there. What is there is the NetworkManager
+connection files.
+
+(cherry picked from commit 393fb1ac05ec3386a07d885e99985a647634803e)
+---
+ test/TEST-50-MULTINIC/client-init.sh | 10 ++++++++++
+ 1 file changed, 10 insertions(+)
+
+diff --git a/test/TEST-50-MULTINIC/client-init.sh b/test/TEST-50-MULTINIC/client-init.sh
+index 529379f0..7099dcf3 100755
+--- a/test/TEST-50-MULTINIC/client-init.sh
++++ b/test/TEST-50-MULTINIC/client-init.sh
+@@ -105,7 +105,17 @@ export TERM=linux
+ export PS1='initramfs-test:\w\$ '
+ stty sane
+ echo "made it to the rootfs! Powering down."
++for i in /sys/class/net/*/
++do
++    # booting with network-manager module
++    state=/run/NetworkManager/devices/$(cat $i/ifindex)
++    grep -q connection-uuid= $state 2>/dev/null || continue
++    i=${i##*/}
++    ip link show $i |grep -q master && continue
++    IFACES+="$i "
++done
+ for i in /run/initramfs/net.*.did-setup; do
++    # booting with network-legacy module
+     [ -f "$i" ] || continue
+     strglobin "$i" ":*:*:*:*:" && continue
+     i=${i%.did-setup}
+
diff --git a/SOURCES/0047.patch b/SOURCES/0047.patch
new file mode 100644
index 0000000..e30ed6a
--- /dev/null
+++ b/SOURCES/0047.patch
@@ -0,0 +1,115 @@
+From 08961eef2ad09e4ce38ee034baf4e8c2b3934cd1 Mon Sep 17 00:00:00 2001
+From: Benjamin Marzinski <bmarzins@redhat.com>
+Date: Tue, 3 Sep 2019 10:44:36 -0500
+Subject: [PATCH] modules.d: fix udev rules detection of multipath devices
+
+Starting with the 0.7.7 release of the multipath tools, the multipath
+udev rules always set a value in ENV{DM_MULTIPATH_DEVICE_PATH} for any
+device that multipath scans. A value of 0 means that the device is not
+claimed by multipath, and a value of 1 means that it is. Because of
+this, udev rules that check ENV{DM_MULTIPATH_DEVICE_PATH}=="?*" will
+always return True, and act as if every scanned device is claimed by
+multipath. Checking ENV{DM_MULTIPATH_DEVICE_PATH}=="1" will work
+correctly for both the old and new versions of the multipath tools.
+---
+ modules.d/90dm/59-persistent-storage-dm.rules      | 2 +-
+ modules.d/90dmraid/61-dmraid-imsm.rules            | 2 +-
+ modules.d/90lvm/64-lvm.rules                       | 2 +-
+ modules.d/90mdraid/59-persistent-storage-md.rules  | 2 +-
+ modules.d/90mdraid/65-md-incremental-imsm.rules    | 2 +-
+ modules.d/95udev-rules/59-persistent-storage.rules | 2 +-
+ modules.d/95udev-rules/61-persistent-storage.rules | 2 +-
+ 7 files changed, 7 insertions(+), 7 deletions(-)
+
+diff --git a/modules.d/90dm/59-persistent-storage-dm.rules b/modules.d/90dm/59-persistent-storage-dm.rules
+index 73b09376..2be11227 100644
+--- a/modules.d/90dm/59-persistent-storage-dm.rules
++++ b/modules.d/90dm/59-persistent-storage-dm.rules
+@@ -1,7 +1,7 @@
+ SUBSYSTEM!="block", GOTO="dm_end"
+ ACTION!="add|change", GOTO="dm_end"
+ # Also don't process disks that are slated to be a multipath device
+-ENV{DM_MULTIPATH_DEVICE_PATH}=="?*", GOTO="dm_end"
++ENV{DM_MULTIPATH_DEVICE_PATH}=="1", GOTO="dm_end"
+ 
+ KERNEL!="dm-[0-9]*", GOTO="dm_end"
+ ACTION=="add", GOTO="dm_end"
+diff --git a/modules.d/90dmraid/61-dmraid-imsm.rules b/modules.d/90dmraid/61-dmraid-imsm.rules
+index 72267d3c..8a6b215e 100644
+--- a/modules.d/90dmraid/61-dmraid-imsm.rules
++++ b/modules.d/90dmraid/61-dmraid-imsm.rules
+@@ -5,7 +5,7 @@
+ SUBSYSTEM!="block", GOTO="dm_end"
+ ACTION!="add|change", GOTO="dm_end"
+ # Also don't process disks that are slated to be a multipath device
+-ENV{DM_MULTIPATH_DEVICE_PATH}=="?*", GOTO="dm_end"
++ENV{DM_MULTIPATH_DEVICE_PATH}=="1", GOTO="dm_end"
+ 
+ ENV{ID_FS_TYPE}=="linux_raid_member", GOTO="dm_end"
+ 
+diff --git a/modules.d/90lvm/64-lvm.rules b/modules.d/90lvm/64-lvm.rules
+index 3ce0c1f6..65f65249 100644
+--- a/modules.d/90lvm/64-lvm.rules
++++ b/modules.d/90lvm/64-lvm.rules
+@@ -7,7 +7,7 @@
+ SUBSYSTEM!="block", GOTO="lvm_end"
+ ACTION!="add|change", GOTO="lvm_end"
+ # Also don't process disks that are slated to be a multipath device
+-ENV{DM_MULTIPATH_DEVICE_PATH}=="?*", GOTO="lvm_end"
++ENV{DM_MULTIPATH_DEVICE_PATH}=="1", GOTO="lvm_end"
+ KERNEL=="dm-[0-9]*", ACTION=="add", GOTO="lvm_end"
+ ENV{ID_FS_TYPE}!="LVM?_member", GOTO="lvm_end"
+ 
+diff --git a/modules.d/90mdraid/59-persistent-storage-md.rules b/modules.d/90mdraid/59-persistent-storage-md.rules
+index 6ef858aa..96b10108 100644
+--- a/modules.d/90mdraid/59-persistent-storage-md.rules
++++ b/modules.d/90mdraid/59-persistent-storage-md.rules
+@@ -1,7 +1,7 @@
+ SUBSYSTEM!="block", GOTO="md_end"
+ ACTION!="add|change", GOTO="md_end"
+ # Also don't process disks that are slated to be a multipath device
+-ENV{DM_MULTIPATH_DEVICE_PATH}=="?*", GOTO="md_end"
++ENV{DM_MULTIPATH_DEVICE_PATH}=="1", GOTO="md_end"
+ 
+ KERNEL!="md[0-9]*|md_d[0-9]*|md/*", KERNEL!="md*", GOTO="md_end"
+ 
+diff --git a/modules.d/90mdraid/65-md-incremental-imsm.rules b/modules.d/90mdraid/65-md-incremental-imsm.rules
+index d66dd012..52f5b195 100644
+--- a/modules.d/90mdraid/65-md-incremental-imsm.rules
++++ b/modules.d/90mdraid/65-md-incremental-imsm.rules
+@@ -9,7 +9,7 @@ KERNEL=="md*", ENV{ID_FS_TYPE}!="linux_raid_member", GOTO="md_end"
+ KERNEL=="md*", ACTION!="change", GOTO="md_end"
+ 
+ # Also don't process disks that are slated to be a multipath device
+-ENV{DM_MULTIPATH_DEVICE_PATH}=="?*", GOTO="md_end"
++ENV{DM_MULTIPATH_DEVICE_PATH}=="1", GOTO="md_end"
+ 
+ ENV{ID_FS_TYPE}=="ddf_raid_member|isw_raid_member|linux_raid_member", GOTO="md_try"
+ GOTO="md_end"
+diff --git a/modules.d/95udev-rules/59-persistent-storage.rules b/modules.d/95udev-rules/59-persistent-storage.rules
+index 47ff6edd..8d8650f7 100644
+--- a/modules.d/95udev-rules/59-persistent-storage.rules
++++ b/modules.d/95udev-rules/59-persistent-storage.rules
+@@ -1,7 +1,7 @@
+ SUBSYSTEM!="block", GOTO="ps_end"
+ ACTION!="add|change", GOTO="ps_end"
+ # Also don't process disks that are slated to be a multipath device
+-ENV{DM_MULTIPATH_DEVICE_PATH}=="?*", GOTO="ps_end"
++ENV{DM_MULTIPATH_DEVICE_PATH}=="1", GOTO="ps_end"
+ 
+ KERNEL=="cciss[0-9]*", IMPORT BLKID
+ KERNEL=="nbd[0-9]*", IMPORT BLKID
+diff --git a/modules.d/95udev-rules/61-persistent-storage.rules b/modules.d/95udev-rules/61-persistent-storage.rules
+index 37148b07..895ecebd 100644
+--- a/modules.d/95udev-rules/61-persistent-storage.rules
++++ b/modules.d/95udev-rules/61-persistent-storage.rules
+@@ -1,7 +1,7 @@
+ SUBSYSTEM!="block", GOTO="pss_end"
+ ACTION!="add|change", GOTO="pss_end"
+ # Also don't process disks that are slated to be a multipath device
+-ENV{DM_MULTIPATH_DEVICE_PATH}=="?*", GOTO="pss_end"
++ENV{DM_MULTIPATH_DEVICE_PATH}=="1", GOTO="pss_end"
+ 
+ ACTION=="change", KERNEL=="dm-[0-9]*", ENV{DM_UDEV_DISABLE_OTHER_RULES_FLAG}!="1", GOTO="do_pss"
+ KERNEL=="cciss[0-9]*", GOTO="do_pss"
+
diff --git a/SOURCES/0048.patch b/SOURCES/0048.patch
new file mode 100644
index 0000000..1dd087a
--- /dev/null
+++ b/SOURCES/0048.patch
@@ -0,0 +1,43 @@
+From b59ae228851713f645751742136e34b854b0712a Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Thu, 10 Nov 2016 13:57:26 +0100
+Subject: [PATCH] test/test-rpms.txt: add list of rpms to install
+
+(cherry picked from commit f432d367fc4fa7558761cb9bb4229e6c027bfa31)
+---
+ test/test-rpms.txt | 26 ++++++++++++++++++++++++++
+ 1 file changed, 26 insertions(+)
+
+diff --git a/test/test-rpms.txt b/test/test-rpms.txt
+new file mode 100644
+index 00000000..1723d8e9
+--- /dev/null
++++ b/test/test-rpms.txt
+@@ -0,0 +1,26 @@
++dash
++bridge-utils
++asciidoc
++mdadm
++lvm2
++dmraid
++cryptsetup
++nfs-utils
++nbd
++dhcp-server
++scsi-target-utils
++iscsi-initiator-utils
++net-tools
++strace
++syslinux
++python-imgcreate
++genisoimage
++btrfs-progs
++bridge-utils
++kmod-devel
++gcc
++bzip2
++xz
++tar
++wget
++rpm-build
+
diff --git a/SOURCES/0049.patch b/SOURCES/0049.patch
new file mode 100644
index 0000000..e23f5fd
--- /dev/null
+++ b/SOURCES/0049.patch
@@ -0,0 +1,23 @@
+From 4ef5cdc120bdbb348345c964a19affbb3ca1fa32 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Fri, 11 Nov 2016 11:40:58 +0100
+Subject: [PATCH] test/test-rpms.txt: add gzip
+
+(cherry picked from commit 7b4173d698be5163da1e5b5b52bafd2facba4db5)
+---
+ test/test-rpms.txt | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/test/test-rpms.txt b/test/test-rpms.txt
+index 1723d8e9..10596da7 100644
+--- a/test/test-rpms.txt
++++ b/test/test-rpms.txt
+@@ -19,6 +19,7 @@ btrfs-progs
+ bridge-utils
+ kmod-devel
+ gcc
++gzip
+ bzip2
+ xz
+ tar
+
diff --git a/SOURCES/0050.patch b/SOURCES/0050.patch
new file mode 100644
index 0000000..413d8b7
--- /dev/null
+++ b/SOURCES/0050.patch
@@ -0,0 +1,23 @@
+From fe44aa1b14f427245bdfb2026f2211a19b52f5e3 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Fri, 11 Nov 2016 12:34:00 +0100
+Subject: [PATCH] test-rpms.txt: add dhcp
+
+(cherry picked from commit a081e072d894c91fcf037e267cb6793c4b0356c4)
+---
+ test/test-rpms.txt | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/test/test-rpms.txt b/test/test-rpms.txt
+index 10596da7..95376bd2 100644
+--- a/test/test-rpms.txt
++++ b/test/test-rpms.txt
+@@ -8,6 +8,7 @@ cryptsetup
+ nfs-utils
+ nbd
+ dhcp-server
++dhcp
+ scsi-target-utils
+ iscsi-initiator-utils
+ net-tools
+
diff --git a/SOURCES/0051.patch b/SOURCES/0051.patch
new file mode 100644
index 0000000..158b434
--- /dev/null
+++ b/SOURCES/0051.patch
@@ -0,0 +1,19 @@
+From 81babdedec8c6f7b23bbf0e3418126c4f9e5e15f Mon Sep 17 00:00:00 2001
+From: Frantisek Sumsal <frantisek@sumsal.cz>
+Date: Tue, 10 Sep 2019 16:46:55 +0200
+Subject: [PATCH] test-rpms.txt: add util-linux into the dependency list
+
+---
+ test/test-rpms.txt | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/test/test-rpms.txt b/test/test-rpms.txt
+index 95376bd2..02577c8a 100644
+--- a/test/test-rpms.txt
++++ b/test/test-rpms.txt
+@@ -26,3 +26,4 @@ xz
+ tar
+ wget
+ rpm-build
++util-linux
+
diff --git a/SOURCES/0052.patch b/SOURCES/0052.patch
new file mode 100644
index 0000000..5a338e0
--- /dev/null
+++ b/SOURCES/0052.patch
@@ -0,0 +1,33 @@
+From 7843bc52777683f6a4ef953d8dde7171ff3b911c Mon Sep 17 00:00:00 2001
+From: Lubomir Rintel <lkundrak@v3.sk>
+Date: Wed, 24 Jul 2019 16:45:19 +0200
+Subject: [PATCH] [RHEL] network: default to network-legacy even in presence of
+ nm-initrd-generator
+
+In RHEL 8.2, NetworkManager will ship with the nm-initrd-generator, but
+before the install bits fall into place we want to default to network-legacy.
+
+This unblocks the enablement of the NetworkManager bits and is intended
+to be reverted later on.
+---
+ modules.d/40network/module-setup.sh | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/modules.d/40network/module-setup.sh b/modules.d/40network/module-setup.sh
+index 8e2a74a3..bf252eb7 100755
+--- a/modules.d/40network/module-setup.sh
++++ b/modules.d/40network/module-setup.sh
+@@ -8,9 +8,9 @@ check() {
+ # called by dracut
+ depends() {
+     echo -n "kernel-network-modules "
+-    if ! dracut_module_included "network-legacy" && [ -x "/usr/libexec/nm-initrd-generator" ] ; then
+-        echo "network-manager"
+-    else
++    # RHEL 8.1: Default to network-legacy unless the user chose
++    # network-manager manually
++    if ! dracut_module_included "network-manager" ; then
+         echo "network-legacy"
+     fi
+     return 0
+
diff --git a/SOURCES/0053.patch b/SOURCES/0053.patch
new file mode 100644
index 0000000..ef9e265
--- /dev/null
+++ b/SOURCES/0053.patch
@@ -0,0 +1,32 @@
+From dcbc74b01bfb360eecadb8e59480472b86fe63d0 Mon Sep 17 00:00:00 2001
+From: Jonathan Lebon <jonathan@jlebon.com>
+Date: Tue, 29 Oct 2019 09:35:41 -0400
+Subject: [PATCH] 01fips: fix HMAC file path resolution
+
+There is a small regression in #343: when handling the 'separate boot
+partition' case, we're checking for the kernel image in the wrong
+location: `BOOT_IMAGE` is the `/boot`-relative path to the kernel image,
+so `/boot/${BOOT_IMAGE_PATH}/${BOOT_IMAGE}` expands to e.g.
+`/boot/mysubdir1/mysubdir2/mysubdir1/mysubdir2/vmlinuz...`.
+
+We should be using `BOOT_IMAGE_NAME` here instead (and in fact, the next
+if-statement does this correctly, so it might've just been accidentally
+left out of #343).
+---
+ modules.d/01fips/fips.sh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/modules.d/01fips/fips.sh b/modules.d/01fips/fips.sh
+index beaa692b..c3dbcf74 100755
+--- a/modules.d/01fips/fips.sh
++++ b/modules.d/01fips/fips.sh
+@@ -118,7 +118,7 @@ do_fips()
+ 
+         if [ -z "$BOOT_IMAGE_NAME" ]; then
+             BOOT_IMAGE_NAME="vmlinuz-${KERNEL}"
+-        elif ! [ -e "/boot/${BOOT_IMAGE_PATH}/${BOOT_IMAGE}" ]; then
++        elif ! [ -e "/boot/${BOOT_IMAGE_PATH}/${BOOT_IMAGE_NAME}" ]; then
+             #if /boot is not a separate partition BOOT_IMAGE might start with /boot
+             BOOT_IMAGE_PATH=${BOOT_IMAGE_PATH#"/boot"}
+             #on some achitectures BOOT_IMAGE does not contain path to kernel
+
diff --git a/SOURCES/0054.patch b/SOURCES/0054.patch
new file mode 100644
index 0000000..489c715
--- /dev/null
+++ b/SOURCES/0054.patch
@@ -0,0 +1,33 @@
+From 14310ca42f06c2156ab5cefd05dbaa47ae3b054d Mon Sep 17 00:00:00 2001
+From: Jonathan Lebon <jonathan@jlebon.com>
+Date: Tue, 29 Oct 2019 16:47:34 -0400
+Subject: [PATCH] 01fips: run sha512hmac from directory HMAC file directory
+
+That way, the HMAC file can contain a relative path instead of an
+absolute one. The issue is that right now the kernel RPM bakes the
+`/boot/vmlinuz-${kver}` path into the HMAC file which poses an issue for
+rpm-ostree systems (and any other system where the kernel isn't simply
+in the top-level `/boot`.
+
+For now, we're hacking around this in rpm-ostree:
+https://github.com/coreos/rpm-ostree/pull/1934
+
+Though I'd like to propose the same change in the kernel spec file.
+---
+ modules.d/01fips/fips.sh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/modules.d/01fips/fips.sh b/modules.d/01fips/fips.sh
+index c3dbcf74..893143d0 100755
+--- a/modules.d/01fips/fips.sh
++++ b/modules.d/01fips/fips.sh
+@@ -135,7 +135,7 @@ do_fips()
+             return 1
+         fi
+ 
+-        sha512hmac -c "${BOOT_IMAGE_HMAC}" || return 1
++        (cd "${BOOT_IMAGE_HMAC%/*}" && sha512hmac -c "${BOOT_IMAGE_HMAC}") || return 1
+     fi
+ 
+     info "All initrd crypto checks done"
+
diff --git a/SOURCES/0055.patch b/SOURCES/0055.patch
new file mode 100644
index 0000000..2d59629
--- /dev/null
+++ b/SOURCES/0055.patch
@@ -0,0 +1,26 @@
+From 89dcbbe92f008f6c4ebccfedf09d32bab4a575e5 Mon Sep 17 00:00:00 2001
+From: Jonathan Lebon <jonathan@jlebon.com>
+Date: Tue, 29 Oct 2019 16:53:00 -0400
+Subject: [PATCH] 01fips: add / in BOOT_IMAGE_HMAC filename for clarity
+
+It's already the case the `BOOT_IMAGE_PATH` today, in the non-empty
+case, includes a trailing `/`, but let's add it to the path we build
+here too to make it more obvious.
+---
+ modules.d/01fips/fips.sh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/modules.d/01fips/fips.sh b/modules.d/01fips/fips.sh
+index 893143d0..de2755b0 100755
+--- a/modules.d/01fips/fips.sh
++++ b/modules.d/01fips/fips.sh
+@@ -129,7 +129,7 @@ do_fips()
+             fi
+         fi
+ 
+-        BOOT_IMAGE_HMAC="/boot/${BOOT_IMAGE_PATH}.${BOOT_IMAGE_NAME}.hmac"
++        BOOT_IMAGE_HMAC="/boot/${BOOT_IMAGE_PATH}/.${BOOT_IMAGE_NAME}.hmac"
+         if ! [ -e "${BOOT_IMAGE_HMAC}" ]; then
+             warn "${BOOT_IMAGE_HMAC} does not exist"
+             return 1
+
diff --git a/SOURCES/0056.patch b/SOURCES/0056.patch
new file mode 100644
index 0000000..90ac5a9
--- /dev/null
+++ b/SOURCES/0056.patch
@@ -0,0 +1,34 @@
+From 9e8f172dc01f7e013bb5d302ef6c90e2dc6b30c8 Mon Sep 17 00:00:00 2001
+From: Jonathan Lebon <jonathan@jlebon.com>
+Date: Tue, 29 Oct 2019 16:54:10 -0400
+Subject: [PATCH] 01fips: trim off GRUB boot device from BOOT_IMAGE
+
+E.g. in RHCOS, the `BOOT_IMAGE` from the cmdline is:
+
+(hd0,gpt1)/ostree/rhcos-e493371e5ee8407889029ec979955a2b86fd7e3cae5a0591b9db1cd248d966e8/vmlinuz-4.18.0-146.el8.x86_64
+
+Which of course is a GRUB thing, not an actual pathname we'll be able to
+resolve. In fact, we can simply scrap it off from the variable. Our code
+is already able to handle both cases: whether the device refers to a
+separate boot partition, or just the root filesystem with a regular
+`/boot` directory.
+---
+ modules.d/01fips/fips.sh | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/modules.d/01fips/fips.sh b/modules.d/01fips/fips.sh
+index de2755b0..559952ca 100755
+--- a/modules.d/01fips/fips.sh
++++ b/modules.d/01fips/fips.sh
+@@ -113,6 +113,10 @@ do_fips()
+         do_rhevh_check /run/initramfs/live/isolinux/vmlinuz0 || return 1
+     else
+         BOOT_IMAGE="$(getarg BOOT_IMAGE)"
++
++        # Trim off any leading GRUB boot device (e.g. ($root) )
++        BOOT_IMAGE="$(echo "${BOOT_IMAGE}" | sed 's/^(.*)//')"
++
+         BOOT_IMAGE_NAME="${BOOT_IMAGE##*/}"
+         BOOT_IMAGE_PATH="${BOOT_IMAGE%${BOOT_IMAGE_NAME}}"
+ 
+
diff --git a/SOURCES/0057.patch b/SOURCES/0057.patch
new file mode 100644
index 0000000..0729b82
--- /dev/null
+++ b/SOURCES/0057.patch
@@ -0,0 +1,25 @@
+From 346e57c1b6af4e2cfdbaae64941f2f3b8454a944 Mon Sep 17 00:00:00 2001
+From: Lukas Nykryn <lnykryn@redhat.com>
+Date: Fri, 29 Nov 2019 13:29:23 +0100
+Subject: [PATCH] always include sg module
+
+RHEL-only
+Resolves:#1579763
+---
+ modules.d/00systemd/module-setup.sh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/modules.d/00systemd/module-setup.sh b/modules.d/00systemd/module-setup.sh
+index 1ed4b34f..ed177826 100755
+--- a/modules.d/00systemd/module-setup.sh
++++ b/modules.d/00systemd/module-setup.sh
+@@ -18,7 +18,7 @@ depends() {
+ }
+ 
+ installkernel() {
+-    hostonly='' instmods autofs4 ipv6 algif_hash hmac sha256
++    hostonly='' instmods autofs4 ipv6 algif_hash hmac sha256 sg
+     instmods -s efivarfs
+ }
+ 
+
diff --git a/SOURCES/0058.patch b/SOURCES/0058.patch
new file mode 100644
index 0000000..728e07b
--- /dev/null
+++ b/SOURCES/0058.patch
@@ -0,0 +1,44 @@
+From 8061a432844d1f780d9b18144def0faef0145c0c Mon Sep 17 00:00:00 2001
+From: Lukas Nykryn <lnykryn@redhat.com>
+Date: Mon, 7 Oct 2019 16:48:09 +0200
+Subject: [PATCH] net-lib: check if addr exists before checking for dad state
+
+Before we check if dad is done we should first make sure,
+that there is a link local address where we do the check.
+
+Due to this issue, on ipv6 only setups sometimes dhclient started
+asking for ip address, before the link local address was present
+and failed immediately.
+
+(cherry picked from commit daa49cc2216d6387541ef36e8427081f6b02f224)
+
+Resolves: #1765014
+---
+ modules.d/40network/net-lib.sh | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/modules.d/40network/net-lib.sh b/modules.d/40network/net-lib.sh
+index ad78d225..dcb53804 100755
+--- a/modules.d/40network/net-lib.sh
++++ b/modules.d/40network/net-lib.sh
+@@ -653,7 +653,8 @@ wait_for_ipv6_dad_link() {
+     timeout=$(($timeout*10))
+ 
+     while [ $cnt -lt $timeout ]; do
+-        [ -z "$(ip -6 addr show dev "$1" scope link tentative)" ] \
++        [ -n "$(ip -6 addr show dev "$1" scope link)" ] \
++            && [ -z "$(ip -6 addr show dev "$1" scope link tentative)" ] \
+             && [ -n "$(ip -6 route list proto ra dev "$1" | grep ^default)" ] \
+             && return 0
+         [ -n "$(ip -6 addr show dev "$1" scope link dadfailed)" ] \
+@@ -671,7 +672,8 @@ wait_for_ipv6_dad() {
+     timeout=$(($timeout*10))
+ 
+     while [ $cnt -lt $timeout ]; do
+-        [ -z "$(ip -6 addr show dev "$1" tentative)" ] \
++        [ -n "$(ip -6 addr show dev "$1")" ] \
++            && [ -z "$(ip -6 addr show dev "$1" tentative)" ] \
+             && [ -n "$(ip -6 route list proto ra dev "$1" | grep ^default)" ] \
+             && return 0
+         [ -n "$(ip -6 addr show dev "$1" dadfailed)" ] \
+
diff --git a/SOURCES/0059.patch b/SOURCES/0059.patch
new file mode 100644
index 0000000..625a662
--- /dev/null
+++ b/SOURCES/0059.patch
@@ -0,0 +1,58 @@
+From 2caaf8b9ba5b95983154bd641f0f493ff1562cc0 Mon Sep 17 00:00:00 2001
+From: Kairui Song <kasong@redhat.com>
+Date: Tue, 6 Aug 2019 15:39:31 +0800
+Subject: [PATCH] 99squash: Only start the cleaner on switch-root
+
+Currently it starts the cleaner early and do the clean up job if switch
+root is called. It's better to just start the service only on switch
+root to avoid any risk of service dependency failure and make is
+simpler.
+
+Signed-off-by: Kairui Song <kasong@redhat.com>
+(cherry picked from commit 5d88809319049eb06e3472dcd11cca9c4557d8c2)
+
+Resolves: #1678248
+---
+ modules.d/99squash/module-setup.sh          |  3 ++-
+ modules.d/99squash/squash-mnt-clear.service | 11 ++++-------
+ 2 files changed, 6 insertions(+), 8 deletions(-)
+
+diff --git a/modules.d/99squash/module-setup.sh b/modules.d/99squash/module-setup.sh
+index 935fd721..e7e9ed8e 100644
+--- a/modules.d/99squash/module-setup.sh
++++ b/modules.d/99squash/module-setup.sh
+@@ -25,5 +25,6 @@ install() {
+     inst $moddir/init.sh /squash/init.sh
+ 
+     inst "$moddir/squash-mnt-clear.service" "$systemdsystemunitdir/squash-mnt-clear.service"
+-    ln_r "$systemdsystemunitdir/squash-mnt-clear.service" "$systemdsystemunitdir/initrd.target.wants/squash-mnt-clear.service"
++    mkdir -p "$initdir$systemdsystemunitdir/initrd-switch-root.target.wants"
++    ln_r "$systemdsystemunitdir/squash-mnt-clear.service" "$systemdsystemunitdir/initrd-switch-root.target.wants/squash-mnt-clear.service"
+ }
+diff --git a/modules.d/99squash/squash-mnt-clear.service b/modules.d/99squash/squash-mnt-clear.service
+index f8d5db46..84441f60 100644
+--- a/modules.d/99squash/squash-mnt-clear.service
++++ b/modules.d/99squash/squash-mnt-clear.service
+@@ -4,17 +4,14 @@
+ [Unit]
+ Description=Cleanup squashfs mounts when switch root
+ DefaultDependencies=no
+-After=initrd.target
+-After=dracut-initqueue.service dracut-pre-pivot.service
+-Before=initrd-cleanup.service
++Before=initrd-switch-root.service
++After=initrd-switch-root.target
+ ConditionPathExists=/squash/root
+-Conflicts=initrd-switch-root.target
+-IgnoreOnIsolate=true
+ 
+ [Service]
+ Type=oneshot
+-RemainAfterExit=yes
++RemainAfterExit=no
+ StandardInput=null
+ StandardOutput=syslog+console
+ StandardError=syslog+console
+-ExecStop=/squash/clear-squash.sh
++ExecStart=/squash/clear-squash.sh
+
diff --git a/SOURCES/0060.patch b/SOURCES/0060.patch
new file mode 100644
index 0000000..1160079
--- /dev/null
+++ b/SOURCES/0060.patch
@@ -0,0 +1,31 @@
+From ab679e91396a21489999c0acc9243415cb3235db Mon Sep 17 00:00:00 2001
+From: Colin Walters <walters@verbum.org>
+Date: Tue, 7 Jan 2020 20:53:53 +0000
+Subject: [PATCH] modules/network-manager: Install `ip`
+
+We don't need `ip` but having it is *really* useful for people debugging
+in an emergency shell.
+
+(cherry picked from commit 7fea85ce5f313445a260b5eb7bd7466217479d99)
+
+Resolves: #1784358
+---
+ modules.d/35network-manager/module-setup.sh | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/modules.d/35network-manager/module-setup.sh b/modules.d/35network-manager/module-setup.sh
+index 62aba3c6..d6d0f9ce 100755
+--- a/modules.d/35network-manager/module-setup.sh
++++ b/modules.d/35network-manager/module-setup.sh
+@@ -26,7 +26,9 @@ install() {
+ 
+     _nm_version=$(NetworkManager --version)
+ 
+-    inst_multiple sed grep
++    # We don't need `ip` but having it is *really* useful for people debugging
++    # in an emergency shell.
++    inst_multiple ip sed grep
+ 
+     inst NetworkManager
+     inst /usr/libexec/nm-initrd-generator
+
diff --git a/SOURCES/0061.patch b/SOURCES/0061.patch
new file mode 100644
index 0000000..efbe84d
--- /dev/null
+++ b/SOURCES/0061.patch
@@ -0,0 +1,31 @@
+From 7164155795f3f257cd119846de0b2a802a6a52c5 Mon Sep 17 00:00:00 2001
+From: Lukas Nykryn <lnykryn@redhat.com>
+Date: Thu, 9 Jan 2020 10:49:52 +0100
+Subject: [PATCH] network-legacy/ifup: dhclient should be started in oneshot
+ mode
+
+since we handle the retries explicitly via rd.net.dhcp.retry
+
+Without -1 if user sets ip=dhcp6 and there is no dhcp on the network,
+dhclient seems to wait indefinitely, ignoring rd.net.timeout.dhcp
+
+(cherry picked from commit 2181c80c91f05bfae5e50de2f502e363b0219bae)
+
+Resolves: #1787620
+---
+ modules.d/35network-legacy/ifup.sh | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/modules.d/35network-legacy/ifup.sh b/modules.d/35network-legacy/ifup.sh
+index b4f5bf10..bfb57ad5 100755
+--- a/modules.d/35network-legacy/ifup.sh
++++ b/modules.d/35network-legacy/ifup.sh
+@@ -52,6 +52,7 @@ do_dhcp() {
+         dhclient "$@" \
+                  ${_timeout:+-timeout $_timeout} \
+                  -q \
++                 -1 \
+                  -cf /etc/dhclient.conf \
+                  -pf /tmp/dhclient.$netif.pid \
+                  -lf /tmp/dhclient.$netif.lease \
+
diff --git a/SOURCES/0062.patch b/SOURCES/0062.patch
new file mode 100644
index 0000000..f082cac
--- /dev/null
+++ b/SOURCES/0062.patch
@@ -0,0 +1,26 @@
+From d20eb7b7b2a50f29ac02bd6b6d80113d495849ed Mon Sep 17 00:00:00 2001
+From: Lukas Nykryn <lnykryn@redhat.com>
+Date: Wed, 8 Jan 2020 16:20:29 +0100
+Subject: [PATCH] network-legacy/ifup: fix typo when calling dhclient --timeout
+
+(cherry picked from commit 212043f94dde1693d777e933945138747537f12f)
+
+Resolves: #1787620
+---
+ modules.d/35network-legacy/ifup.sh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/modules.d/35network-legacy/ifup.sh b/modules.d/35network-legacy/ifup.sh
+index bfb57ad5..16b950be 100755
+--- a/modules.d/35network-legacy/ifup.sh
++++ b/modules.d/35network-legacy/ifup.sh
+@@ -50,7 +50,7 @@ do_dhcp() {
+     while [ $_COUNT -lt $_DHCPRETRY ]; do
+         info "Starting dhcp for interface $netif"
+         dhclient "$@" \
+-                 ${_timeout:+-timeout $_timeout} \
++                 ${_timeout:+--timeout $_timeout} \
+                  -q \
+                  -1 \
+                  -cf /etc/dhclient.conf \
+
diff --git a/SOURCES/0063.patch b/SOURCES/0063.patch
new file mode 100644
index 0000000..54fb550
--- /dev/null
+++ b/SOURCES/0063.patch
@@ -0,0 +1,31 @@
+From 46a8b8e9e7f150c2a17d4adeacb25ccf003ec425 Mon Sep 17 00:00:00 2001
+From: Jonathan Lebon <jonathan@jlebon.com>
+Date: Tue, 21 Jan 2020 17:57:31 -0500
+Subject: [PATCH] network-legacy/ifup: nuke pid and lease files if dhclient
+ failed
+
+Otherwise we won't retry dhclient again on that interface. In
+FCOS/RHCOS, we want to bake in `ip=dhcp,dhcp6` so we automatically try
+getting a DHCPv6 lease if DHCPv4 failed.
+
+Related: https://bugzilla.redhat.com/show_bug.cgi?id=1793591
+(cherry picked from commit d0de58f23252a9da4a8badd71777e7c8418fa4b7)
+---
+ modules.d/35network-legacy/ifup.sh | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/modules.d/35network-legacy/ifup.sh b/modules.d/35network-legacy/ifup.sh
+index 16b950be..dd18d70b 100755
+--- a/modules.d/35network-legacy/ifup.sh
++++ b/modules.d/35network-legacy/ifup.sh
+@@ -62,6 +62,9 @@ do_dhcp() {
+         [ $_COUNT -lt $_DHCPRETRY ] && sleep 1
+     done
+     warn "dhcp for interface $netif failed"
++    # nuke those files since we failed; we might retry dhcp again if it's e.g.
++    # `ip=dhcp,dhcp6` and we check for the PID file at the top
++    rm -f /tmp/dhclient.$netif.{pid,lease}
+     return 1
+ }
+ 
+
diff --git a/SOURCES/0064.patch b/SOURCES/0064.patch
new file mode 100644
index 0000000..807d03f
--- /dev/null
+++ b/SOURCES/0064.patch
@@ -0,0 +1,39 @@
+From 86d48f5c45d2d2c19cb575fa377763c069e57b8a Mon Sep 17 00:00:00 2001
+From: Ondrej Dubaj <odubaj@redhat.com>
+Date: Thu, 29 Aug 2019 14:31:06 +0200
+Subject: [PATCH] added debug-shell to initrd in systemd version >= 240
+
+---
+ dracut.spec                         | 2 +-
+ modules.d/00systemd/module-setup.sh | 4 ++++
+ 2 files changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/dracut.spec b/dracut.spec
+index 92c7f7bf..0f7eb4bf 100644
+--- a/dracut.spec
++++ b/dracut.spec
+@@ -88,7 +88,7 @@ Recommends: hardlink
+ Recommends: pigz
+ Recommends: kpartx
+ Requires: util-linux >= 2.21
+-Requires: systemd >= 219
++Requires: systemd >= 239-23
+ Requires: systemd-udev >= 219
+ Requires: procps-ng
+ %else
+diff --git a/modules.d/00systemd/module-setup.sh b/modules.d/00systemd/module-setup.sh
+index ed177826..e4a3f323 100755
+--- a/modules.d/00systemd/module-setup.sh
++++ b/modules.d/00systemd/module-setup.sh
+@@ -31,6 +31,10 @@ install() {
+         exit 1
+     fi
+ 
++    inst_multiple -o \
++        $systemdutildir/system-generators/systemd-debug-generator \
++        $systemdsystemunitdir/debug-shell.service
++
+     inst_multiple -o \
+         $systemdutildir/systemd \
+         $systemdutildir/systemd-coredump \
+
diff --git a/SOURCES/0065.patch b/SOURCES/0065.patch
new file mode 100644
index 0000000..9796dec
--- /dev/null
+++ b/SOURCES/0065.patch
@@ -0,0 +1,32 @@
+From 543b1cff3c84af062da4d27ba81a9d394f44e4b6 Mon Sep 17 00:00:00 2001
+From: Lukas Nykryn <lnykryn@redhat.com>
+Date: Tue, 11 Feb 2020 14:14:20 +0100
+Subject: [PATCH] dhclient-script: ipv6 uses different variables for
+ nameservers
+
+new_domain_name_servers and new_domain_search is only provided vit IPv4
+
+see: https://src.fedoraproject.org/rpms/dhcp/blob/HEAD/f/dhclient-script#_148
+(cherry picked from commit 962310483f473dbc8d71d70ba464d273b9808d31)
+
+Resolves: #1795276
+---
+ modules.d/35network-legacy/dhclient-script.sh | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/modules.d/35network-legacy/dhclient-script.sh b/modules.d/35network-legacy/dhclient-script.sh
+index fc6ed0a3..f1a60005 100755
+--- a/modules.d/35network-legacy/dhclient-script.sh
++++ b/modules.d/35network-legacy/dhclient-script.sh
+@@ -75,8 +75,8 @@ setup_interface() {
+ 
+ setup_interface6() {
+     domain=$new_domain_name
+-    search=$(printf -- "$new_domain_search")
+-    namesrv=$new_domain_name_servers
++    search=$(printf -- "$new_dhcp6_domain_search")
++    namesrv=$new_dhcp6_name_servers
+     hostname=$new_host_name
+     [ -n "$new_dhcp_lease_time" ] && lease_time=$new_dhcp_lease_time
+     [ -n "$new_max_life" ] && lease_time=$new_max_life
+
diff --git a/SOURCES/0066.patch b/SOURCES/0066.patch
new file mode 100644
index 0000000..6d9c266
--- /dev/null
+++ b/SOURCES/0066.patch
@@ -0,0 +1,36 @@
+From 3468310486d0da8d2a6c6bdcddc598b7b8ce5587 Mon Sep 17 00:00:00 2001
+From: Lukas Nykryn <lnykryn@redhat.com>
+Date: Tue, 4 Feb 2020 14:18:01 +0100
+Subject: [PATCH] Revert "wait for IPv6 RA if using none/static IPv6
+ assignment"
+
+This reverts commit c603419030136570b5944dc4620f62d07b9e82bb.
+
+wait_for_ipv6_dad_link is only called from dhclient script,
+so the original intent "wait for IPv6 RA if using none/static IPv6 assignment"
+does not seem to be correct.
+
+Anyway, this brings an issue on isolated networks, where you don't
+have any routes outside. dhclient-script hangs on this check
+and after it times out, dhclient is able to set the address normally.
+
+(cherry picked from commit 76f6566fd777e0ee20416061ecb795e8daef33e1)
+
+Resolves: #1795276
+---
+ modules.d/40network/net-lib.sh | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/modules.d/40network/net-lib.sh b/modules.d/40network/net-lib.sh
+index dcb53804..0f3ca6a8 100755
+--- a/modules.d/40network/net-lib.sh
++++ b/modules.d/40network/net-lib.sh
+@@ -655,7 +655,6 @@ wait_for_ipv6_dad_link() {
+     while [ $cnt -lt $timeout ]; do
+         [ -n "$(ip -6 addr show dev "$1" scope link)" ] \
+             && [ -z "$(ip -6 addr show dev "$1" scope link tentative)" ] \
+-            && [ -n "$(ip -6 route list proto ra dev "$1" | grep ^default)" ] \
+             && return 0
+         [ -n "$(ip -6 addr show dev "$1" scope link dadfailed)" ] \
+             && return 1
+
diff --git a/SOURCES/0067.patch b/SOURCES/0067.patch
new file mode 100644
index 0000000..ccf1829
--- /dev/null
+++ b/SOURCES/0067.patch
@@ -0,0 +1,45 @@
+From 7b14ab060e50d0035e4c0b1979d49234aa8896b0 Mon Sep 17 00:00:00 2001
+From: Lukas Nykryn <lnykryn@redhat.com>
+Date: Mon, 10 Feb 2020 14:03:30 +0100
+Subject: [PATCH] 40network: bump rd.net.timeout.carrier to 10 seconds
+
+On some devices kernel currently takes 5.2 seconds to detect carrier,
+so let's make the default in dracut bit more sensible.
+
+See also https://bugzilla.redhat.com/show_bug.cgi?id=1772010
+
+(cherry picked from commit 579fbb9fc4205dc216b9642238739d898d2ed02d)
+
+Resolves: #1798761
+---
+ dracut.cmdline.7.asc           | 2 +-
+ modules.d/40network/net-lib.sh | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/dracut.cmdline.7.asc b/dracut.cmdline.7.asc
+index 3cee5a00..ab9a24ad 100644
+--- a/dracut.cmdline.7.asc
++++ b/dracut.cmdline.7.asc
+@@ -645,7 +645,7 @@ NFS
+     Wait <seconds> until IPv6 automatic addresses are assigned. Default is 40 seconds.
+ 
+ **rd.net.timeout.carrier=**__<seconds>__::
+-    Wait <seconds> until carrier is recognized. Default is 5 seconds.
++    Wait <seconds> until carrier is recognized. Default is 10 seconds.
+ 
+ CIFS
+ ~~~
+diff --git a/modules.d/40network/net-lib.sh b/modules.d/40network/net-lib.sh
+index 0f3ca6a8..6babcccf 100755
+--- a/modules.d/40network/net-lib.sh
++++ b/modules.d/40network/net-lib.sh
+@@ -717,7 +717,7 @@ iface_has_carrier() {
+     interface="/sys/class/net/$interface"
+     [ -d "$interface" ] || return 2
+     local timeout="$(getargs rd.net.timeout.carrier=)"
+-    timeout=${timeout:-5}
++    timeout=${timeout:-10}
+     timeout=$(($timeout*10))
+ 
+     linkup "$1"
+
diff --git a/SOURCES/0068.patch b/SOURCES/0068.patch
new file mode 100644
index 0000000..810417a
--- /dev/null
+++ b/SOURCES/0068.patch
@@ -0,0 +1,37 @@
+From fa15223b70c04de0fdbd209a4bb1cb74876f7cfb Mon Sep 17 00:00:00 2001
+From: Jonathan Lebon <jonathan@jlebon.com>
+Date: Wed, 19 Feb 2020 11:11:32 -0500
+Subject: [PATCH] network-legacy/ifup: drop redundant if-statement
+
+No need to check that `$ret` is 0, we're already running inside an
+if-statement block which checks this.
+
+(cherry picked from commit 7795fde44c54bfe753cc07999a4c2f9dd7e2820d)
+
+Resolves: #1807395
+---
+ modules.d/35network-legacy/ifup.sh | 10 ++++------
+ 1 file changed, 4 insertions(+), 6 deletions(-)
+
+diff --git a/modules.d/35network-legacy/ifup.sh b/modules.d/35network-legacy/ifup.sh
+index dd18d70b..eb7d2eb4 100755
+--- a/modules.d/35network-legacy/ifup.sh
++++ b/modules.d/35network-legacy/ifup.sh
+@@ -457,12 +457,10 @@ for p in $(getargs ip=); do
+             dhcp|on|any|dhcp6)
+             ;;
+             *)
+-                if [ $ret -eq 0 ]; then
+-                    setup_net $netif
+-                    source_hook initqueue/online $netif
+-                    if [ -z "$manualup" ]; then
+-                        /sbin/netroot $netif
+-                    fi
++                setup_net $netif
++                source_hook initqueue/online $netif
++                if [ -z "$manualup" ]; then
++                    /sbin/netroot $netif
+                 fi
+                 ;;
+         esac
+
diff --git a/SOURCES/0069.patch b/SOURCES/0069.patch
new file mode 100644
index 0000000..82ee58a
--- /dev/null
+++ b/SOURCES/0069.patch
@@ -0,0 +1,58 @@
+From d6d50a239eebf9da13a0d7892df00a0e725ef9d6 Mon Sep 17 00:00:00 2001
+From: Jonathan Lebon <jonathan@jlebon.com>
+Date: Wed, 19 Feb 2020 10:44:24 -0500
+Subject: [PATCH] network-legacy/ifup: fix ip=dhcp,dhcp6 setup_net logic
+
+Previously, we were doing `setup_net` from `ifup` for any setup that
+wasn't DHCP, since those are already taken care of by `dhclient-script`.
+
+The issue is that the case-statement we use to detect this doesn't catch
+options like `ip=dhcp,dhcp6`.
+
+Fix this by reworking the logic here to just check if a
+`setup_net_$netif.sh` hook exists. If so, then we know that `setup_net`
+will be called for this interface later.
+
+This was causing issues in RHCOS which now ships with `ip=dhcp,dhcp6` to
+support IPv6 environments[1]. The code here would make us do `setup_net`
+pre-emptively which IIUC would then cause the initqueue to finish
+earlier even if we had more udev netif events to process.
+
+[1] https://github.com/coreos/coreos-assembler/pull/1067
+
+Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1803926
+(cherry picked from commit 4985aa8c6e89451996e659a39fec7646e9e25f76)
+
+Cherry-picked from: 4985aa8c6e89451996e659a39fec7646e9e25f76
+Resolves: #1807395
+---
+ modules.d/35network-legacy/ifup.sh | 11 +++++------
+ 1 file changed, 5 insertions(+), 6 deletions(-)
+
+diff --git a/modules.d/35network-legacy/ifup.sh b/modules.d/35network-legacy/ifup.sh
+index eb7d2eb4..61838741 100755
+--- a/modules.d/35network-legacy/ifup.sh
++++ b/modules.d/35network-legacy/ifup.sh
+@@ -453,17 +453,16 @@ for p in $(getargs ip=); do
+             > /tmp/net.$(cat /sys/class/net/${netif}/address).up
+         fi
+ 
+-        case $autoconf in
+-            dhcp|on|any|dhcp6)
+-            ;;
+-            *)
++        # and finally, finish interface set up if there isn't already a script
++        # to do so (which is the case in the dhcp path)
++        if [ ! -e $hookdir/initqueue/setup_net_$netif.sh ]; then
+                 setup_net $netif
+                 source_hook initqueue/online $netif
+                 if [ -z "$manualup" ]; then
+                     /sbin/netroot $netif
+                 fi
+-                ;;
+-        esac
++        fi
++
+         exit $ret
+     fi
+ done
diff --git a/SOURCES/lgpl-2.1.txt b/SOURCES/lgpl-2.1.txt
new file mode 100644
index 0000000..4362b49
--- /dev/null
+++ b/SOURCES/lgpl-2.1.txt
@@ -0,0 +1,502 @@
+                  GNU LESSER GENERAL PUBLIC LICENSE
+                       Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+ 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL.  It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+                            Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it.  You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+  When we speak of free software, we are referring to freedom of use,
+not price.  Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+  To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights.  These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  To protect each distributor, we want to make it very clear that
+there is no warranty for the free library.  Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+  Finally, software patents pose a constant threat to the existence of
+any free program.  We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder.  Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+  Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License.  This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License.  We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+  When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library.  The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom.  The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+  We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License.  It also provides other free software developers Less
+of an advantage over competing non-free programs.  These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries.  However, the Lesser license provides advantages in certain
+special circumstances.
+
+  For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard.  To achieve this, non-free programs must be
+allowed to use the library.  A more frequent case is that a free
+library does the same job as widely used non-free libraries.  In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+  In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software.  For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+  Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+                  GNU LESSER GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+  6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Use a suitable shared library mechanism for linking with the
+    Library.  A suitable mechanism is one that (1) uses at run time a
+    copy of the library already present on the user's computer system,
+    rather than copying library functions into the executable, and (2)
+    will operate properly with a modified version of the library, if
+    the user installs one, as long as the modified version is
+    interface-compatible with the version that the work was made with.
+
+    c) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    d) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    e) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+                            NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+                     END OF TERMS AND CONDITIONS
+
+           How to Apply These Terms to Your New Libraries
+
+  If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change.  You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+  To apply these terms, attach the following notices to the library.  It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the library's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2.1 of the License, or (at your option) any later version.
+
+    This library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Lesser General Public License for more details.
+
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the
+  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+  <signature of Ty Coon>, 1 April 1990
+  Ty Coon, President of Vice
+
+That's all there is to it!
diff --git a/SPECS/dracut.spec b/SPECS/dracut.spec
new file mode 100644
index 0000000..1120af1
--- /dev/null
+++ b/SPECS/dracut.spec
@@ -0,0 +1,1976 @@
+%define dracutlibdir %{_prefix}/lib/dracut
+%bcond_without doc
+
+# We ship a .pc file but don't want to have a dep on pkg-config. We
+# strip the automatically generated dep here and instead co-own the
+# directory.
+%global __requires_exclude pkg-config
+%define dist_free_release 70.git20200228
+
+Name: dracut
+Version: 049
+Release: %{dist_free_release}%{?dist}
+
+Summary: Initramfs generator using udev
+%if 0%{?fedora} || 0%{?rhel}
+Group: System Environment/Base
+%endif
+%if 0%{?suse_version}
+Group: System/Base
+%endif
+
+# The entire source code is GPLv2+
+# except install/* which is LGPLv2+
+License: GPLv2+ and LGPLv2+
+
+URL: https://dracut.wiki.kernel.org/
+
+# Source can be generated by
+# http://git.kernel.org/?p=boot/dracut/dracut.git;a=snapshot;h=%%{version};sf=tgz
+Source0: http://www.kernel.org/pub/linux/utils/boot/dracut/dracut-%{version}.tar.xz
+Patch1: 0001.patch
+Patch2: 0002.patch
+Patch3: 0003.patch
+Patch4: 0004.patch
+Patch5: 0005.patch
+Patch6: 0006.patch
+Patch7: 0007.patch
+Patch8: 0008.patch
+Patch9: 0009.patch
+Patch10: 0010.patch
+Patch11: 0011.patch
+Patch12: 0012.patch
+Patch13: 0013.patch
+Patch14: 0014.patch
+Patch15: 0015.patch
+Patch16: 0016.patch
+Patch17: 0017.patch
+Patch18: 0018.patch
+Patch19: 0019.patch
+Patch20: 0020.patch
+Patch21: 0021.patch
+Patch22: 0022.patch
+Patch23: 0023.patch
+Patch24: 0024.patch
+Patch25: 0025.patch
+Patch26: 0026.patch
+Patch27: 0027.patch
+Patch28: 0028.patch
+Patch29: 0029.patch
+Patch30: 0030.patch
+Patch31: 0031.patch
+Patch32: 0032.patch
+Patch33: 0033.patch
+Patch34: 0034.patch
+Patch35: 0035.patch
+Patch36: 0036.patch
+Patch37: 0037.patch
+Patch38: 0038.patch
+Patch39: 0039.patch
+Patch40: 0040.patch
+Patch41: 0041.patch
+Patch42: 0042.patch
+Patch43: 0043.patch
+Patch44: 0044.patch
+Patch45: 0045.patch
+Patch46: 0046.patch
+Patch47: 0047.patch
+Patch48: 0048.patch
+Patch49: 0049.patch
+Patch50: 0050.patch
+Patch51: 0051.patch
+Patch52: 0052.patch
+Patch53: 0053.patch
+Patch54: 0054.patch
+Patch55: 0055.patch
+Patch56: 0056.patch
+Patch57: 0057.patch
+Patch58: 0058.patch
+Patch59: 0059.patch
+Patch60: 0060.patch
+Patch61: 0061.patch
+Patch62: 0062.patch
+Patch63: 0063.patch
+Patch64: 0064.patch
+Patch65: 0065.patch
+Patch66: 0066.patch
+Patch67: 0067.patch
+Patch68: 0068.patch
+Patch69: 0069.patch
+
+Source1: https://www.gnu.org/licenses/lgpl-2.1.txt
+
+BuildRequires: bash
+BuildRequires: git
+BuildRequires: kmod-devel >= 23
+BuildRequires: gcc
+
+%if 0%{?fedora} || 0%{?rhel}
+BuildRequires: pkgconfig
+BuildRequires: systemd
+%endif
+%if 0%{?fedora}
+BuildRequires: bash-completion
+%endif
+
+%if %{with doc}
+%if 0%{?fedora} || 0%{?rhel}
+BuildRequires: docbook-style-xsl docbook-dtds libxslt
+%endif
+
+%if 0%{?suse_version}
+BuildRequires: docbook-xsl-stylesheets libxslt
+%endif
+
+BuildRequires: asciidoc
+%endif
+
+%if 0%{?suse_version} > 9999
+Obsoletes: mkinitrd < 2.6.1
+Provides: mkinitrd = 2.6.1
+%endif
+
+Obsoletes: dracut-fips <= 047
+Provides:  dracut-fips = %{version}-%{release}
+Obsoletes: dracut-fips-aesni <= 047
+Provides:  dracut-fips-aesni = %{version}-%{release}
+
+Obsoletes: dracut-kernel < 005
+Provides:  dracut-kernel = %{version}-%{release}
+
+Obsoletes: dracut < 030
+Obsoletes: dracut-norescue < 030
+Provides:  dracut-norescue = %{version}-%{release}
+
+Requires: bash >= 4
+Requires: coreutils
+Requires: cpio
+Requires: filesystem >= 2.1.0
+Requires: findutils
+Requires: grep
+Requires: kmod
+Requires: sed
+Requires: xz
+Requires: gzip
+
+%if 0%{?fedora} || 0%{?rhel}
+Recommends: hardlink
+Recommends: pigz
+Recommends: kpartx
+Requires: util-linux >= 2.21
+Requires: systemd >= 239-23
+Requires: systemd-udev >= 219
+Requires: procps-ng
+%else
+Requires: hardlink
+Requires: gzip
+Requires: kpartx
+Requires: udev > 166
+Requires: util-linux-ng >= 2.21
+%endif
+
+%if 0%{?fedora} || 0%{?rhel} || 0%{?suse_version}
+Requires: libkcapi-hmaccalc
+%endif
+
+%description
+dracut contains tools to create bootable initramfses for the Linux
+kernel. Unlike previous implementations, dracut hard-codes as little
+as possible into the initramfs. dracut contains various modules which
+are driven by the event-based udev. Having root on MD, DM, LVM2, LUKS
+is supported as well as NFS, iSCSI, NBD, FCoE with the dracut-network
+package.
+
+%package network
+Summary: dracut modules to build a dracut initramfs with network support
+%if 0%{?_module_build}
+# In the module-build-service, we have pieces of dracut provided by different
+# modules ("base-runtime" provides most functionality, but we need
+# dracut-network in "installer". Since these two modules build with separate
+# dist-tags, we need to reduce this strict requirement to ignore the dist-tag.
+Requires: %{name} >= %{version}-%{dist_free_release}
+%else
+Requires: %{name} = %{version}-%{release}
+%endif
+Requires: iputils
+Requires: iproute
+Requires: dhclient
+Obsoletes: dracut-generic < 008
+Provides:  dracut-generic = %{version}-%{release}
+
+%description network
+This package requires everything which is needed to build a generic
+all purpose initramfs with network support with dracut.
+
+%package caps
+Summary: dracut modules to build a dracut initramfs which drops capabilities
+Requires: %{name} = %{version}-%{release}
+Requires: libcap
+
+%description caps
+This package requires everything which is needed to build an
+initramfs with dracut, which drops capabilities.
+
+%package live
+Summary: dracut modules to build a dracut initramfs with live image capabilities
+%if 0%{?_module_build}
+# See the network subpackage comment.
+Requires: %{name} >= %{version}-%{dist_free_release}
+%else
+Requires: %{name} = %{version}-%{release}
+%endif
+Requires: %{name}-network = %{version}-%{release}
+Requires: tar gzip coreutils bash device-mapper curl
+%if 0%{?fedora}
+Requires: fuse ntfs-3g
+%endif
+
+%description live
+This package requires everything which is needed to build an
+initramfs with dracut, with live image capabilities, like Live CDs.
+
+%package config-generic
+Summary: dracut configuration to turn off hostonly image generation
+Requires: %{name} = %{version}-%{release}
+Obsoletes: dracut-nohostonly < 030
+Provides:  dracut-nohostonly = %{version}-%{release}
+
+%description config-generic
+This package provides the configuration to turn off the host specific initramfs
+generation with dracut and generates a generic image by default.
+
+%package config-rescue
+Summary: dracut configuration to turn on rescue image generation
+Requires: %{name} = %{version}-%{release}
+Obsoletes: dracut < 030
+
+%description config-rescue
+This package provides the configuration to turn on the rescue initramfs
+generation with dracut.
+
+%package tools
+Summary: dracut tools to build the local initramfs
+Requires: %{name} = %{version}-%{release}
+
+%description tools
+This package contains tools to assemble the local initrd and host configuration.
+
+%package squash
+Summary: dracut module to build an initramfs with most files in a squashfs image
+Requires: %{name} = %{version}-%{release}
+Requires: squashfs-tools
+
+%description squash
+This package provides a dracut module to build an initramfs, but store most files
+in a squashfs image, result in a smaller initramfs size and reduce runtime memory
+usage.
+
+%prep
+%autosetup -n %{name}-%{version} -S git_am
+cp %{SOURCE1} .
+
+%build
+%configure  --systemdsystemunitdir=%{_unitdir} \
+            --bashcompletiondir=$(pkg-config --variable=completionsdir bash-completion) \
+            --libdir=%{_prefix}/lib \
+%if %{without doc}
+            --disable-documentation \
+%endif
+            ${NULL}
+
+make %{?_smp_mflags}
+
+%install
+make %{?_smp_mflags} install \
+     DESTDIR=$RPM_BUILD_ROOT \
+     libdir=%{_prefix}/lib
+
+echo "DRACUT_VERSION=%{version}-%{release}" > $RPM_BUILD_ROOT/%{dracutlibdir}/dracut-version.sh
+
+%if 0%{?fedora} == 0 && 0%{?rhel} == 0 && 0%{?suse_version} == 0
+rm -fr -- $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/01fips
+%endif
+
+%if %{defined _unitdir}
+# for systemd, better use systemd-bootchart
+rm -fr -- $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/00bootchart
+%endif
+
+# we do not support dash in the initramfs
+rm -fr -- $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/00dash
+
+# remove gentoo specific modules
+rm -fr -- $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/50gensplash
+
+%if %{defined _unitdir}
+# with systemd IMA and selinux modules do not make sense
+rm -fr -- $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/96securityfs
+rm -fr -- $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/97masterkey
+rm -fr -- $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/98integrity
+%endif
+
+%ifnarch s390 s390x
+# remove architecture specific modules
+rm -fr -- $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/80cms
+rm -fr -- $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/81cio_ignore
+rm -fr -- $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/91zipl
+rm -fr -- $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/95dasd
+rm -fr -- $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/95dasd_mod
+rm -fr -- $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/95dasd_rules
+rm -fr -- $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/95dcssblk
+rm -fr -- $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/95qeth_rules
+rm -fr -- $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/95zfcp
+rm -fr -- $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/95zfcp_rules
+rm -fr -- $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/95znet
+%else
+rm -fr -- $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/00warpclock
+%endif
+
+mkdir -p $RPM_BUILD_ROOT/boot/dracut
+mkdir -p $RPM_BUILD_ROOT/var/lib/dracut/overlay
+mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/log
+touch $RPM_BUILD_ROOT%{_localstatedir}/log/dracut.log
+mkdir -p $RPM_BUILD_ROOT%{_sharedstatedir}/initramfs
+
+%if 0%{?fedora} || 0%{?rhel}
+install -m 0644 dracut.conf.d/fedora.conf.example $RPM_BUILD_ROOT%{dracutlibdir}/dracut.conf.d/01-dist.conf
+rm -f $RPM_BUILD_ROOT%{_mandir}/man?/*suse*
+%endif
+%if 0%{?suse_version}
+install -m 0644 dracut.conf.d/suse.conf.example   $RPM_BUILD_ROOT%{dracutlibdir}/dracut.conf.d/01-dist.conf
+%endif
+
+%if 0%{?fedora} == 0 && 0%{?rhel} == 0 && 0%{?suse_version} <= 9999
+rm -f -- $RPM_BUILD_ROOT%{_bindir}/mkinitrd
+rm -f -- $RPM_BUILD_ROOT%{_bindir}/lsinitrd
+%endif
+
+%if 0%{?fedora} || 0%{?rhel}
+echo 'hostonly="no"' > $RPM_BUILD_ROOT%{dracutlibdir}/dracut.conf.d/02-generic-image.conf
+echo 'dracut_rescue_image="yes"' > $RPM_BUILD_ROOT%{dracutlibdir}/dracut.conf.d/02-rescue.conf
+
+# FIXME: remove after F30
+mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/kernel/postinst.d
+install -m 0755 51-dracut-rescue-postinst.sh $RPM_BUILD_ROOT%{_sysconfdir}/kernel/postinst.d/51-dracut-rescue-postinst.sh
+%endif
+
+%files
+%if %{with doc}
+%doc README HACKING TODO AUTHORS NEWS dracut.html dracut.png dracut.svg
+%endif
+%{!?_licensedir:%global license %%doc}
+%license COPYING lgpl-2.1.txt
+%{_bindir}/dracut
+%{_datadir}/bash-completion/completions/dracut
+%{_datadir}/bash-completion/completions/lsinitrd
+%if 0%{?fedora} || 0%{?rhel} || 0%{?suse_version} > 9999
+%{_bindir}/mkinitrd
+%{_bindir}/lsinitrd
+%endif
+%dir %{dracutlibdir}
+%dir %{dracutlibdir}/modules.d
+%{dracutlibdir}/dracut-functions.sh
+%{dracutlibdir}/dracut-init.sh
+%{dracutlibdir}/dracut-functions
+%{dracutlibdir}/dracut-version.sh
+%{dracutlibdir}/dracut-logger.sh
+%{dracutlibdir}/dracut-initramfs-restore
+%{dracutlibdir}/dracut-install
+%{dracutlibdir}/skipcpio
+%config(noreplace) %{_sysconfdir}/dracut.conf
+%if 0%{?fedora} || 0%{?suse_version} || 0%{?rhel}
+%{dracutlibdir}/dracut.conf.d/01-dist.conf
+%endif
+%dir %{_sysconfdir}/dracut.conf.d
+%dir %{dracutlibdir}/dracut.conf.d
+%dir %{_datadir}/pkgconfig
+%{_datadir}/pkgconfig/dracut.pc
+
+%if %{with doc}
+%{_mandir}/man8/dracut.8*
+%{_mandir}/man8/*service.8*
+%if 0%{?fedora} || 0%{?rhel} || 0%{?suse_version} > 9999
+%{_mandir}/man8/mkinitrd.8*
+%{_mandir}/man1/lsinitrd.1*
+%endif
+%{_mandir}/man7/dracut.kernel.7*
+%{_mandir}/man7/dracut.cmdline.7*
+%{_mandir}/man7/dracut.modules.7*
+%{_mandir}/man7/dracut.bootup.7*
+%{_mandir}/man5/dracut.conf.5*
+%endif
+
+%if %{undefined _unitdir}
+%{dracutlibdir}/modules.d/00bootchart
+%endif
+%{dracutlibdir}/modules.d/00bash
+%{dracutlibdir}/modules.d/00systemd
+%ifnarch s390 s390x
+%{dracutlibdir}/modules.d/00warpclock
+%endif
+%if 0%{?fedora} || 0%{?rhel} || 0%{?suse_version}
+%{dracutlibdir}/modules.d/01fips
+%endif
+%{dracutlibdir}/modules.d/01systemd-initrd
+%{dracutlibdir}/modules.d/03modsign
+%{dracutlibdir}/modules.d/03rescue
+%{dracutlibdir}/modules.d/04watchdog
+%{dracutlibdir}/modules.d/05busybox
+%{dracutlibdir}/modules.d/06rngd
+%{dracutlibdir}/modules.d/10i18n
+%{dracutlibdir}/modules.d/30convertfs
+%{dracutlibdir}/modules.d/45url-lib
+%{dracutlibdir}/modules.d/50drm
+%{dracutlibdir}/modules.d/50plymouth
+%{dracutlibdir}/modules.d/80lvmmerge
+%{dracutlibdir}/modules.d/90btrfs
+%{dracutlibdir}/modules.d/90crypt
+%{dracutlibdir}/modules.d/90dm
+%{dracutlibdir}/modules.d/90dmraid
+%{dracutlibdir}/modules.d/90kernel-modules
+%{dracutlibdir}/modules.d/90kernel-modules-extra
+%{dracutlibdir}/modules.d/90lvm
+%{dracutlibdir}/modules.d/90mdraid
+%{dracutlibdir}/modules.d/90multipath
+%{dracutlibdir}/modules.d/90stratis
+%{dracutlibdir}/modules.d/90qemu
+%{dracutlibdir}/modules.d/91crypt-gpg
+%{dracutlibdir}/modules.d/91crypt-loop
+%{dracutlibdir}/modules.d/95debug
+%{dracutlibdir}/modules.d/95fstab-sys
+%{dracutlibdir}/modules.d/95lunmask
+%{dracutlibdir}/modules.d/95resume
+%{dracutlibdir}/modules.d/95rootfs-block
+%{dracutlibdir}/modules.d/95terminfo
+%{dracutlibdir}/modules.d/95udev-rules
+%{dracutlibdir}/modules.d/95virtfs
+%ifarch s390 s390x
+%{dracutlibdir}/modules.d/80cms
+%{dracutlibdir}/modules.d/81cio_ignore
+%{dracutlibdir}/modules.d/91zipl
+%{dracutlibdir}/modules.d/95dasd
+%{dracutlibdir}/modules.d/95dasd_mod
+%{dracutlibdir}/modules.d/95dasd_rules
+%{dracutlibdir}/modules.d/95dcssblk
+%{dracutlibdir}/modules.d/95qeth_rules
+%{dracutlibdir}/modules.d/95zfcp
+%{dracutlibdir}/modules.d/95zfcp_rules
+%endif
+%if %{undefined _unitdir}
+%{dracutlibdir}/modules.d/96securityfs
+%{dracutlibdir}/modules.d/97masterkey
+%{dracutlibdir}/modules.d/98integrity
+%endif
+%{dracutlibdir}/modules.d/97biosdevname
+%{dracutlibdir}/modules.d/98dracut-systemd
+%{dracutlibdir}/modules.d/98ecryptfs
+%{dracutlibdir}/modules.d/98pollcdrom
+%{dracutlibdir}/modules.d/98selinux
+%{dracutlibdir}/modules.d/98syslog
+%{dracutlibdir}/modules.d/98usrmount
+%{dracutlibdir}/modules.d/99base
+%{dracutlibdir}/modules.d/99fs-lib
+%{dracutlibdir}/modules.d/99shutdown
+%attr(0644,root,root) %ghost %config(missingok,noreplace) %{_localstatedir}/log/dracut.log
+%dir %{_sharedstatedir}/initramfs
+%if %{defined _unitdir}
+%{_unitdir}/dracut-shutdown.service
+%{_unitdir}/sysinit.target.wants/dracut-shutdown.service
+%{_unitdir}/dracut-cmdline.service
+%{_unitdir}/dracut-initqueue.service
+%{_unitdir}/dracut-mount.service
+%{_unitdir}/dracut-pre-mount.service
+%{_unitdir}/dracut-pre-pivot.service
+%{_unitdir}/dracut-pre-trigger.service
+%{_unitdir}/dracut-pre-udev.service
+%{_unitdir}/initrd.target.wants/dracut-cmdline.service
+%{_unitdir}/initrd.target.wants/dracut-initqueue.service
+%{_unitdir}/initrd.target.wants/dracut-mount.service
+%{_unitdir}/initrd.target.wants/dracut-pre-mount.service
+%{_unitdir}/initrd.target.wants/dracut-pre-pivot.service
+%{_unitdir}/initrd.target.wants/dracut-pre-trigger.service
+%{_unitdir}/initrd.target.wants/dracut-pre-udev.service
+
+%endif
+%if 0%{?fedora} || 0%{?rhel}
+%{_prefix}/lib/kernel/install.d/50-dracut.install
+%endif
+
+%files network
+%{dracutlibdir}/modules.d/02systemd-networkd
+%{dracutlibdir}/modules.d/35network-manager
+%{dracutlibdir}/modules.d/35network-legacy
+%{dracutlibdir}/modules.d/40network
+%{dracutlibdir}/modules.d/45ifcfg
+%{dracutlibdir}/modules.d/90kernel-network-modules
+%{dracutlibdir}/modules.d/90qemu-net
+%{dracutlibdir}/modules.d/95cifs
+%{dracutlibdir}/modules.d/95fcoe
+%{dracutlibdir}/modules.d/95fcoe-uefi
+%{dracutlibdir}/modules.d/95iscsi
+%{dracutlibdir}/modules.d/95nbd
+%{dracutlibdir}/modules.d/95nfs
+%{dracutlibdir}/modules.d/95ssh-client
+%ifarch s390 s390x
+%{dracutlibdir}/modules.d/95znet
+%endif
+%{dracutlibdir}/modules.d/99uefi-lib
+
+%files caps
+%{dracutlibdir}/modules.d/02caps
+
+%files live
+%{dracutlibdir}/modules.d/99img-lib
+%{dracutlibdir}/modules.d/90dmsquash-live
+%{dracutlibdir}/modules.d/90dmsquash-live-ntfs
+%{dracutlibdir}/modules.d/90livenet
+
+%files tools
+%if %{with doc}
+%doc %{_mandir}/man8/dracut-catimages.8*
+%endif
+
+%{_bindir}/dracut-catimages
+%dir /boot/dracut
+%dir /var/lib/dracut
+%dir /var/lib/dracut/overlay
+
+%files squash
+%{dracutlibdir}/modules.d/99squash
+
+%files config-generic
+%{dracutlibdir}/dracut.conf.d/02-generic-image.conf
+
+%files config-rescue
+%{dracutlibdir}/dracut.conf.d/02-rescue.conf
+%if 0%{?fedora} || 0%{?rhel}
+%{_prefix}/lib/kernel/install.d/51-dracut-rescue.install
+# FIXME: remove after F30
+%{_sysconfdir}/kernel/postinst.d/51-dracut-rescue-postinst.sh
+%endif
+
+%changelog
+* Fri Feb 28 2020 Lukas Nykryn <lnykryn@redhat.com> - 049-70.git20200228
+- network-legacy/ifup: fix ip=dhcp,dhcp6 setup_net logic
+
+* Tue Feb 11 2020 Lukas Nykryn <lnykryn@redhat.com> - 049-68.git20200211
+- Revert "wait for IPv6 RA if using none/static IPv6 assignment"
+- dhclient-script: ipv6 uses different variables for nameservers
+- 40network: bump rd.net.timeout.carrier to 10 seconds
+
+* Wed Feb 05 2020 Lukas Nykryn <lnykryn@redhat.com> - 049-65.git20200205
+- added debug-shell to initrd
+
+* Thu Jan 23 2020 Harald Hoyer <harald@redhat.com> - 049-64.git20200123
+- network-legacy/ifup: nuke pid and lease files if dhclient failed
+Resolves: rhbz#1787620
+
+* Tue Jan 14 2020 Lukas Nykryn <lnykryn@redhat.com> - 049-63.git20200114
+- network-legacy/ifup: fix typo when calling dhclient --timeout
+- network-legacy/ifup: dhclient should be started in oneshot mode
+- modules/network-manager: Install `ip`
+
+* Fri Nov 29 2019 Lukas Nykryn <lnykryn@redhat.com> - 049-60.git20191129
+- 99squash: Only start the cleaner on switch-root
+- net-lib: check if addr exists before checking for dad state
+- always include sg module
+
+* Thu Oct 31 2019 Lukas Nykryn <lnykryn@redhat.com> - 049-57.git20191031
+- various fixes to adapt to RHCOS and FCOS
+
+* Tue Oct 01 2019 Lukas Nykryn <lnykryn@redhat.com> - 049-53.git20191001
+- apply patches to allow enablement of nm-initrd-generator
+
+* Fri Sep 06 2019 Lukas Nykryn <lnykryn@redhat.com> - 049-27.git20190906
+- modules.d: fix udev rules detection of multipath devices
+
+* Tue Aug 06 2019 Lukas Nykryn <lnykryn@redhat.com> - 049-26.git20190806
+- net-lib: fix typo $li -> $_li
+
+* Tue Aug 06 2019 Lukas Nykryn <lnykryn@redhat.com> - 049-25.git20190806
+- 90kernel-modules-extra: don't resolve symlinks before instmod
+
+* Fri Aug 02 2019 Lukas Nykryn <lnykryn@redhat.com> - 049-24.git20190802
+- 95fcoe: load 'libfcoe' module as a fallback
+- 99base: enable the initqueue in both 'dracut --add-device' and 'dracut --mount' cases
+- dracut: let module handling function accept optional path option
+- squash: also squash systemctl if switch-root is not needed
+- squash: fix and simplify required_in_root
+- squash: squash systemd binary and udevadm
+
+* Thu Jul 25 2019 Lukas Nykryn <lnykryn@redhat.com> - 049-18.git20190725
+- dracut.spec: add 06rngd
+
+* Thu Jul 25 2019 Lukas Nykryn <lnykryn@redhat.com> - 049-17.git20190725
+- rngd: new module running early during boot to help generating entropy when system's default entropy sources are poor (e.g. use of SSD disks or UEFI RNG not available)
+
+* Tue Jul 16 2019 Lukas Nykryn <lnykryn@redhat.com> - 049-16.git20190716
+- 01fips: add cfb cipher
+
+* Mon Jul 08 2019 Lukas Nykryn <lnykryn@redhat.com> - 049-15.git20190708
+- network: skip already enslaved interfaces
+
+* Wed Jun 26 2019 Lukas Nykryn <lnykryn@redhat.com> - 049-14.git20190626
+- fips: ensure fs module for /boot is installed
+
+* Fri Jun 14 2019 Lukas Nykryn <lnykryn@redhat.com> - 049-13.git20190614
+- fips: split loading the crypto modules and checking the kernel
+
+* Mon Jun 03 2019 Lukas Nykryn <lnykryn@redhat.com> - 049-12.git20190603
+- 95iscsi: rd.iscsi.initiator should have priority over stored configuration
+- net-lib: strstr is not for globs
+
+* Tue Jan 15 2019 Lukas Nykryn <lnykryn@redhat.com> - 049-10.git20190115
+- 95iscsi: decouple iscsi from sysinit.target
+
+* Tue Oct 30 2018 Lukas Nykryn <lnykryn@redhat.com> - 049-8.git20181030
+- dracut.install: call dracut with --force
+- 99squash: Don't clean up squahfs on isolate
+
+* Mon Oct 15 2018 Lukas Nykryn <lnykryn@redhat.com> - 049-5.git20181015
+- 40network: Don't include 40network by default
+
+* Tue Oct 09 2018 Lukas Nykryn <lnykryn@redhat.com> - 049-4.git20181009
+- rebase to 049
+
+* Tue Sep 04 2018 Lukas Nykryn <lnykryn@redhat.com> - 048-37.git20180904
+- dmsquash-live/apply-live-updates: Test proper file link.
+
+* Mon Sep 03 2018 Dan Horák <dhorak@redhat.com> - 048-37.git20180831
+- apply the reflink patch
+
+* Wed Aug 29 2018 Lukas Nykryn <lnykryn@redhat.com> - 048-36.git20180831
+- merge upstream master
+- rever --reflink=auto usage
+
+* Tue Aug 14 2018 Lukas Nykryn <lnykryn@redhat.com> - 048-34.git20180814
+- TEST-50-MULTINIC/test.sh: fixed server startup
+- kernel-network-modules: add vlan kernel modules
+- test: fixed KVERSION and qemu backwards compatiblity
+- TEST-70-BONDBRIDGETEAMVLAN: load vlan kernel modules
+- test: also output server.log on failure
+- TEST-50-MULTINIC: s/--device/-device
+- enable parallel test suite
+- TEST-31-ISCSI-MULTI: use different port than TEST-30
+- load modules earlier for iscsi via dhcp root-path
+- test/{TEST-50-MULTINIC,TEST-70-BONDBRIDGETEAMVLAN}: use qemu-3.0 syntax
+- multipath-shutdown: fix shell syntax
+- dracut.spec: remove warpclock from z-series, not the other way round
+- iscsi: remove $() where it does not fit
+- mdraid: better handling of various UUID formats
+- dracut-functions: fix the word splitting
+- Add gpio and pinctrl drivers for arm*/aarch64
+- mdraid/parse-md.sh: also accept rd.md.uuid with ":"
+- spec: sort modules
+- spec: warpclock is not available on s390 or s390x
+- dracut.spec: Remove needless use of defattr
+- dracut.spec: add 00warpclock dracut module
+- Bring back 51-dracut-rescue-postinst.sh
+- lsinitrd: update help message and man page
+- lsinitrd: optimize performance when handling multiple files
+- lsinitrd: allow to only unpack certain files
+- NEWS: forgot to update the latest version
+- 00warpclock: Set correct timezone
+- dracut-install: skip modules with empty path
+- Record loaded kernel modules when hostonly mode is enabled
+- modules.d/95fcoe/cleanup-fcoe.sh: chmod +x
+- TEST-40-NBD: disable for now
+- TEST-30-ISCSI: readd multiple target test
+
+* Wed Jul 11 2018 Lukas Nykryn <lnykryn@redhat.com> - 048-1.1
+- return some old provides
+
+* Fri Jul 06 2018 Harald Hoyer <harald@redhat.com> - 048-1
+- version 048
+
+* Fri Jun 22 2018 Adam Williamson <awilliam@redhat.com> - 047-34.git20180604.1
+- Test build with proposed fix for #1593028
+
+* Mon Jun 04 2018 Harald Hoyer <harald@redhat.com> - 047-34.git20180604
+- git snapshot
+
+* Tue May 15 2018 Harald Hoyer <harald@redhat.com> - 047-32.git20180515
+- git snapshot
+
+* Mon Mar 05 2018 Harald Hoyer <harald@redhat.com> - 047-8
+- git snapshot
+
+* Tue Feb 27 2018 Javier Martinez Canillas <javierm@redhat.com> - 047-2
+- Allow generating initramfs images on the /boot directory
+
+* Mon Feb 19 2018 Harald Hoyer <harald@redhat.com> - 047-1
+- version 047
+
+* Wed Feb 07 2018 Fedora Release Engineering <releng@fedoraproject.org> - 046-92.git20180118.1
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
+
+* Thu Jan 18 2018 Harald Hoyer <harald@redhat.com> - 046-92
+- git snapshot
+
+* Fri Jan 05 2018 Harald Hoyer <harald@redhat.com> - 046-64
+- git snapshot
+
+* Fri Dec 01 2017 Harald Hoyer <harald@redhat.com> - 046-36
+- git snapshot
+
+* Wed Nov 29 2017 Harald Hoyer <harald@redhat.com> - 046-33
+- git snapshot
+
+* Thu Oct 12 2017 Peter Robinson <pbrobinson@fedoraproject.org> 046-20
+- Add fix for some ARM SBCs
+
+* Tue Oct 10 2017 Harald Hoyer <harald@redhat.com> - 046-19
+- git snapshot
+
+* Thu Aug 24 2017 Harald Hoyer <harald@redhat.com> - 046-7
+- git snapshot
+
+* Fri Aug 11 2017 Harald Hoyer <harald@redhat.com> - 046-2
+- add support for dist-tag less build
+
+* Fri Aug 11 2017 Harald Hoyer <harald@redhat.com> - 046-1
+- version 046
+
+* Mon Aug  7 2017 Peter Robinson <pbrobinson@fedoraproject.org> 045-21.git20170515
+- Add upstream patches to fix a number of ARM devices with generic initrd
+
+* Wed Aug 02 2017 Fedora Release Engineering <releng@fedoraproject.org> - 045-20.git20170515
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
+
+* Wed Jul 26 2017 Fedora Release Engineering <releng@fedoraproject.org> - 045-19.git20170515
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
+
+* Mon May 15 2017 Harald Hoyer <harald@redhat.com> - 045-18.git20170515
+- git snapshot
+
+* Wed Apr 12 2017 Peter Robinson <pbrobinson@fedoraproject.org> 044-178
+- Add upstream patches needed for ARMv7/aarch64 fixes
+
+* Fri Feb 10 2017 Fedora Release Engineering <releng@fedoraproject.org> - 044-177
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
+
+* Thu Dec 08 2016 Harald Hoyer <harald@redhat.com> - 044-176
+- git snapshot
+
+* Fri Aug 19 2016 Harald Hoyer <harald@redhat.com> - 044-117
+- git snapshot
+
+* Thu Aug 18 2016 Harald Hoyer <harald@redhat.com> - 044-109
+- git snapshot
+
+* Fri Aug 05 2016 Adam Williamson <awilliam@redhat.com> - 044-76
+- backport a single commit to fix RHBZ #1358416 (anaconda network init)
+
+* Tue Jun 07 2016 Harald Hoyer <harald@redhat.com> - 044-75
+- fix for systemd >= 230
+- git snapshot
+
+* Wed Feb 03 2016 Fedora Release Engineering <releng@fedoraproject.org> - 044-18.git20160108
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
+
+* Fri Jan  8 2016 Harald Hoyer <harald@redhat.com> - 044-17.git20160108
+- include more HID driver
+- include machine info file
+- fix network carrier detection
+- fix nbd
+- do not copy over lldpad state
+- restorecon the final initramfs image
+
+* Tue Dec  1 2015 Harald Hoyer <harald@redhat.com> - 044-6.git20151201
+- fix for readonly /run on shutdown
+- fix for the dmsquash-live module
+Resolves: rhbz#1286866
+
+* Wed Nov 25 2015 Harald Hoyer <harald@redhat.com> - 044-4.git20151127
+- fixes for the dmsquash-live module
+- remove udev watch for raid members
+- mode 0755 for the livenet generator
+Resolves: rhbz#1285903
+
+* Wed Nov 25 2015 Harald Hoyer <harald@redhat.com> - 044-1
+- version 044
+
+* Mon Nov 16 2015 Harald Hoyer <harald@redhat.com> - 043-174.git20151116
+- git snapshot
+
+* Mon Nov 16 2015 Harald Hoyer <harald@redhat.com> - 043-173.git20151116
+- git snapshot
+
+* Fri Nov 13 2015 Harald Hoyer <harald@redhat.com> - 043-172.git20151113
+- git snapshot
+
+* Tue Aug 11 2015 Harald Hoyer <harald@redhat.com> 043-60.git20150811
+- fixed checkiso timeout
+- fixed log output although quiet is set
+- fixed qemu detection
+- cleanup compressor handling
+
+* Wed Jul 22 2015 Harald Hoyer <harald@redhat.com> 043-40.git20150710.2
+- require "xz" to handle the kernel modules
+
+* Fri Jul 10 2015 Harald Hoyer <harald@redhat.com> 043-40.git20150710
+- git snapshot
+
+* Wed Jun 17 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 043-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
+
+* Mon Jun 15 2015 Harald Hoyer <harald@redhat.com> 043-1
+- version 043, now with the complete tarball
+
+* Thu Jun 11 2015 Harald Hoyer <harald@redhat.com> 042-1
+- version 042, the answer to life, the universe and everything
+
+* Thu Feb 19 2015 Harald Hoyer <harald@redhat.com> 041-10.git20150219
+- git snapshot
+
+* Sat Jan 31 2015 Harald Hoyer <harald@redhat.com> 041-1
+- version 041
+
+* Thu Jan 08 2015 Harald Hoyer <harald@redhat.com> 040-83.git20150108
+- git snapshot
+
+* Fri Dec 19 2014 Harald Hoyer <harald@redhat.com> 040-78.git20141219
+- git snapshot
+
+* Mon Dec 08 2014 Harald Hoyer <harald@redhat.com> 040-30.git20141208
+- fixed dracut-shutdown
+
+* Thu Dec 04 2014 Harald Hoyer <harald@redhat.com> 040-29.git20141204
+- git snapshot
+
+* Tue Sep 30 2014 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 038-36.git20140815
+- Allow media check to be cancelled (rhbz 1147941)
+
+* Fri Sep 26 2014 Josh Boyer <jwboyer@fedoraproject.org> - 038-35.git20140815
+- Enable early-microcode by default (rhbz 1083716)
+- Fix changelog date
+
+* Tue Aug 19 2014 Harald Hoyer <harald@redhat.com> - 038-34.git20140815
+- git snapshot
+
+* Sat Aug 16 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 038-31.git20140815
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild
+
+* Fri Aug 15 2014 Harald Hoyer <harald@redhat.com> 038-30.git20140815
+- git snapshot
+
+* Thu Jul 24 2014 Harald Hoyer <harald@redhat.com> 038-14.git20140724
+- fixed lvm modules issues
+Resolves: rhbz#1118890
+- fixed vlan issues
+- fixed prelink for FIPS
+- new rd.route parameter
+- more ARM modules
+
+* Fri Jul 11 2014 Tom Callaway <spot@fedoraproject.org> - 038-2
+- fix license handling
+
+* Mon Jun 30 2014 Harald Hoyer <harald@redhat.com> 038-1
+- version 038
+
+* Sat Jun 28 2014 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 037-14.git20140628
+- Pull most bugfixy commits from current git
+Resolves: rhbz#1112061
+
+* Sat Jun 07 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 037-13.git20140402
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
+
+* Fri May 23 2014 Peter Robinson <pbrobinson@fedoraproject.org> 037-12.git20140402
+- Fix achi/mmc/sdhci selection for non host based initrd
+
+* Thu Apr 17 2014 Adam Williamson <awilliam@redhat.com> - 037-11.git20140402
+- revert broken upstream change that causes RHBZ#1084766
+
+* Wed Apr 02 2014 Harald Hoyer <harald@redhat.com> 037-10.git20140402
+- fixed fstab.sys with systemd
+- DHCPv6 fixes
+- dm-cache module now included
+- FCoE fixes
+
+* Thu Mar 20 2014 Harald Hoyer <harald@redhat.com> 037-3.git20140320
+- fixed dracut-initramfs-restore with microcode
+
+* Thu Mar 20 2014 Harald Hoyer <harald@redhat.com> 037-1
+- version 037
+
+* Thu Feb 06 2014 Harald Hoyer <harald@redhat.com> 036-16.git20140206
+- version 036
+- parse dns information on "ip=" command line arg
+- preserve ownership of files, if root creates the initramfs
+- parse ibft nameserver settings
+- do not run dhcp twice on an interface
+- try to not reload systemd
+
+* Wed Dec 18 2013 Harald Hoyer <harald@redhat.com> 034-74.git20131218
+- do not systemctl daemon-reload
+- do iscsistart for iscsi_firmware even without network
+
+* Mon Dec 16 2013 Harald Hoyer <harald@redhat.com> 034-70.git20131216
+- fixed systemd password waiting
+- split out fcoe uefi
+- fixed lvm thin tools check
+
+* Thu Dec 05 2013 Harald Hoyer <harald@redhat.com> 034-62.git20131205
+- fixed PATH shortener
+- also install /etc/system-fips in the initramfs
+- nbd, do not fail in hostonly mode
+- add ohci-pci to the list of hardcoded modules
+- lvm: do not run pvscan for lvmetad
+- network fixes
+- skip crypt swaps with password files
+- fixed i18n
+
+* Wed Oct 30 2013 Harald Hoyer <harald@redhat.com> 034-24.git20131030
+- fixed booting with rd.iscsi.firmware and without root=
+- fips: include crct10dif_generic
+- fixed missing modules in hostonly, which have no modalias
+- moved dracut to /usr/sbin
+
+* Mon Oct 21 2013 Harald Hoyer <harald@redhat.com> 034-19.git20131021
+- Fixed LVM with thin provisioning
+Resolves: rhbz#1013767
+Resolves: rhbz#1021083
+
+* Fri Oct 18 2013 Harald Hoyer <harald@redhat.com> 034-18.git20131018
+- Fixed LVM with thin provisioning
+Resolves: rhbz#1013767
+- fixed swap detection in host only mode
+
+* Fri Oct 11 2013 Kyle McMartin <kyle@fedoraproject.org> 034-8.git20131008
+- Force mmc_block and usb_storage into ARM initramfs.
+Resolves: rhbz#1015234
+
+* Tue Oct 08 2013 Harald Hoyer <harald@redhat.com> 034-7.git20131008
+- lvm: install thin utils for non-hostonly
+- do not bail out, if kernel modules dir is missing
+- dmsquash-live: add /dev/mapper/live-base
+Resolves: rhbz#1016726
+
+* Tue Oct 08 2013 Harald Hoyer <harald@redhat.com> 034-1
+- version 034
+- add option to turn on/off prelinking
+    --prelink, --noprelink
+    do_prelink=[yes|no]
+- add ACPI table overriding
+- do not log to syslog/kmsg/journal for UID != 0
+- lvm/mdraid: Fix LVM on MD activation
+- bcache module removed (now in bcache-tools upstream)
+- mdadm: also install configs from /etc/mdadm.conf.d
+- fixes for mdadm-3.2.6+
+- fcoe: add FCoE UEFI boot device support
+- rootfs-block: add support for the rootfallback= kernel cmdline option
+
+* Fri Sep 13 2013 Harald Hoyer <harald@redhat.com> 033-3.git20130913
+- do not dhcp members of team, bond, etc.
+- harden against weird ppc kernel driver
+Resolves: rhbz#1007891
+
+* Thu Sep 12 2013 Harald Hoyer <harald@redhat.com> 033-1
+- do not cache the kernel cmdline
+Resolves: rhbz#989944
+- fixed iso-scan
+Resolves: rhbz#1005487
+- support blkid with bcache
+Resolves: rhbz#1003207
+- ifup with dhcp, if no ip= params specified
+Resolves: rhbz#989944
+- silently try to umount rpc_pipefs
+Resolves: rhbz#999996
+
+* Wed Sep 04 2013 Harald Hoyer <harald@redhat.com> 032-23.git20130904
+- fixed curl error with zero size kickstart file
+Resolves: rhbz#989133
+- fixed systemd-cat failure, when systemd is installed
+  but not actually running
+Resolves: rhbz#1002021
+- do not fail on empty dracut module directories
+Resolves: rhbz#1003153
+
+* Tue Aug 20 2013 Harald Hoyer <harald@redhat.com> 032-1
+- fix for kdump in FIPS mode
+Resolves: rhbz#920931
+- fixed iBFT booting
+Resolves: rhbz#989944
+- fixed FIPS mode initramfs creation
+Resolves: rhbz#990250
+- shutdown: fixed killall_proc_mountpoint()
+Resolves: rhbz#996549
+- disable lvmetad in the initramfs
+Resolves: rhbz#996627
+- require dhclient
+
+* Mon Aug 12 2013 Harald Hoyer <harald@redhat.com> 031-29.git20130812
+- added missing "then" in initqueue
+
+* Mon Aug 12 2013 Harald Hoyer <harald@redhat.com> 031-28.git20130812
+- fixed typo in hostonly device recognition
+
+* Fri Aug 09 2013 Harald Hoyer <harald@redhat.com> 031-24.git20130809
+- fixed logging to journal
+
+* Fri Aug 09 2013 Harald Hoyer <harald@redhat.com> 031-23.git20130809
+- fixed lsinitrd
+
+* Fri Aug 09 2013 Harald Hoyer <harald@redhat.com> 031-22.git20130809
+- lsinitrd.sh: add old cpio signature
+- dracut.sh: call find with -print0 and cpio with --null
+- dracut.asc: small corrections
+- systemd/dracut-initqueue.sh: continue to boot if finished failed
+- dracut.sh/dracut-functions.sh: handle root on non-block device
+- dracut-functions.sh: removed non dracut-install shell functions
+- dracut-functions.sh: inst_multiple == dracut_install
+- 51-dracut-rescue.install: fixed rescue image creation
+- dracut.sh: do not strip in FIPS mode
+Resolves: rhbz#990250
+- dracut.sh: check the value of --kver
+- crypt: Fix typo--/etc/crypttab not /etc/cryptab
+- network/net-lib.sh: fix ibft interface configuration
+- iscsi/module-setup.sh: install some modules regardless of hostonly
+- multipath: need_shutdown if multipath devices exist
+Resolves: rhbz#994913
+- omit drivers fix
+
+* Thu Aug 01 2013 Harald Hoyer <harald@redhat.com> 031-7.git20130801
+- also install vt102 terminfo
+
+* Wed Jul 31 2013 Harald Hoyer <harald@redhat.com> 031-6.git20130731
+- cmssetup: fixed port for zfcp.conf
+- lvm: call lvchange with --yes to boot from snapshots
+
+* Wed Jul 31 2013 Harald Hoyer <harald@redhat.com> 031-4.git20130731
+- remove action_on_fail kernel command line parameter
+
+* Wed Jul 31 2013 Harald Hoyer <harald@redhat.com> 031-3.git20130731
+- do not include adjtime and localtime in the initramfs
+- write out vlan configs
+
+* Wed Jul 31 2013 Harald Hoyer <harald@redhat.com> 031-1
+- do not include the resume dracut module in hostonly mode,
+  if no swap is present
+- don't warn twice about omitted modules
+- use systemd-cat for logging on systemd systems, if logfile is unset
+- fixed PARTUUID parsing
+- support kernel module signing keys
+- do not install the usrmount dracut module in hostonly mode,
+  if /sbin/init does not live in /usr
+- add debian udev rule files
+- add support for bcache
+- network: handle bootif style interfaces
+  e.g. ip=77-77-6f-6f-64-73:dhcp
+- add support for kmod static devnodes
+- add vlan support for iBFT
+
+* Wed Jul 24 2013 Kyle McMartin <kyle@redhat.com> 030-2
+- Add ehci-tegra.ko to initramfs to allow rawhide tegra based platforms
+  to boot off USB disks.
+
+* Wed Jul 17 2013 Harald Hoyer <harald@redhat.com> 030-1
+- support new persistent network interface names
+- fix findmnt calls, prevents hang on stale NFS mounts
+- add systemd.slice and slice.target units
+- major shell cleanup
+- support root=PARTLABEL= and root=PARTUUID=
+- terminfo: only install l/linux v/vt100 and v/vt220
+- unset all LC_* and LANG, 10% faster
+- fixed dependency loop for dracut-cmdline.service
+- do not wait_for_dev for the root devices
+- do not wait_for_dev for devices, if dracut-initqueue is not needed
+- support early microcode loading with --early-microcode
+- dmraid, let dmraid setup its own partitions
+- sosreport renamed to rdsosreport
+
+* Fri Jun 14 2013 Harald Hoyer <harald@redhat.com> 029-1
+- wait for IPv6 auto configuration
+Resolves: rhbz#973719
+- i18n: make the default font configurable
+- systemd/dracut-pre-pivot.service: also execute for cleanup hooks or rd.break
+- add dracut-shutdown.service.8 manpage
+- lvm: redirect error message of lvs to /dev/null
+Resolves: rhbz#921235
+
+* Wed Jun 12 2013 Harald Hoyer <harald@redhat.com> 028-1
+- lvm: fixed "thin" recognition
+Resolves: rhbz#921235
+- install libs also from one dir above
+  fixes booting power6 generated initramfs on power7
+- setup correct system time and time zone in initrd
+- cms fixups
+Resolves: rhbz#970982 rhbz#971025 rhbz#825199
+- iso-scan/filename fixes
+Resolves: rhbz#972337
+- add udev rules for persistent network naming
+Resolves: rhbz#972662
+
+* Tue Jun 04 2013 Dennis Gilmore <dennis@ausil.us> 027-82.git20130531
+- add patch to include  panel-tfp410 module on arm systems
+
+* Fri May 31 2013 Harald Hoyer <harald@redhat.com> 027-81.git20130531
+- fix btrfs mount flags for /usr
+- degrade message about missing tools for stripping
+Resolves: rhbz#958519
+- set environment vars DRACUT_SYSTEMD, NEWROOT in service file
+Resolves: rhbz#963159
+- don't add volatile swap partitions to host_devs
+- add libssl.so.10 to make kdump work with fips mode
+- readd selinux dracut module for kdump
+- url-lib/url-lib.sh: turn off curl globbing
+Resolves: rhbz#907497
+- include btrfs-zero-log in the initramfs
+Resolves: rhbz#963257
+- proper NAME the network interfaces
+Resolves: rhbz#965842
+- install default font latarcyrheb-sun16
+Resolves: rhbz#927564
+- optionally install /etc/pcmcia/config.opts
+Resolves: rhbz#920076
+- fix ONBOOT for slaves, set TYPE=Bond for bonding
+Resolves: rhbz#919001
+- add nvme kernel module
+Resolves: rhbz#910734
+- add xfs_metadump
+- selinux: load_policy script fix
+- add hid-hyperv and hv-vmbus kernel modules
+- add parameter rd.live.squashimg
+Resolves: rhbz#789036 rhbz#782108
+- wait for all required interfaces if "rd.neednet=1"
+Resolves: rhbz#801829
+- lvm: add tools for thin provisioning
+Resolves: rhbz#921235
+- ifcfg/write-ifcfg.sh: fixed ifcfg file generation
+- do not wait for mpath* devices
+Resolves: rhbz#969068
+
+* Wed May 22 2013 Adam Williamson <awilliam@redhat.com> 027-46.git20130430
+- don't specify "p" as a separator for dmraid
+Resolves: rhbz#966162
+
+* Tue Apr 30 2013 Harald Hoyer <harald@redhat.com> 027-45.git20130430
+- fixed fips mode more
+Resolves: rhbz#956521
+
+* Thu Apr 25 2013 Harald Hoyer <harald@redhat.com> 027-39.git20130425
+- fix shutdown, if /dev/console is not writeable
+- fixed fips mode
+Resolves: rhbz#956521
+
+* Thu Apr 18 2013 Harald Hoyer <harald@redhat.com> 027-36.git20130418
+- fix initramfs creation on noexec tmpdir
+Resolves: rhbz#953426
+- more options for lsinitrd
+- bash completion for lsinitrd
+- do not output debug information on initramfs creation, if rd.debug is
+  on the kernel command line
+- drop requirement on 'file', lsinitrd can find the magic on its own
+
+* Mon Apr 15 2013 Harald Hoyer <harald@redhat.com> 027-26.git20130415
+- do not call plymouth with full path
+- include systemd-random-seed-load.service
+- fix ca-bundle.crt for ssl curl
+Resolves: rhbz#950770
+- add support for "iso-scan/filename" kernel parameter
+
+* Wed Apr 10 2013 Harald Hoyer <harald@redhat.com> 027-19.git20130410
+- also handle UUID= entries in crypttab in host-only mode
+Resolves:rhbz#919752
+
+* Tue Apr 09 2013 Harald Hoyer <harald@redhat.com> 027-17.git20130409
+- only include needed /etc/crypttab entries
+Resolves:rhbz#919752
+- add support for bridge over team and vlan
+- support multiple bonding interfaces
+- add "action_on_fail=" kernel command line parameter
+- add support for bridge over a vlan tagged interface
+
+* Fri Apr 05 2013 Harald Hoyer <harald@redhat.com> 027-10.git20130405
+- fix crypto password timeout on the dracut side
+
+* Tue Mar 26 2013 Harald Hoyer <harald@redhat.com> 027-1
+- version 027
+
+* Wed Mar 20 2013 Harald Hoyer <harald@redhat.com> 026-72.git20130320
+- fix rescue image naming
+Resolves: rhbz#923439
+- turn off host-only mode if essential system filesystems not mounted
+- turn off host-only mode if udev database is not accessible
+
+* Tue Mar 19 2013 Harald Hoyer <harald@redhat.com> 026-62.git20130319
+- fix dracut service ordering
+Resolves: rhbz#922991
+
+* Mon Mar 18 2013 Harald Hoyer <harald@redhat.com> 026-56.git20130318
+- don't fail hard on kernel modules install
+Resolves: rhbz#922565
+
+* Mon Mar 18 2013 Harald Hoyer <harald@redhat.com> 026-55.git20130318
+- install all host filesystem drivers
+Resolves: rhbz#922565
+
+* Sat Mar 16 2013 Harald Hoyer <harald@redhat.com> 026-54.git20130316
+- fix for squashfs
+Resolves: rhbz#922248
+- documentation fixes
+- sosreport, mkdir /run/initramfs
+
+* Fri Mar 15 2013 Harald Hoyer <harald@redhat.com> 026-48.git20130315
+- use new initrd.target from systemd
+- fixed rescue generation
+
+* Wed Mar 13 2013 Harald Hoyer <harald@redhat.com> 026-33.git20130313
+- add module-load.d modules to the initramfs
+- add sysctl.d to the initramfs
+- optimize plymouth module for systemd mode
+- add new dracut parameter "--regenerate-all"
+- add new dracut parameter "--noimageifnotneeded"
+- shutdown: mount move /run /sys /dev /proc out of /oldroot
+  before pre-shutdown
+- add bash completion for dracut
+
+* Wed Mar 13 2013 Harald Hoyer <harald@redhat.com> 026-19.git20130313
+- fix switch-root and local-fs.target problem
+- add norescue and nohostonly subpackages
+
+* Mon Mar 11 2013 Harald Hoyer <harald@redhat.com> 026-15.git20130311
+- update to recent git
+
+* Fri Mar 08 2013 Harald Hoyer <harald@redhat.com> 026-1
+- version 026
+
+* Mon Feb 11 2013 Harald Hoyer <harald@redhat.com> 025-35.git20130211
+- update to recent git
+
+* Wed Jan 23 2013 Harald Hoyer <harald@redhat.com> 025-1
+- version 025
+
+* Tue Aug 21 2012 Harald Hoyer <harald@redhat.com> 023-13.git20120821
+- reintroduce rd.neednet, which reenables anaconda networking
+- fix some dracut-install corner cases
+- fix FIPS for /boot not on extra partition
+
+* Wed Aug 01 2012 Dennis Gilmore <dennis@ausil.us> - 023-2
+- add patch to include omap_hsmmc for arm
+
+* Wed Aug 01 2012 Harald Hoyer <harald@redhat.com> 023-1
+- version 023
+
+* Mon Jul 30 2012 Harald Hoyer <harald@redhat.com> 022-99.git20120730
+- removed install of missing finished-ask-password.sh
+
+* Mon Jul 30 2012 Harald Hoyer <harald@redhat.com> 022-97.git20120730
+- moved crypt setup to systemd units
+
+* Fri Jul 27 2012 Harald Hoyer <harald@redhat.com> 022-63.git20120727
+- fixed dracut-install bug if /var/tmp contains a symlink
+- fixed some partx issues
+
+* Mon Jul 23 2012 Harald Hoyer <harald@redhat.com> 022-5.git20120723
+- dracut.8: added more documentation about executing dracut
+
+* Fri Jul 20 2012 Harald Hoyer <harald@redhat.com> 022-2.git20120720
+- fixed some race condition for resume from hibernation
+
+* Fri Jul 20 2012 Harald Hoyer <harald@redhat.com> 022-1
+- version 022
+- host-only kernel modules fix
+
+* Fri Jul 20 2012 Harald Hoyer <harald@redhat.com> 021-1
+- version 21
+- systemd in the initramfs reenabled
+- new option "--kver"
+
+* Wed Jul 18 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 020-97.git20120717
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
+
+* Tue Jul 17 2012 Harald Hoyer <harald@redhat.com> 020-96.git20120717
+- disabled systemd in the initramfs, until it works correctly
+
+* Wed Jul 11 2012 Harald Hoyer <harald@redhat.com> 020-84.git20120711
+- add back "--force" to switch-root, otherwise systemd umounts /run
+
+* Wed Jul 11 2012 Harald Hoyer <harald@redhat.com> 020-83.git20120711
+- more systemd journal fixes
+- nfs module fix
+- install also /lib/modprobe.d/*
+- fixed dracut-shutdown service
+- safeguards for dracut-install
+- for --include also copy symlinks
+
+* Tue Jul 10 2012 Harald Hoyer <harald@redhat.com> 020-72.git20120710
+- stop journal rather than restart
+- copy over dracut services to /run/systemd/system
+
+* Tue Jul 10 2012 Harald Hoyer <harald@redhat.com> 020-70.git20120710
+- more systemd unit fixups
+- restart systemd-journald in switch-root post
+- fixed dracut-install loader ldd error message
+
+* Mon Jul 09 2012 Harald Hoyer <harald@redhat.com> 020-64.git20120709
+- fixed plymouth install
+- fixed resume
+- fixed dhcp
+- no dracut systemd services installed in the system
+
+* Mon Jul 09 2012 Harald Hoyer <harald@redhat.com> 020-57.git20120709
+- more fixups for systemd-udevd unit renaming
+
+* Mon Jul 09 2012 Harald Hoyer <harald@redhat.com> 020-55.git20120709
+- require systemd >= 186
+- more fixups for systemd-udevd unit renaming
+
+* Mon Jul 09 2012 Harald Hoyer <harald@redhat.com> 020-52.git20120709
+- fixed prefix in 01-dist.conf
+
+* Fri Jul 06 2012 Harald Hoyer <harald@redhat.com> 020-51.git20120706
+- cope with systemd-udevd unit renaming
+- fixed network renaming
+- removed dash module
+
+* Mon Jul 02 2012 Harald Hoyer <harald@redhat.com> 020-22.git20120702
+- fixed kernel modules install
+
+* Mon Jul 02 2012 Harald Hoyer <harald@redhat.com> 020-21.git20120702
+- moved /usr/bin/dracut-install to /usr/lib
+- more speedups
+
+* Fri Jun 29 2012 Harald Hoyer <harald@redhat.com> 020-1
+- version 020
+- new /usr/bin/dracut-install tool
+- major speedup of the image creation
+
+* Mon Jun 25 2012 Harald Hoyer <harald@redhat.com> 019-92.git20120625
+- support vlan tagged binding
+- speedup initramfs emergency service
+- speedup image creation
+- fix installkernel() return codes
+Resolves: rhbz#833256
+- add qemu and qemu-net modules to add qemu drivers even in host-only
+- speedup btrfs and xfs fsck (nop)
+- no more mknod in the initramfs (fixes plymouth on s390)
+
+* Thu Jun 21 2012 Harald Hoyer <harald@redhat.com> 019-62.git20120621
+- do not require pkg-config for systemd
+- i18n fixes
+- less systemd services in the initramfs
+
+* Thu Jun 21 2012 Harald Hoyer <harald@redhat.com> 019-57.git20120620
+- systemd is now the default init in the initramfs
+
+* Mon Jun 18 2012 Harald Hoyer <harald@redhat.com> 019-40.git20120618
+- new upstream version
+
+* Mon Jun 11 2012 Harald Hoyer <harald@redhat.com> 019-16.git20120611
+- new upstream version
+
+* Tue Jun 05 2012 Dennis Gilmore <dennis@ausil.us> 019-2
+- include omapdrm with the arm modules
+
+* Mon Jun 04 2012 Harald Hoyer <harald@redhat.com> 019-1
+- version 019-1
+
+* Tue May 22 2012 Harald Hoyer <harald@redhat.com> 018-74.git20120522
+- new upstream version
+
+* Thu May 17 2012 Dennis Gilmore <dennis@ausil.us> 018-53.git20120509
+- add patch to pull in arm storage modules
+
+* Wed May 09 2012 Harald Hoyer <harald@redhat.com> 018-52.git20120509
+- new upstream version
+
+* Fri May 04 2012 Harald Hoyer <harald@redhat.com> 018-40.git20120504
+- new upstream version
+
+* Wed Apr 25 2012 Harald Hoyer <harald@redhat.com> 018-37.git20120425.1
+- fixup for multipath and iscsi host-only detection
+
+* Wed Apr 25 2012 Harald Hoyer <harald@redhat.com> 018-37.git20120425
+- fixed udevd location
+
+* Tue Apr 24 2012 Harald Hoyer <harald@redhat.com> 018-33.git20120424
+- new upstream version
+
+* Thu Apr 19 2012 Harald Hoyer <harald@redhat.com> 018-25.git20120419
+- fixed network for non-network root (like installer media)
+
+* Wed Apr 18 2012 Harald Hoyer <harald@redhat.com> 018-22.git20120418
+- new upstream version
+
+* Mon Apr 16 2012 Harald Hoyer <harald@redhat.com> 018-12.git20120416
+- new upstream version, which fixes various anaconda loader issues
+
+* Thu Apr 05 2012 Harald Hoyer <harald@redhat.com> 018-1
+- version 018
+
+* Thu Mar 22 2012 Harald Hoyer <harald@redhat.com> 017-62.git20120322
+- fixed /run prefix copying
+
+* Wed Mar 21 2012 Harald Hoyer <harald@redhat.com> 017-59.git20120321
+- new upstream version, which fixes various anaconda loader issues
+
+* Mon Mar 12 2012 Harald Hoyer <harald@redhat.com> 017-43.git20120312
+- live image: fixed image uncompression
+- live updates for livenet
+
+* Thu Mar 08 2012 Harald Hoyer <harald@redhat.com> 017-40.git20120308
+- add s390 ctcm network kernel module
+
+* Thu Mar 08 2012 Harald Hoyer <harald@redhat.com> 017-39.git20120308
+- kill dhclient silently
+- cleanup and fix network config writeout to /run/initramfs/state
+Resolves: rhbz#799989
+- various cleanups
+
+* Fri Mar 02 2012 Harald Hoyer <harald@redhat.com> 017-22.git20120302
+- nfs path fixes for live image over nfs
+  root=live:nfs://10.10.10.10:/srv/all/install.img ip=dhcp rd.neednet
+
+* Thu Mar 01 2012 Harald Hoyer <harald@redhat.com> 017-19.git20120301
+- fixed include of some kernel modules
+
+* Wed Feb 29 2012 Harald Hoyer <harald@redhat.com> 017-17.git20120229
+- update to latest git
+- fixes for convertfs (/usr-move)
+
+* Fri Feb 24 2012 Harald Hoyer <harald@redhat.com> 017-1
+- version 017
+
+* Fri Feb 17 2012 Harald Hoyer <harald@redhat.com> 016-9.git20120217
+- update to latest git
+
+* Wed Feb 15 2012 Harald Hoyer <harald@redhat.com> 016-1
+- version 016
+
+* Mon Feb 13 2012 Harald Hoyer <harald@redhat.com> 015-9.git20120213
+- update to latest git
+
+* Sun Feb 12 2012 Kay Sievers <kay@redhat.com> - 015-9.git20120210
+- fix dependency loop in systemd service files
+
+* Fri Feb 10 2012 Harald Hoyer <harald@redhat.com> 015-8.git20120210
+- update to latest git
+
+* Thu Feb 09 2012 Harald Hoyer <harald@redhat.com> 015-7.git20120209
+- update to latest git
+
+* Thu Feb 09 2012 Harald Hoyer <harald@redhat.com> 015-4.git20120209
+- update to latest git
+
+* Wed Feb 08 2012 Harald Hoyer <harald@redhat.com> 015-3.git20120208
+- update to latest git
+
+* Tue Feb 07 2012 Harald Hoyer <harald@redhat.com> 015-1
+- version 015
+
+* Thu Feb 02 2012 Harald Hoyer <harald@redhat.com> 014-81.git20120202
+- update to latest git
+
+* Thu Feb 02 2012 Harald Hoyer <harald@redhat.com> 014-80.git20120202
+- update to latest git
+
+* Thu Jan 26 2012 Harald Hoyer <harald@redhat.com> 014-77.git20120126.1
+- rebuild for rawhide
+
+* Thu Jan 26 2012 Harald Hoyer <harald@redhat.com> 014-77.git20120126
+- update to latest git
+
+* Thu Jan 26 2012 Harald Hoyer <harald@redhat.com> 014-76.git20120126
+- update to latest git
+
+* Thu Jan 26 2012 Harald Hoyer <harald@redhat.com> 014-75.git20120126
+- update to latest git
+
+* Thu Jan 26 2012 Harald Hoyer <harald@redhat.com> 014-74.git20120126
+- update to latest git
+
+* Thu Jan 26 2012 Harald Hoyer <harald@redhat.com> 014-73.git20120126
+- update to latest git
+
+* Thu Jan 26 2012 Harald Hoyer <harald@redhat.com> 014-72.git20120126
+- update to latest git
+
+* Mon Jan 23 2012 Harald Hoyer <harald@redhat.com> 014-65.git20120123
+- update to latest git
+
+* Mon Jan 23 2012 Harald Hoyer <harald@redhat.com> 014-61.git20120123
+- update to latest git
+
+* Tue Jan 17 2012 Harald Hoyer <harald@redhat.com> 014-38.git20120117
+- update to latest git
+
+* Fri Jan 13 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 014-10.git20111215
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild
+
+* Thu Dec 15 2011 Harald Hoyer <harald@redhat.com> 014-9.git20111215
+- update to latest git
+- lots of patch changes
+
+* Fri Oct 21 2011 Harald Hoyer <harald@redhat.com> 013-100.git20111021
+- update to latest git
+
+* Thu Oct 20 2011 Harald Hoyer <harald@redhat.com> 013-93.git20111020
+- update to latest git
+
+* Wed Oct 19 2011 Harald Hoyer <harald@redhat.com> 013-85.git20111019
+- update to latest git
+
+* Tue Oct 04 2011 Harald Hoyer <harald@redhat.com> 013-15
+- fixed mdraid container handling
+Resolves: rhbz#743240
+
+* Thu Sep 22 2011 Harald Hoyer <harald@redhat.com> 013-13
+- fixed mdraid issues
+- fixed btrfsck
+Resolves: rhbz#735602
+
+* Wed Sep 21 2011 Harald Hoyer <harald@redhat.com> 013-12
+- removed patch backup files
+- reintroduced /dev/live
+
+* Tue Sep 20 2011 Harald Hoyer <harald@redhat.com> 013-11
+- move mounting of securitfs to a seperate module
+Resolves: rhbz#737140
+
+* Tue Sep 20 2011 Harald Hoyer <harald@redhat.com> 013-10
+- mount securitfs with the correct source
+Resolves: rhbz#737140
+
+* Tue Sep 20 2011 Harald Hoyer <harald@redhat.com> 013-9
+- do not carry over initramfs udev rules
+Resolves: rhbz#734096
+
+* Fri Sep 02 2011 Harald Hoyer <harald@redhat.com> 013-8
+- hopefully fixed one part of a loop/udev and loop/mount race
+Resolves: rhbz#735199
+
+* Wed Aug 31 2011 Harald Hoyer <harald@redhat.com> 013-7
+- add /lib/udev/input_id to the initramfs
+- fix hmac install
+
+* Tue Aug 30 2011 Harald Hoyer <harald@redhat.com> 013-6
+- fixed environment passing to real init
+Resolves: rhbz#733674
+- fixed lvm on md
+
+* Mon Aug 29 2011 Harald Hoyer <harald@redhat.com> 013-5
+- fixed rhel/fedora version checks
+
+* Wed Aug 17 2011 Harald Hoyer <harald@redhat.com> 013-4
+- fixed crash with livenet installed
+
+* Wed Aug 17 2011 Harald Hoyer <harald@redhat.com> 013-3
+- fixed live iso mounting
+Resolves: rhbz#730579
+
+* Fri Aug 12 2011 Harald Hoyer <harald@redhat.com> 013-1
+- fixed symlink creation for lorax
+
+* Wed Aug 10 2011 Harald Hoyer <harald@redhat.com> 011-41.git20110810
+- fixed getargs() for empty args
+
+* Wed Aug 10 2011 Harald Hoyer <harald@redhat.com> 011-40.git20110810
+- fixed symbolic link creation in the initramfs
+Resolves: rhbz#728863
+
+* Wed Jul 20 2011 Harald Hoyer <harald@redhat.com> 011-15.git20110720
+- "eject" is optional now
+- refined shutdown procedure
+
+* Mon Jul 18 2011 Harald Hoyer <harald@redhat.com> 011-1
+- version 011
+
+* Fri May 20 2011 Harald Hoyer <harald@redhat.com> 011-0.1
+- git snapshot of pre-version 011
+
+* Fri Apr 01 2011 Harald Hoyer <harald@redhat.com> 010-1
+- version 010
+
+* Thu Mar 31 2011 Harald Hoyer <harald@redhat.com> 009-5
+- fixed PATH and kmsg logging
+
+* Thu Mar 31 2011 Harald Hoyer <harald@redhat.com> 009-4
+- fixed dmsquash rule generation
+- fixed fips boot arg parsing
+- fixed plymouth pid generation
+
+* Wed Mar 30 2011 Harald Hoyer <harald@redhat.com> 009-3
+- fixed dhcp
+- added /lib/firmware/updates to firmware directories 
+- fixed LiveCD /dev/.initramfs fallback
+- fixed cdrom polling
+- dropped net-tools dependency
+
+* Tue Mar 29 2011 Harald Hoyer <harald@redhat.com> 009-2
+- fixed empty output file argument handling:
+  "dracut '' <kernel version>" 
+
+* Mon Mar 28 2011 Harald Hoyer <harald@redhat.com> 009-1
+- version 009
+
+* Thu Mar 17 2011 Harald Hoyer <harald@redhat.com> 009-0.1
+- version 009 prerelease
+
+* Tue Feb 22 2011 Harald Hoyer <harald@redhat.com> 008-7
+- fixed lvm version parsing
+
+* Tue Feb 22 2011 Harald Hoyer <harald@redhat.com> 008-6
+- fixed lvm version parsing
+
+* Mon Feb 21 2011 Harald Hoyer <harald@redhat.com> 008-5
+- fixed i18n unicode setting
+- set cdrom in kernel polling
+
+* Fri Feb 18 2011 Harald Hoyer <harald@redhat.com> 008-4
+- readded dist tag
+
+* Fri Feb 18 2011 Harald Hoyer <harald@redhat.com> 008-3
+- fixed i18n
+- turned off selinux by default
+
+* Wed Feb 09 2011 Harald Hoyer <harald@redhat.com> 008-2
+- do not write dracut.log to /tmp under any circumstances
+- touch /dev/.systemd/plymouth after plymouth started
+
+* Tue Feb 08 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 008-1.1
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
+
+* Wed Feb 02 2011 Harald Hoyer <harald@redhat.com> 008-1
+- version 008-1
+
+* Mon Jan 17 2011 Harald Hoyer <harald@redhat.com> 008-0.11
+- removed "mount" requirement
+
+* Thu Nov 18 2010 Harald Hoyer <harald@redhat.com> - 008-0.10
+- dracut-008 pre git snapshot
+- fixes /dev/dri permissions
+Resolves: rhbz#626559
+
+* Fri Nov 12 2010 Harald Hoyer <harald@redhat.com> 008-0.9
+- dracut-008 pre git snapshot
+- fixes /dev/.udev permissions
+Resolves: rhbz#651594
+
+* Wed Nov  3 2010 Harald Hoyer <harald@redhat.com> - 008-0.8
+- fixed fsck -a option
+
+* Fri Oct 29 2010 Harald Hoyer <harald@redhat.com> 008-0.7
+- added fsck to initramfs
+
+* Fri Oct 29 2010 Harald Hoyer <harald@redhat.com> 008-0.6
+- fixed rpm macros
+
+* Fri Oct 29 2010 Harald Hoyer <harald@redhat.com> 008-0.5
+- dracut-008 pre git snapshot
+
+* Mon Aug 09 2010 Harald Hoyer <harald@redhat.com> 007-1
+- version 007
+
+* Thu Jun 17 2010 Harald Hoyer <harald@redhat.com> 006-1
+- version 006
+
+* Fri Jun 11 2010 Harald Hoyer <harald@redhat.com>
+- Remove requirements, which are not really needed
+Resolves: rhbz#598509
+- fixed copy of network config to /dev/.initramfs/ (patch 146)
+Resolves: rhbz#594649
+- more password beauty (patch 142)
+Resolves: rhbz#561092
+- support multiple iSCSI disks (patch 143)
+Resolves: rbhz#580190
+- fixed selinux=0 (patch 130)
+Resolves: rhbz#593080
+- add support for booting LVM snapshot root volume (patch 145)
+Resolves: rbhz#602723
+- remove hardware field from BOOTIF= (patch 148)
+Resolves: rhbz#599593
+- add aes kernel modules and fix crypt handling (patch 137, patch 140 and patch 147)
+Resolves: rhbz#600170
+
+* Thu May 27 2010 Harald Hoyer <harald@redhat.com> 
+- fixed Requirements
+- fixed autoip6 
+Resolves: rhbz#538388
+- fixed multipath
+Resolves: rhbz#595719
+
+* Thu May 06 2010 Harald Hoyer <harald@redhat.com> 
+- only display short password messages
+Resolves: rhbz#561092
+
+* Thu May 06 2010 Harald Hoyer <harald@redhat.com>
+- fixed dracut manpages 
+Resolves: rhbz#589109
+- use ccw-init and ccw rules from s390utils
+Resolves: rhbz#533494
+- fixed fcoe
+Resolves: rhbz#486244
+- various other bugfixes seen in Fedora
+
+* Tue Apr 20 2010 Harald Hoyer <harald@redhat.com> 
+- fixed network with multiple nics
+- fixed nfsidmap paths
+- do not run blkid on non active container raids
+- fixed cdrom polling mechanism
+- update to latest git
+
+* Thu Apr 15 2010 Harald Hoyer <harald@redhat.com>
+- fixed dracut manpages
+- dmraid parse different error messages
+- add cdrom polling mechanism for slow cdroms
+- add module btrfs
+- teach dmsquash live-root to use rootflags
+- trigger udev with action=add
+- fixed add_drivers handling 
+- add sr_mod
+- use pigz instead of gzip, if available
+
+* Thu Mar 25 2010 Harald Hoyer <harald@redhat.com> 
+- removed firmware requirements (rhbz#572634)
+- add /etc/dracut.conf.d
+- Resolves: rhbz#572634
+
+* Fri Mar 19 2010 Harald Hoyer <harald@redhat.com> 
+- version 005
+
+* Fri Mar 19 2010 Harald Hoyer <harald@redhat.com> 
+- fixed rpmlint errors (rhbz#570547)
+- removed firmware package from dracut-kernel (rhbz#572634)
+- add dcb support to dracut's FCoE support (rhbz#563794)
+- force install some modules in hostonly mode (rhbz#573094)
+- various other bugfixes
+- Resolves: rhbz#570547, rhbz#572634, rhbz#563794, rhbz#573094
+
+* Thu Feb 18 2010 Harald Hoyer <harald@redhat.com> 004-15
+- fixed "selinux=0" booting (rhbz#566376)
+- fixed internal IFS handling
+- Resolves: rhbz#566376
+
+* Fri Jan 29 2010 Harald Hoyer <harald@redhat.com> 004-5
+- fixed firmware.sh bug (#559975 #559597)
+
+* Tue Jan 26 2010 Harald Hoyer <harald@redhat.com> 004-4
+- add multipath check
+
+* Tue Jan 26 2010 Harald Hoyer <harald@redhat.com> 004-3
+- fix selinux handling if .autorelabel is present
+- Resolves: rhbz#557744
+
+* Wed Jan 20 2010 Harald Hoyer <harald@redhat.com> 004-2
+- fix emergency_shell argument parsing
+- Related: rhbz#543948
+
+* Fri Jan 15 2010 Harald Hoyer <harald@redhat.com> 004-1
+- version 004
+- Resolves: rhbz#529339 rhbz#533494 rhbz#548550 
+- Resolves: rhbz#548555 rhbz#553195
+
+* Wed Jan 13 2010 Harald Hoyer <harald@redhat.com> 003-3
+- add Obsoletes of mkinitrd/nash/libbdevid-python
+- Related: rhbz#543948
+
+* Wed Jan 13 2010 Warren Togami <wtogami@redhat.com> 003-2
+- nbd is Fedora only
+
+* Fri Nov 27 2009 Harald Hoyer <harald@redhat.com> 003-1
+- version 003
+
+* Mon Nov 23 2009 Harald Hoyer <harald@redhat.com> 002-26
+- add WITH_SWITCH_ROOT make flag
+- add fips requirement conditional
+- add more device mapper modules (bug #539656)
+
+* Fri Nov 20 2009 Dennis Gregorovic <dgregor@redhat.com> - 002-25.1
+- nss changes for Alpha 3
+
+* Thu Nov 19 2009 Harald Hoyer <harald@redhat.com> 002-25
+- add more requirements for dracut-fips (bug #539257)
+
+* Tue Nov 17 2009 Harald Hoyer <harald@redhat.com> 002-24
+- put fips module in a subpackage (bug #537619)
+
+* Tue Nov 17 2009 Harald Hoyer <harald@redhat.com> 002-23
+- install xdr utils for multipath (bug #463458)
+
+* Thu Nov 12 2009 Harald Hoyer <harald@redhat.com> 002-22
+- add module 90multipath
+- add module 01fips
+- renamed module 95ccw to 95znet (bug #533833)
+- crypt: ignore devices in /etc/crypttab (root is not in there)
+- dasd: only install /etc/dasd.conf in hostonly mode (bug #533833)
+- zfcp: only install /etc/zfcp.conf in hostonly mode (bug #533833)
+- kernel-modules: add scsi_dh scsi_dh_rdac scsi_dh_emc (bug #527750)
+- dasd: use dasdconf.sh from s390utils (bug #533833)
+
+* Fri Nov 06 2009 Harald Hoyer <harald@redhat.com> 002-21
+- fix rd_DASD argument handling (bug #531720)
+- Resolves: rhbz#531720
+
+* Wed Nov 04 2009 Harald Hoyer <harald@redhat.com> 002-20
+- fix rd_DASD argument handling (bug #531720)
+- Resolves: rhbz#531720
+
+* Tue Nov 03 2009 Harald Hoyer <harald@redhat.com> 002-19
+- changed rd_DASD to rd_DASD_MOD (bug #531720)
+- Resolves: rhbz#531720
+
+* Tue Oct 27 2009 Harald Hoyer <harald@redhat.com> 002-18
+- renamed lvm/device-mapper udev rules according to upstream changes
+- fixed dracut search path issue
+
+* Mon Oct 26 2009 Harald Hoyer <harald@redhat.com> 002-17
+- load dm_mod module (bug #530540)
+
+* Fri Oct 09 2009 Jesse Keating <jkeating@redhat.com> - 002-16
+- Upgrade plymouth to Requires(pre) to make it show up before kernel
+
+* Thu Oct 08 2009 Harald Hoyer <harald@redhat.com> 002-15
+- s390 ccw: s/layer1/layer2/g
+
+* Thu Oct 08 2009 Harald Hoyer <harald@redhat.com> 002-14
+- add multinic support
+- add s390 zfcp support
+- add s390 network support
+
+* Wed Oct 07 2009 Harald Hoyer <harald@redhat.com> 002-13
+- fixed init=<command> handling
+- kill loginit if "rdinitdebug" specified
+- run dmsquash-live-root after udev has settled (bug #527514)
+
+* Tue Oct 06 2009 Harald Hoyer <harald@redhat.com> 002-12
+- add missing loginit helper
+- corrected dracut manpage
+
+* Thu Oct 01 2009 Harald Hoyer <harald@redhat.com> 002-11
+- fixed dracut-gencmdline for root=UUID or LABEL
+
+* Thu Oct 01 2009 Harald Hoyer <harald@redhat.com> 002-10
+- do not destroy assembled raid arrays if mdadm.conf present
+- mount /dev/shm 
+- let udevd not resolve group and user names
+- preserve timestamps of tools on initramfs generation
+- generate symlinks for binaries correctly
+- moved network from udev to initqueue
+- mount nfs3 with nfsvers=3 option and retry with nfsvers=2
+- fixed nbd initqueue-finished
+- improved debug output: specifying "rdinitdebug" now logs
+  to dmesg, console and /init.log
+- stop udev before killing it
+- add ghost /var/log/dracut.log
+- dmsquash: use info() and die() rather than echo
+- strip kernel modules which have no x bit set
+- redirect stdin, stdout, stderr all RW to /dev/console
+  so the user can use "less" to view /init.log and dmesg
+
+* Tue Sep 29 2009 Harald Hoyer <harald@redhat.com> 002-9
+- make install of new dm/lvm udev rules optionally
+- correct dasd module typo
+
+* Fri Sep 25 2009 Warren Togami <wtogami@redhat.com> 002-8
+- revert back to dracut-002-5 tarball 845dd502
+  lvm2 was reverted to pre-udev
+
+* Wed Sep 23 2009 Harald Hoyer <harald@redhat.com> 002-7
+- build with the correct tarball
+
+* Wed Sep 23 2009 Harald Hoyer <harald@redhat.com> 002-6
+- add new device mapper udev rules and dmeventd 
+  bug 525319, 525015
+
+* Wed Sep 23 2009 Warren Togami <wtogami@redaht.com> 002-5
+- Revert back to -3, Add umount back to initrd
+  This makes no functional difference to LiveCD.  See Bug #525319
+
+* Mon Sep 21 2009 Warren Togami <wtogami@redhat.com> 002-4
+- Fix LiveCD boot regression
+
+* Mon Sep 21 2009 Harald Hoyer <harald@redhat.com> 002-3
+- bail out if selinux policy could not be loaded and 
+  selinux=0 not specified on kernel command line 
+  (bug #524113)
+- set finished criteria for dmsquash live images
+
+* Fri Sep 18 2009 Harald Hoyer <harald@redhat.com> 002-2
+- do not cleanup dmraids
+- copy over lvm.conf
+
+* Thu Sep 17 2009 Harald Hoyer <harald@redhat.com> 002-1
+- version 002
+- set correct PATH
+- workaround for broken mdmon implementation
+
+* Wed Sep 16 2009 Harald Hoyer <harald@redhat.com> 001-12
+- removed lvm/mdraid/dmraid lock files
+- add missing ifname= files
+
+* Wed Sep 16 2009 Harald Hoyer <harald@redhat.com> 001-11
+- generate dracut-version during rpm build time
+
+* Tue Sep 15 2009 Harald Hoyer <harald@redhat.com> 001-10
+- add ifname= argument for persistent netdev names
+- new /initqueue-finished to check if the main loop can be left
+- copy mdadm.conf if --mdadmconf set or mdadmconf in dracut.conf
+
+* Wed Sep 09 2009 Harald Hoyer <harald@redhat.com> 001-9
+- added Requires: plymouth-scripts
+
+* Wed Sep 09 2009 Harald Hoyer <harald@redhat.com> 001-8
+- plymouth: use plymouth-populate-initrd
+- add add_drivers for dracut and dracut.conf
+- do not mount /proc and /selinux manually in selinux-load-policy
+
+* Wed Sep 09 2009 Harald Hoyer <harald@redhat.com> 001-7
+- add scsi_wait_scan to be sure everything was scanned
+
+* Tue Sep 08 2009 Harald Hoyer <harald@redhat.com> 001-6
+- fixed several problems with md raid containers
+- fixed selinux policy loading
+
+* Tue Sep 08 2009 Harald Hoyer <harald@redhat.com> 001-5
+- patch does not honor file modes, fixed them manually
+
+* Mon Sep 07 2009 Harald Hoyer <harald@redhat.com> 001-4
+- fixed mdraid for IMSM
+
+* Mon Sep 07 2009 Harald Hoyer <harald@redhat.com> 001-3
+- fixed bug, which prevents installing 61-persistent-storage.rules (bug #520109)
+
+* Thu Sep 03 2009 Harald Hoyer <harald@redhat.com> 001-2
+- fixed missing grep for md
+- reorder cleanup
+
+* Wed Sep 02 2009 Harald Hoyer <harald@redhat.com> 001-1
+- version 001
+- see http://dracut.git.sourceforge.net/git/gitweb.cgi?p=dracut/dracut;a=blob_plain;f=NEWS
+
+* Fri Aug 14 2009 Harald Hoyer <harald@redhat.com> 0.9-1
+- version 0.9
+
+* Thu Aug 06 2009 Harald Hoyer <harald@redhat.com> 0.8-1
+- version 0.8 
+- see http://dracut.git.sourceforge.net/git/gitweb.cgi?p=dracut/dracut;a=blob_plain;f=NEWS
+
+* Fri Jul 24 2009 Harald Hoyer <harald@redhat.com> 0.7-1
+- version 0.7
+- see http://dracut.git.sourceforge.net/git/gitweb.cgi?p=dracut/dracut;a=blob_plain;f=NEWS
+
+* Wed Jul 22 2009 Harald Hoyer <harald@redhat.com> 0.6-1
+- version 0.6
+- see http://dracut.git.sourceforge.net/git/gitweb.cgi?p=dracut/dracut;a=blob_plain;f=NEWS
+
+* Fri Jul 17 2009 Harald Hoyer <harald@redhat.com> 0.5-1
+- version 0.5
+- see http://dracut.git.sourceforge.net/git/gitweb.cgi?p=dracut/dracut;a=blob_plain;f=NEWS
+
+* Sat Jul 04 2009 Harald Hoyer <harald@redhat.com> 0.4-1
+- version 0.4
+- see http://dracut.git.sourceforge.net/git/gitweb.cgi?p=dracut/dracut;a=blob_plain;f=NEWS
+
+* Thu Jul 02 2009 Harald Hoyer <harald@redhat.com> 0.3-1
+- version 0.3
+- see http://dracut.git.sourceforge.net/git/gitweb.cgi?p=dracut/dracut;a=blob_plain;f=NEWS
+
+* Wed Jul 01 2009 Harald Hoyer <harald@redhat.com> 0.2-1
+- version 0.2
+
+* Fri Jun 19 2009 Harald Hoyer <harald@redhat.com> 0.1-1
+- first release
+
+* Thu Dec 18 2008 Jeremy Katz <katzj@redhat.com> - 0.0-1
+- Initial build