diff --git a/0013.patch b/0013.patch
index 129d24c..05d76aa 100644
--- a/0013.patch
+++ b/0013.patch
@@ -58,3 +58,4 @@ index 754ed3c9..9b9d497a 100644
  %{dracutlibdir}/dracut.conf.d/02-rescue.conf
  %if 0%{?fedora} || 0%{?rhel}
  %{_prefix}/lib/kernel/install.d/51-dracut-rescue.install
+
diff --git a/0014.patch b/0014.patch
new file mode 100644
index 0000000..2f8ea48
--- /dev/null
+++ b/0014.patch
@@ -0,0 +1,32 @@
+From 33782aebbffa005415e1a03deeae837d8cf5665e Mon Sep 17 00:00:00 2001
+From: Yu Watanabe <watanabe.yu+github@gmail.com>
+Date: Mon, 30 Jul 2018 02:26:01 +0900
+Subject: [PATCH] spec: warpclock is not available on s390 or s390x
+
+---
+ dracut.spec | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/dracut.spec b/dracut.spec
+index 9b9d497a..ce69fa1f 100644
+--- a/dracut.spec
++++ b/dracut.spec
+@@ -224,6 +224,7 @@ rm -fr -- $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/98integrity
+ 
+ %ifnarch s390 s390x
+ # remove architecture specific modules
++rm -fr -- $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/00warpclock
+ 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
+@@ -316,7 +317,9 @@ install -m 0755 51-dracut-rescue-postinst.sh $RPM_BUILD_ROOT%{_sysconfdir}/kerne
+ %endif
+ %{dracutlibdir}/modules.d/00bash
+ %{dracutlibdir}/modules.d/00systemd
++%ifnarch s390 s390x
+ %{dracutlibdir}/modules.d/00warpclock
++%endif
+ %{dracutlibdir}/modules.d/01systemd-initrd
+ %{dracutlibdir}/modules.d/03modsign
+ %{dracutlibdir}/modules.d/03rescue
+
diff --git a/0015.patch b/0015.patch
new file mode 100644
index 0000000..25b6599
--- /dev/null
+++ b/0015.patch
@@ -0,0 +1,45 @@
+From be98291cafa1080ed18a976c6452ae2be1c7c747 Mon Sep 17 00:00:00 2001
+From: Yu Watanabe <watanabe.yu+github@gmail.com>
+Date: Mon, 30 Jul 2018 02:26:48 +0900
+Subject: [PATCH] spec: sort modules
+
+Also drops remaining %defattr.
+---
+ dracut.spec | 9 +++------
+ 1 file changed, 3 insertions(+), 6 deletions(-)
+
+diff --git a/dracut.spec b/dracut.spec
+index ce69fa1f..d24c6f36 100644
+--- a/dracut.spec
++++ b/dracut.spec
+@@ -320,6 +320,9 @@ install -m 0755 51-dracut-rescue-postinst.sh $RPM_BUILD_ROOT%{_sysconfdir}/kerne
+ %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
+@@ -403,11 +406,6 @@ install -m 0755 51-dracut-rescue-postinst.sh $RPM_BUILD_ROOT%{_sysconfdir}/kerne
+ %{_prefix}/lib/kernel/install.d/50-dracut.install
+ %endif
+ 
+-%if 0%{?fedora} || 0%{?rhel} || 0%{?suse_version}
+-%defattr(-,root,root,0755)
+-%{dracutlibdir}/modules.d/01fips
+-%endif
+-
+ %files network
+ %{dracutlibdir}/modules.d/02systemd-networkd
+ %{dracutlibdir}/modules.d/40network
+@@ -436,7 +434,6 @@ install -m 0755 51-dracut-rescue-postinst.sh $RPM_BUILD_ROOT%{_sysconfdir}/kerne
+ %{dracutlibdir}/modules.d/90livenet
+ 
+ %files tools
+-
+ %if %{with doc}
+ %doc %{_mandir}/man8/dracut-catimages.8*
+ %endif
+
diff --git a/0016.patch b/0016.patch
new file mode 100644
index 0000000..7b6e41d
--- /dev/null
+++ b/0016.patch
@@ -0,0 +1,34 @@
+From 99df3d22be14690260371311086a439c83fdc6b4 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Thu, 2 Aug 2018 16:32:41 +0200
+Subject: [PATCH] mdraid/parse-md.sh: also accept rd.md.uuid with ":"
+
+convert rd.md.uuid=32ef2172:f056:6fa7:66a8:2f7fc8b1798
+to udev rules in the correct UUID format 32ef2172-f056-6fa7-66a8-2f7fcf8b1798
+---
+ modules.d/90mdraid/parse-md.sh | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/modules.d/90mdraid/parse-md.sh b/modules.d/90mdraid/parse-md.sh
+index c422b24e..428f9515 100755
+--- a/modules.d/90mdraid/parse-md.sh
++++ b/modules.d/90mdraid/parse-md.sh
+@@ -14,6 +14,9 @@ else
+                 if [ "${line%%UUID CHECK}" != "$line" ]; then
+                     printf 'IMPORT{program}="/sbin/mdadm --examine --export $tempnode"\n'
+                     for uuid in $MD_UUID; do
++                        uuid=$(str_replace "$uuid" "-" "")
++                        uuid=$(str_replace "$uuid" ":" "")
++                        uuid="$(expr substr $uuid 1 8)-$(expr substr $uuid 9 4)-$(expr substr $uuid 13 4)-$(expr substr $uuid 17 4)-$(expr substr $uuid 21 12)"
+                         printf 'ENV{MD_UUID}=="%s", GOTO="md_uuid_ok"\n' $uuid
+                         printf 'ENV{ID_FS_UUID}=="%s", GOTO="md_uuid_ok"\n' $uuid
+                     done;
+@@ -29,6 +32,7 @@ else
+             if strstr "$uuid" "-"; then
+                 # convert ID_FS_UUID to MD_UUID format
+                 uuid=$(str_replace "$uuid" "-" "")
++                uuid=$(str_replace "$uuid" ":" "")
+                 uuid="$(expr substr $uuid 1 8):$(expr substr $uuid 9 8):$(expr substr $uuid 17 8):$(expr substr $uuid 25 8)"
+             fi
+             wait_for_dev "/dev/disk/by-id/md-uuid-${uuid}"
+
diff --git a/0017.patch b/0017.patch
new file mode 100644
index 0000000..1e9e238
--- /dev/null
+++ b/0017.patch
@@ -0,0 +1,43 @@
+From a0c915b1e4585ccf286dd38a5cd7d8b89e0346c5 Mon Sep 17 00:00:00 2001
+From: Nicolas Chauvet <kwizart@gmail.com>
+Date: Fri, 3 Aug 2018 23:39:51 +0200
+Subject: [PATCH] Add gpio and pinctrl drivers for arm*/aarch64
+
+This is needed since few gpio/pinctrl can be built as modules and are
+useful on early boot.
+
+One example is jetson-tx1 where sata and external mmc can work only
+after loading pinctrl-max77620 and gpio-max77620 modules.
+
+Having theses kind of drivers bundled into the initramfs will also
+avoid some deferred probes.
+
+V2: add pinctrl for all arches
+
+Signed-off-by: Nicolas Chauvet <kwizart@gmail.com>
+---
+ modules.d/90kernel-modules/module-setup.sh | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/modules.d/90kernel-modules/module-setup.sh b/modules.d/90kernel-modules/module-setup.sh
+index 89b33ce6..f01470e7 100755
+--- a/modules.d/90kernel-modules/module-setup.sh
++++ b/modules.d/90kernel-modules/module-setup.sh
+@@ -25,7 +25,7 @@ installkernel() {
+             ohci-hcd ohci-pci \
+             uhci-hcd \
+             xhci-hcd xhci-pci xhci-plat-hcd \
+-            pinctrl-cherryview \
++            "=drivers/pinctrl" \
+             ${NULL}
+ 
+         hostonly=$(optional_hostonly) instmods \
+@@ -50,6 +50,7 @@ installkernel() {
+                 "=drivers/clk" \
+                 "=drivers/dma" \
+                 "=drivers/extcon" \
++                "=drivers/gpio" \
+                 "=drivers/hwspinlock" \
+                 "=drivers/i2c/busses" \
+                 "=drivers/mfd" \
+
diff --git a/0018.patch b/0018.patch
new file mode 100644
index 0000000..2627700
--- /dev/null
+++ b/0018.patch
@@ -0,0 +1,23 @@
+From a762dedb60aef8f43a625e1e3c10c97664f1d74a Mon Sep 17 00:00:00 2001
+From: Lukas Nykryn <lnykryn@redhat.com>
+Date: Thu, 9 Aug 2018 12:14:20 +0200
+Subject: [PATCH] dracut-functions: fix the word splitting
+
+---
+ dracut-functions.sh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/dracut-functions.sh b/dracut-functions.sh
+index 7c408f83..1431dd18 100755
+--- a/dracut-functions.sh
++++ b/dracut-functions.sh
+@@ -683,7 +683,7 @@ get_loaded_kernel_modules ()
+     local modules=( )
+     while read _module _size _used _used_by; do
+         modules+=( "$_module" )
+-    done <<< $(lsmod | sed -n '1!p')
++    done <<< "$(lsmod | sed -n '1!p')"
+     printf '%s\n' "${modules[@]}" | sort
+ }
+ 
+
diff --git a/0019.patch b/0019.patch
new file mode 100644
index 0000000..2b299e8
--- /dev/null
+++ b/0019.patch
@@ -0,0 +1,79 @@
+From 746135dd1ebc8dc7e26132bfa14ac159db7b2b95 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Mon, 13 Aug 2018 10:01:36 +0200
+Subject: [PATCH] mdraid: better handling of various UUID formats
+
+---
+ modules.d/90mdraid/mdraid_start.sh |  4 ++++
+ modules.d/90mdraid/parse-md.sh     | 19 ++++++++-----------
+ 2 files changed, 12 insertions(+), 11 deletions(-)
+
+diff --git a/modules.d/90mdraid/mdraid_start.sh b/modules.d/90mdraid/mdraid_start.sh
+index 2f5daff1..77e843d7 100755
+--- a/modules.d/90mdraid/mdraid_start.sh
++++ b/modules.d/90mdraid/mdraid_start.sh
+@@ -39,6 +39,9 @@ _md_force_run() {
+     _offroot=$(strstr "$(mdadm --help-options 2>&1)" offroot && echo --offroot)
+ 
+     if [ -n "$_MD_UUID" ]; then
++        _MD_UUID=$(str_replace "$_MD_UUID" "-" "")
++        _MD_UUID=$(str_replace "$_MD_UUID" ":" "")
++
+         for _md in /dev/md[0-9_]*; do
+             [ -b "$_md" ] || continue
+             _UUID=$(
+@@ -50,6 +53,7 @@ _md_force_run() {
+                 )
+ 
+             [ -z "$_UUID" ] && continue
++            _UUID=$(str_replace "$_UUID" ":" "")
+ 
+             # check if we should handle this device
+             strstr " $_MD_UUID " " $_UUID " || continue
+diff --git a/modules.d/90mdraid/parse-md.sh b/modules.d/90mdraid/parse-md.sh
+index 428f9515..4d9baa52 100755
+--- a/modules.d/90mdraid/parse-md.sh
++++ b/modules.d/90mdraid/parse-md.sh
+@@ -1,6 +1,9 @@
+ #!/bin/sh
+ 
+ MD_UUID=$(getargs rd.md.uuid -d rd_MD_UUID=)
++# normalize the uuid
++MD_UUID=$(str_replace "$MD_UUID" "-" "")
++MD_UUID=$(str_replace "$MD_UUID" ":" "")
+ 
+ if ( ! [ -n "$MD_UUID" ] && ! getargbool 0 rd.auto ) || ! getargbool 1 rd.md -d -n rd_NO_MD; then
+     info "rd.md=0: removing MD RAID activation"
+@@ -12,13 +15,12 @@ else
+             [ -e "$f" ] || continue
+             while read line || [ -n "$line" ]; do
+                 if [ "${line%%UUID CHECK}" != "$line" ]; then
++                    for uuid in $MD_UUID; do
++                        printf 'ENV{ID_FS_UUID}=="%s", GOTO="md_uuid_ok"\n' "$(expr substr $uuid 1 8)-$(expr substr $uuid 9 4)-$(expr substr $uuid 13 4)-$(expr substr $uuid 17 4)-$(expr substr $uuid 21 12)"
++                    done;
+                     printf 'IMPORT{program}="/sbin/mdadm --examine --export $tempnode"\n'
+                     for uuid in $MD_UUID; do
+-                        uuid=$(str_replace "$uuid" "-" "")
+-                        uuid=$(str_replace "$uuid" ":" "")
+-                        uuid="$(expr substr $uuid 1 8)-$(expr substr $uuid 9 4)-$(expr substr $uuid 13 4)-$(expr substr $uuid 17 4)-$(expr substr $uuid 21 12)"
+-                        printf 'ENV{MD_UUID}=="%s", GOTO="md_uuid_ok"\n' $uuid
+-                        printf 'ENV{ID_FS_UUID}=="%s", GOTO="md_uuid_ok"\n' $uuid
++                        printf 'ENV{MD_UUID}=="%s", GOTO="md_uuid_ok"\n' "$(expr substr $uuid 1 8):$(expr substr $uuid 9 8):$(expr substr $uuid 17 8):$(expr substr $uuid 25 8)"
+                     done;
+                     printf 'GOTO="md_end"\n'
+                     printf 'LABEL="md_uuid_ok"\n'
+@@ -29,12 +31,7 @@ else
+             mv "${f}.new" "$f"
+         done
+         for uuid in $MD_UUID; do
+-            if strstr "$uuid" "-"; then
+-                # convert ID_FS_UUID to MD_UUID format
+-                uuid=$(str_replace "$uuid" "-" "")
+-                uuid=$(str_replace "$uuid" ":" "")
+-                uuid="$(expr substr $uuid 1 8):$(expr substr $uuid 9 8):$(expr substr $uuid 17 8):$(expr substr $uuid 25 8)"
+-            fi
++            uuid="$(expr substr $uuid 1 8):$(expr substr $uuid 9 8):$(expr substr $uuid 17 8):$(expr substr $uuid 25 8)"
+             wait_for_dev "/dev/disk/by-id/md-uuid-${uuid}"
+         done
+     fi
+
diff --git a/0020.patch b/0020.patch
new file mode 100644
index 0000000..25ea3d5
--- /dev/null
+++ b/0020.patch
@@ -0,0 +1,70 @@
+From 6f0500ed4afa29ae8edc997933d598bc5862b4ce Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Mon, 13 Aug 2018 10:56:53 +0200
+Subject: [PATCH] iscsi: remove $() where it does not fit
+
+also simplify iscsiadm command to one call
+---
+ modules.d/95iscsi/iscsiroot.sh | 33 ++++++++++++++++++---------------
+ 1 file changed, 18 insertions(+), 15 deletions(-)
+
+diff --git a/modules.d/95iscsi/iscsiroot.sh b/modules.d/95iscsi/iscsiroot.sh
+index 5ac0ad9a..76c8b3fe 100755
+--- a/modules.d/95iscsi/iscsiroot.sh
++++ b/modules.d/95iscsi/iscsiroot.sh
+@@ -109,7 +109,7 @@ handle_netroot()
+     arg=$(getarg rd.iscsi.in.password -d iscsi_in_password=)
+     [ -n "$arg" ] && iscsi_in_password=$arg
+     for p in $(getargs rd.iscsi.param -d iscsi_param); do
+-	iscsi_param="$iscsi_param $p"
++        iscsi_param="$iscsi_param $p"
+     done
+ 
+     parse_iscsi_root "$1" || return 1
+@@ -208,28 +208,31 @@ handle_netroot()
+             echo "iscsi_lun=$iscsi_lun . /bin/mount-lun.sh " > $hookdir/mount/01-$$-iscsi.sh
+     fi
+ 
+-    ### ToDo: Upstream calls systemd-run - Shall we, do we have to port this?
+-
+     targets=$(iscsiadm -m discovery -t st -p $iscsi_target_ip:${iscsi_target_port:+$iscsi_target_port} | sed 's/^.*iqn/iqn/')
+     [ -z "$targets" ] && echo "Target discovery to $iscsi_target_ip:${iscsi_target_port:+$iscsi_target_port} failed with status $?" && exit 1
+ 
+     for target in $iscsi_target_name; do
+         case "$targets" in
+         *$target*)
++            EXTRA=""
+             if [ -n "$iscsi_iface_name" ]; then
+-                $(iscsiadm -m iface -I $iscsi_iface_name --op=new)
+-                [ -n "$iscsi_initiator" ] && $(iscsiadm -m iface -I $iscsi_iface_name --op=update --name=iface.initiatorname --value=$iscsi_initiator)
+-                [ -n "$iscsi_netdev_name" ] && $(iscsiadm -m iface -I $iscsi_iface_name --op=update --name=iface.net_ifacename --value=$iscsi_netdev_name)
+-                COMMAND="iscsiadm -m node -T $target -p $iscsi_target_ip${iscsi_target_port:+:$iscsi_target_port} -I $iscsi_iface_name --op=update"
+-            else
+-                COMMAND="iscsiadm -m node -T $target -p $iscsi_target_ip${iscsi_target_port:+:$iscsi_target_port} --op=update"
++                iscsiadm -m iface -I $iscsi_iface_name --op=new
++                EXTRA=" ${iscsi_netdev_name:+--name=iface.net_ifacename --value=$iscsi_netdev_name} "
++                EXTRA="$EXTRA ${iscsi_initiator:+--name=iface.initiatorname --value=$iscsi_initiator} "
+             fi
+-            $($COMMAND --name=node.startup --value=onboot)
+-            [ -n "$iscsi_username" ] && $($COMMAND --name=node.session.auth.username --value=$iscsi_username)
+-            [ -n "$iscsi_password" ] && $($COMMAND --name=node.session.auth.password --value=$iscsi_password)
+-            [ -n "$iscsi_in_username" ] && $($COMMAND --name=node.session.auth.username_in --value=$iscsi_in_username)
+-            [ -n "$iscsi_in_password" ] && $($COMMAND --name=node.session.auth.password_in --value=$iscsi_in_password)
+-            [ -n "$iscsi_param" ] && for param in $iscsi_param; do $($COMMAND --name=${param%=*} --value=${param#*=}); done
++            [ -n "$iscsi_param" ] && for param in $iscsi_param; do EXTRA="$EXTRA --name=${param%=*} --value=${param#*=}"; done
++
++            iscsiadm -m node -T $target \
++                     ${iscsi_iface_name:+-I $iscsi_iface_name} \
++                     -p $iscsi_target_ip${iscsi_target_port:+:$iscsi_target_port} \
++                     --op=update \
++                     --name=node.startup --value=onboot \
++                     ${iscsi_username:+   --name=node.session.auth.username    --value=$iscsi_username} \
++                     ${iscsi_password:+   --name=node.session.auth.password    --value=$iscsi_password} \
++                     ${iscsi_in_username:+--name=node.session.auth.username_in --value=$iscsi_in_username} \
++                     ${iscsi_in_password:+--name=node.session.auth.password_in --value=$iscsi_in_password} \
++                     $EXTRA \
++                     $NULL
+         ;;
+         *)
+         ;;
+
diff --git a/0021.patch b/0021.patch
new file mode 100644
index 0000000..e387044
--- /dev/null
+++ b/0021.patch
@@ -0,0 +1,32 @@
+From 0a80cda0ea1186bb3b384158aeda491443ae93ff Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Mon, 13 Aug 2018 11:30:03 +0200
+Subject: [PATCH] dracut.spec: remove warpclock from z-series, not the other
+ way round
+
+---
+ dracut.spec | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/dracut.spec b/dracut.spec
+index d24c6f36..09c74478 100644
+--- a/dracut.spec
++++ b/dracut.spec
+@@ -224,7 +224,6 @@ rm -fr -- $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/98integrity
+ 
+ %ifnarch s390 s390x
+ # remove architecture specific modules
+-rm -fr -- $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/00warpclock
+ 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
+@@ -236,6 +235,8 @@ 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
+
diff --git a/0022.patch b/0022.patch
new file mode 100644
index 0000000..7d855ba
--- /dev/null
+++ b/0022.patch
@@ -0,0 +1,24 @@
+From 26aea0299a7ec702972cbf8b5556731b762dcde9 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Mon, 13 Aug 2018 11:37:44 +0200
+Subject: [PATCH] multipath-shutdown: fix shell syntax
+
+seems like a misplaced $()
+---
+ modules.d/90multipath/multipath-shutdown.sh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/modules.d/90multipath/multipath-shutdown.sh b/modules.d/90multipath/multipath-shutdown.sh
+index 47e9990c..f160f45e 100755
+--- a/modules.d/90multipath/multipath-shutdown.sh
++++ b/modules.d/90multipath/multipath-shutdown.sh
+@@ -1,7 +1,7 @@
+ #!/bin/bash
+ 
+ for i in $(multipath -l -v1); do
+-    if ! $(dmsetup table $i | sed -n '/.*queue_if_no_path.*/q1') ; then
++    if ! dmsetup table $i | sed -n '/.*queue_if_no_path.*/q1' ; then
+         dmsetup message $i 0 fail_if_no_path
+     fi
+ done
+
diff --git a/0023.patch b/0023.patch
new file mode 100644
index 0000000..c776b02
--- /dev/null
+++ b/0023.patch
@@ -0,0 +1,150 @@
+From 6058b06b86ce1a505a640c78896eae32768077c1 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Mon, 13 Aug 2018 16:27:59 +0200
+Subject: [PATCH] test/{TEST-50-MULTINIC,TEST-70-BONDBRIDGETEAMVLAN}: use
+ qemu-3.0 syntax
+
+use qemu-3.0 syntax for network devices
+---
+ test/TEST-50-MULTINIC/test.sh                  | 20 +++++-----
+ test/TEST-70-BONDBRIDGETEAMVLAN/server-init.sh |  4 ++
+ test/TEST-70-BONDBRIDGETEAMVLAN/test.sh        | 53 ++++++++++++++------------
+ 3 files changed, 43 insertions(+), 34 deletions(-)
+
+diff --git a/test/TEST-50-MULTINIC/test.sh b/test/TEST-50-MULTINIC/test.sh
+index 7c108aa0..de40790f 100755
+--- a/test/TEST-50-MULTINIC/test.sh
++++ b/test/TEST-50-MULTINIC/test.sh
+@@ -51,15 +51,17 @@ client_test() {
+     fi
+ 
+     $testdir/run-qemu -drive format=raw,index=0,media=disk,file="$TESTDIR"/client.img -m 512M  -smp 2 -nographic \
+-        -net socket,vlan=0,connect=127.0.0.1:12350 \
+-        -net nic,vlan=0,macaddr=52:54:00:12:34:$mac1,model=e1000 \
+-        -net nic,vlan=0,macaddr=52:54:00:12:34:$mac2,model=e1000 \
+-        -net nic,vlan=0,macaddr=52:54:00:12:34:$mac3,model=e1000 \
+-        -net nic,vlan=1,macaddr=52:54:00:12:34:98,model=e1000 \
+-        -net nic,vlan=2,macaddr=52:54:00:12:34:99,model=e1000 \
+-        -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" \
++      -net socket,connect=127.0.0.1:12350 \
++      -net nic,macaddr=52:54:00:12:34:$mac1,model=e1000 \
++      -net nic,macaddr=52:54:00:12:34:$mac2,model=e1000 \
++      -net nic,macaddr=52:54:00:12:34:$mac3,model=e1000 \
++      -netdev hubport,id=n1,hubid=1 \
++      -netdev hubport,id=n2,hubid=2 \
++      --device e1000,netdev=n1,mac=52:54:00:12:34:98 \
++      -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" \
+         -initrd "$TESTDIR"/initramfs.testing
+ 
+     { read OK; read IFACES; } < "$TESTDIR"/client.img
+diff --git a/test/TEST-70-BONDBRIDGETEAMVLAN/server-init.sh b/test/TEST-70-BONDBRIDGETEAMVLAN/server-init.sh
+index 562feae6..503ed9ed 100755
+--- a/test/TEST-70-BONDBRIDGETEAMVLAN/server-init.sh
++++ b/test/TEST-70-BONDBRIDGETEAMVLAN/server-init.sh
+@@ -67,6 +67,10 @@ 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
+diff --git a/test/TEST-70-BONDBRIDGETEAMVLAN/test.sh b/test/TEST-70-BONDBRIDGETEAMVLAN/test.sh
+index 277bbd01..eadf09f1 100755
+--- a/test/TEST-70-BONDBRIDGETEAMVLAN/test.sh
++++ b/test/TEST-70-BONDBRIDGETEAMVLAN/test.sh
+@@ -18,14 +18,14 @@ run_server() {
+         -hda "$TESTDIR"/server.ext3 \
+         -m 512M -smp 2 \
+         -display none \
+-        -net socket,vlan=0,listen=127.0.0.1:12370 \
+-        -net socket,vlan=1,listen=127.0.0.1:12371 \
+-        -net socket,vlan=2,listen=127.0.0.1:12372 \
+-        -net socket,vlan=3,listen=127.0.0.1:12373 \
+-        -net nic,vlan=0,macaddr=52:54:01:12:34:56,model=e1000 \
+-        -net nic,vlan=1,macaddr=52:54:01:12:34:57,model=e1000 \
+-        -net nic,vlan=2,macaddr=52:54:01:12:34:58,model=e1000 \
+-        -net nic,vlan=3,macaddr=52:54:01:12:34:59,model=e1000 \
++        -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 \
+@@ -58,22 +58,25 @@ client_test() {
+         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
+ 
+     $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 \
++        -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
+-
+     { 
+         read OK
+         if [[ "$OK" != "OK" ]]; then
+@@ -113,19 +116,19 @@ test_client() {
+     client_test "Multiple VLAN" \
+         "yes" \
+         "
+-vlan=vlan0001:ens4
+-vlan=vlan2:ens4
+-vlan=ens4.3:ens4
+-vlan=ens4.0004:ens4
++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:ens4.3:none
+-ip=192.168.57.104::192.168.57.1:24:test:ens4.0004: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 ens4.0004 ens4.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-ens4.0004 # Generated by dracut initrd NAME="ens4.0004" ONBOOT=yes NETBOOT=yes BOOTPROTO=none IPADDR="192.168.57.104" PREFIX="24" GATEWAY="192.168.57.1" TYPE=Vlan DEVICE="ens4.0004" VLAN=yes PHYSDEV="ens4" /run/initramfs/state/etc/sysconfig/network-scripts/ifcfg-ens4.3 # Generated by dracut initrd NAME="ens4.3" ONBOOT=yes NETBOOT=yes BOOTPROTO=none IPADDR="192.168.56.103" PREFIX="24" GATEWAY="192.168.56.1" TYPE=Vlan DEVICE="ens4.3" VLAN=yes PHYSDEV="ens4" /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="ens4" /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="ens4" EOF ' \
++    '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" \
+
diff --git a/0024.patch b/0024.patch
new file mode 100644
index 0000000..5660d8b
--- /dev/null
+++ b/0024.patch
@@ -0,0 +1,48 @@
+From ab94a204e0cb22bcaa2b2863dee9ffb9f22e91c5 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Tue, 14 Aug 2018 11:03:11 +0200
+Subject: [PATCH] load modules earlier for iscsi via dhcp root-path
+
+---
+ 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 f884e684..7a64d888 100755
+--- a/modules.d/95iscsi/parse-iscsiroot.sh
++++ b/modules.d/95iscsi/parse-iscsiroot.sh
+@@ -90,19 +90,13 @@ if [ -n "$iscsi_firmware" ]; then
+     initqueue --unique --onetime --settled /sbin/iscsiroot online "iscsi:" "'$NEWROOT'"
+ fi
+ 
+-if [ -z "$netroot" ] || ! [ "${netroot%%:*}" = "iscsi" ]; then
+-    return 1
+-fi
+-
+-initqueue --unique --onetime --timeout /sbin/iscsiroot timeout "$netroot" "$NEWROOT"
+-
+-initqueue --onetime modprobe --all -b -q qla4xxx cxgb3i cxgb4i bnx2i be2iscsi qedi
+-
+ # ISCSI actually supported?
+ if ! [ -e /sys/module/iscsi_tcp ]; then
+     modprobe -b -q iscsi_tcp || die "iscsiroot requested but kernel/initrd does not support iscsi"
+ fi
+ 
++modprobe --all -b -q qla4xxx cxgb3i cxgb4i bnx2i be2iscsi
++
+ if [ -n "$netroot" ] && [ "$root" != "/dev/root" ] && [ "$root" != "dhcp" ]; then
+     if ! getargbool 1 rd.neednet >/dev/null || ! getarg "ip="; then
+         initqueue --unique --onetime --settled /sbin/iscsiroot dummy "'$netroot'" "'$NEWROOT'"
+@@ -141,6 +135,11 @@ if [ -z $iscsi_initiator ] && [ -f /sys/firmware/ibft/initiator/initiator-name ]
+     fi
+ fi
+ 
++if [ -z "$netroot" ] || ! [ "${netroot%%:*}" = "iscsi" ]; then
++    return 1
++fi
++
++initqueue --unique --onetime --timeout /sbin/iscsiroot timeout "$netroot" "$NEWROOT"
+ 
+ for nroot in $(getargs netroot); do
+     [ "${nroot%%:*}" = "iscsi" ] || continue
+
diff --git a/0025.patch b/0025.patch
new file mode 100644
index 0000000..f2cbdcf
--- /dev/null
+++ b/0025.patch
@@ -0,0 +1,32 @@
+From ffbd37d7844b96611506eb4631a3e4f3b5e74c86 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Tue, 14 Aug 2018 11:03:48 +0200
+Subject: [PATCH] TEST-31-ISCSI-MULTI: use different port than TEST-30
+
+---
+ test/TEST-31-ISCSI-MULTI/test.sh | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/test/TEST-31-ISCSI-MULTI/test.sh b/test/TEST-31-ISCSI-MULTI/test.sh
+index 2f2b6ed5..c2f86ac8 100755
+--- a/test/TEST-31-ISCSI-MULTI/test.sh
++++ b/test/TEST-31-ISCSI-MULTI/test.sh
+@@ -24,7 +24,7 @@ run_server() {
+         ${SERIAL:--serial file:"$TESTDIR"/server.log} \
+         -net nic,macaddr=52:54:00:12:34:56,model=e1000 \
+         -net nic,macaddr=52:54:00:12:34:57,model=e1000 \
+-        -net socket,listen=127.0.0.1:12330 \
++        -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" \
+         -initrd $TESTDIR/initramfs.server \
+@@ -49,7 +49,7 @@ run_client() {
+         -m 512M  -smp 2 -nographic \
+         -net nic,macaddr=52:54:00:12:34:00,model=e1000 \
+         -net nic,macaddr=52:54:00:12:34:01,model=e1000 \
+-        -net socket,connect=127.0.0.1:12330 \
++        -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 $*" \
+         -initrd $TESTDIR/initramfs.testing
+
diff --git a/0026.patch b/0026.patch
new file mode 100644
index 0000000..d30bef7
--- /dev/null
+++ b/0026.patch
@@ -0,0 +1,231 @@
+From 82fe4ea0a5a745c920aa396775b9ebb52b4d2927 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Tue, 14 Aug 2018 11:04:17 +0200
+Subject: [PATCH] enable parallel test suite
+
+$ time sudo make -j SKIP=14 V=2 check
+make[1]: Entering directory '/home/harald/git/dracut/test/TEST-13-ENC-RAID-LVM'
+make[1]: Entering directory '/home/harald/git/dracut/test/TEST-40-NBD'
+make[1]: Entering directory '/home/harald/git/dracut/test/TEST-04-FULL-SYSTEMD'
+make[1]: Entering directory '/home/harald/git/dracut/test/TEST-12-RAID-DEG'
+make[1]: Entering directory '/home/harald/git/dracut/test/TEST-15-BTRFSRAID'
+make[1]: Entering directory '/home/harald/git/dracut/test/TEST-16-DMSQUASH'
+make[1]: Entering directory '/home/harald/git/dracut/test/TEST-17-LVM-THIN'
+make[1]: Entering directory '/home/harald/git/dracut/test/TEST-11-LVM'
+make[1]: Entering directory '/home/harald/git/dracut/test/TEST-31-ISCSI-MULTI'
+make[1]: Entering directory '/home/harald/git/dracut/test/TEST-20-NFS'
+make[1]: Entering directory '/home/harald/git/dracut/test/TEST-99-RPM'
+make[1]: Entering directory '/home/harald/git/dracut/test/TEST-02-SYSTEMD'
+make[1]: Entering directory '/home/harald/git/dracut/test/TEST-30-ISCSI'
+make[1]: Entering directory '/home/harald/git/dracut/test/TEST-01-BASIC'
+make[1]: Entering directory '/home/harald/git/dracut/test/TEST-03-USR-MOUNT'
+make[1]: Entering directory '/home/harald/git/dracut/test/TEST-70-BONDBRIDGETEAMVLAN'
+make[1]: Entering directory '/home/harald/git/dracut/test/TEST-50-MULTINIC'
+make[1]: Entering directory '/home/harald/git/dracut/test/TEST-10-RAID'
+make[1]: Entering directory '/home/harald/git/dracut/test/TEST-18-LVM-ENC-LV'
+TEST: root filesystem on an encrypted LVM PV on a degraded RAID-5 [STARTED]
+TEST: root filesystem on NBD [STARTED]
+TEST: root filesystem on NBD [SKIPPED]
+TEST: Full systemd serialization/deserialization test with /usr mount [STARTED]
+TEST: root filesystem on multiple device btrfs [STARTED]
+make[1]: Leaving directory '/home/harald/git/dracut/test/TEST-40-NBD'
+TEST: root filesystem on a LiveCD dmsquash filesystem [STARTED]
+TEST: root filesystem on a LiveCD dmsquash filesystem [SKIPPED]
+make[1]: Leaving directory '/home/harald/git/dracut/test/TEST-16-DMSQUASH'
+TEST: root filesystem on LVM on encrypted partitions of a RAID-5 [STARTED]
+TEST: root filesystem on LVM PV [STARTED]
+TEST: rpm integrity after dracut and kernel install [STARTED]
+TEST: root filesystem on NFS [STARTED]
+TEST: root filesystem over iSCSI [STARTED]
+TEST: root filesystem on LVM PV with thin pool [STARTED]
+TEST: root filesystem over iSCSI [STARTED]
+TEST: root filesystem on a ext3 filesystem [STARTED]
+TEST: root filesystem on a ext3 filesystem [STARTED]
+TEST: root filesystem on a btrfs filesystem with /usr subvolume [STARTED]
+TEST: root filesystem on NFS with bridging/bonding/vlan [STARTED]
+TEST: root filesystem on NFS with multiple nics [STARTED]
+TEST: root filesystem on an encrypted LVM PV on a RAID-5 [STARTED]
+TEST: root filesystem on LVM on encrypted partitions of a RAID-5 [STARTED]
+TEST: root filesystem on LVM PV [OK]
+make[1]: Leaving directory '/home/harald/git/dracut/test/TEST-11-LVM'
+TEST: root filesystem on multiple device btrfs [OK]
+make[1]: Leaving directory '/home/harald/git/dracut/test/TEST-15-BTRFSRAID'
+TEST: root filesystem on LVM PV with thin pool [OK]
+make[1]: Leaving directory '/home/harald/git/dracut/test/TEST-17-LVM-THIN'
+TEST: root filesystem on a ext3 filesystem [OK]
+make[1]: Leaving directory '/home/harald/git/dracut/test/TEST-02-SYSTEMD'
+TEST: root filesystem on a btrfs filesystem with /usr subvolume [OK]
+make[1]: Leaving directory '/home/harald/git/dracut/test/TEST-03-USR-MOUNT'
+TEST: root filesystem on LVM on encrypted partitions of a RAID-5 [OK]
+make[1]: Leaving directory '/home/harald/git/dracut/test/TEST-18-LVM-ENC-LV'
+TEST: Full systemd serialization/deserialization test with /usr mount [OK]
+make[1]: Leaving directory '/home/harald/git/dracut/test/TEST-04-FULL-SYSTEMD'
+TEST: root filesystem on an encrypted LVM PV on a RAID-5 [OK]
+make[1]: Leaving directory '/home/harald/git/dracut/test/TEST-10-RAID'
+TEST: root filesystem on LVM on encrypted partitions of a RAID-5 [OK]
+make[1]: Leaving directory '/home/harald/git/dracut/test/TEST-13-ENC-RAID-LVM'
+TEST: root filesystem over iSCSI [OK]
+make[1]: Leaving directory '/home/harald/git/dracut/test/TEST-30-ISCSI'
+TEST: root filesystem on a ext3 filesystem [OK]
+make[1]: Leaving directory '/home/harald/git/dracut/test/TEST-01-BASIC'
+TEST: root filesystem over iSCSI [OK]
+make[1]: Leaving directory '/home/harald/git/dracut/test/TEST-31-ISCSI-MULTI'
+TEST: rpm integrity after dracut and kernel install [OK]
+make[1]: Leaving directory '/home/harald/git/dracut/test/TEST-99-RPM'
+TEST: root filesystem on NFS [OK]
+make[1]: Leaving directory '/home/harald/git/dracut/test/TEST-20-NFS'
+TEST: root filesystem on NFS with bridging/bonding/vlan [OK]
+make[1]: Leaving directory '/home/harald/git/dracut/test/TEST-70-BONDBRIDGETEAMVLAN'
+TEST: root filesystem on an encrypted LVM PV on a degraded RAID-5 [OK]
+make[1]: Leaving directory '/home/harald/git/dracut/test/TEST-12-RAID-DEG'
+TEST: root filesystem on NFS with multiple nics [OK]
+make[1]: Leaving directory '/home/harald/git/dracut/test/TEST-50-MULTINIC'
+
+real	9m3,969s
+user	22m50,323s
+sys	5m24,411s
+---
+ test/Makefile       | 21 +++++++++--------
+ test/test-functions | 68 ++++++++++++++++++++++++++++-------------------------
+ 2 files changed, 47 insertions(+), 42 deletions(-)
+
+diff --git a/test/Makefile b/test/Makefile
+index eaa944fb..0b33660b 100644
+--- a/test/Makefile
++++ b/test/Makefile
+@@ -1,15 +1,16 @@
+-.PHONY: all check clean
++.PHONY: all check clean $(wildcard TEST-??-*)
+ 
+-check:
++$(wildcard TEST-??-*):
+ 	@[ "$$EUID" == "0" ] || { echo "'check' must be run as root! Please use 'sudo'."; exit 1; }
+-	@{ ret=0; \
+-	for i in TEST-[0-9]*; do \
+-		[ -d $$i ] || continue ; \
+-		[ -f $$i/Makefile ] || continue ; \
+-		if [ -n "$$TESTS" ]; then t=$${i##TEST-}; t=$${t%%-*}; [ "$${TESTS#*$$t*}" != "$$TESTS" ] || continue; fi; \
+-		if [ -n "$$SKIP" ]; then t=$${i##TEST-}; t=$${t%%-*}; [ "$${SKIP#*$$t*}" != "$$SKIP" ] && continue; fi; \
+-		$(MAKE) -C $$i all ; ret=$$((ret + $$?)); \
+-	done; exit $$ret; }
++	@{ \
++		[ -d $@ ] || exit 0; \
++		[ -f $@/Makefile ] || exit 0; \
++		if [ -n "$$TESTS" ]; then t=$${$@##TEST-}; t=$${t%%-*}; [ "$${TESTS#*$$t*}" != "$$TESTS" ] || exit 0; fi; \
++		if [ -n "$$SKIP" ]; then t=$${$@##TEST-}; t=$${t%%-*}; [ "$${SKIP#*$$t*}" != "$$SKIP" ] && exit 0; fi; \
++		$(MAKE) -C $@ all ; \
++	}
++
++check: $(wildcard TEST-??-*)
+ 
+ clean:
+ 	@for i in TEST-[0-9]*; do \
+diff --git a/test/test-functions b/test/test-functions
+index 2b8a4d26..57611ff5 100644
+--- a/test/test-functions
++++ b/test/test-functions
+@@ -4,14 +4,14 @@ export PATH
+ 
+ [[ -e .testdir ]] && . .testdir
+ if [[ -z "$TESTDIR" ]] || [[ ! -d "$TESTDIR" ]]; then
+-   TESTDIR=$(mktemp -d -p "/var/tmp" -t dracut-test.XXXXXX)
++    TESTDIR=$(mktemp -d -p "/var/tmp" -t dracut-test.XXXXXX)
+ fi
+ echo "TESTDIR=\"$TESTDIR\"" > .testdir
+ export TESTDIR
+ 
+ command -v test_check &>/dev/null || test_check() {
+-    :
+-}
++        :
++    }
+ 
+ # terminal sequence to set color to a 'success' color (currently: green)
+ function SETCOLOR_SUCCESS() { echo -en '\033[0;32m'; }
+@@ -22,6 +22,11 @@ function SETCOLOR_WARNING() { echo -en '\033[0;33m'; }
+ # terminal sequence to reset to the default color.
+ function SETCOLOR_NORMAL() { echo -en '\033[0;39m'; }
+ 
++COLOR_SUCCESS='\033[0;32m'
++COLOR_FAILURE='\033[0;31m'
++COLOR_WARNING='\033[0;33m'
++COLOR_NORMAL='\033[0;39m'
++
+ check_root() {
+     if (( $EUID != 0 )); then
+         SETCOLOR_FAILURE; echo "Tests must be run as root! Please use 'sudo'."; SETCOLOR_NORMAL
+@@ -49,45 +54,44 @@ while (($# > 0)); do
+ 	    exit $?;;
+         --all)
+             check_root
+-	    echo -n "TEST: $TEST_DESCRIPTION ";
+             if ! test_check 2&>test.log ; then
+-                SETCOLOR_WARNING
+-                echo "[SKIPPED]"
+-                SETCOLOR_NORMAL
++ 	        echo -e "TEST: $TEST_DESCRIPTION " $COLOR_WARNING "[SKIPPED]" $COLOR_NORMAL
+ 		exit 0;
++            else
++	        echo "TEST: $TEST_DESCRIPTION [STARTED]";
+             fi
+             if [ "$V" != "1" ]; then
+-	    (
+-		test_setup && test_run
+-		ret=$?
+-		test_cleanup
+-		rm -fr -- "$TESTDIR"
+-		rm -f -- .testdir
+-		exit $ret
+-	    ) </dev/null >test.log 2>&1
++	        (
++		    test_setup && test_run
++		    ret=$?
++		    test_cleanup
++		    rm -fr -- "$TESTDIR"
++		    rm -f -- .testdir
++		    exit $ret
++	        ) </dev/null >test.log 2>&1
+             else
+-            set -o pipefail
+-            (
+-		test_setup && test_run
+-		ret=$?
+-		test_cleanup
+-		rm -fr -- "$TESTDIR"
+-		rm -f -- .testdir
+-		exit $ret
+-	    ) </dev/null 2>&1 | tee test.log
++                set -o pipefail
++                (
++		    test_setup && test_run
++		    ret=$?
++		    test_cleanup
++		    rm -fr -- "$TESTDIR"
++		    rm -f -- .testdir
++		    exit $ret
++	        ) </dev/null 2>&1 | tee test.log
+             fi
+ 	    ret=$?
+             set +o pipefail
+ 	    if [ $ret -eq 0 ]; then
+-               rm -- test.log
+-               SETCOLOR_SUCCESS
+-	       echo "[OK]"
+-               SETCOLOR_NORMAL
++                rm -- test.log
++	        echo -e "TEST: $TEST_DESCRIPTION " $COLOR_SUCCESS "[OK]" $COLOR_NORMAL
+ 	    else
+-               SETCOLOR_FAILURE
+-	       echo "[FAILED]"
+-               SETCOLOR_NORMAL
+-	       echo "see $(pwd)/test.log"
++	        echo -e "TEST: $TEST_DESCRIPTION " $COLOR_FAILURE "[FAILED]" $COLOR_NORMAL
++                if [ "$V" == "2" ]; then
++	            cat $(pwd)/test.log
++                else
++	            echo "see $(pwd)/test.log"
++                fi
+ 	    fi
+ 	    exit $ret;;
+         *) break ;;
+
diff --git a/0027.patch b/0027.patch
new file mode 100644
index 0000000..1156414
--- /dev/null
+++ b/0027.patch
@@ -0,0 +1,23 @@
+From 393da0c370deaea03b7f72a35782fde506526a49 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Tue, 14 Aug 2018 11:35:26 +0200
+Subject: [PATCH] TEST-50-MULTINIC: s/--device/-device
+
+---
+ test/TEST-50-MULTINIC/test.sh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/test/TEST-50-MULTINIC/test.sh b/test/TEST-50-MULTINIC/test.sh
+index de40790f..2640c318 100755
+--- a/test/TEST-50-MULTINIC/test.sh
++++ b/test/TEST-50-MULTINIC/test.sh
+@@ -57,7 +57,7 @@ client_test() {
+       -net nic,macaddr=52:54:00:12:34:$mac3,model=e1000 \
+       -netdev hubport,id=n1,hubid=1 \
+       -netdev hubport,id=n2,hubid=2 \
+-      --device e1000,netdev=n1,mac=52:54:00:12:34:98 \
++      -device e1000,netdev=n1,mac=52:54:00:12:34:98 \
+       -device e1000,netdev=n2,mac=52:54:00:12:34:99 \
+       -watchdog i6300esb -watchdog-action poweroff \
+       -no-reboot \
+
diff --git a/0028.patch b/0028.patch
new file mode 100644
index 0000000..738236d
--- /dev/null
+++ b/0028.patch
@@ -0,0 +1,34 @@
+From 827a5b1a80c63f62fbe70945d46a8eb9453fc9fe Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Tue, 14 Aug 2018 11:37:57 +0200
+Subject: [PATCH] test: also output server.log on failure
+
+---
+ test/test-functions | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/test/test-functions b/test/test-functions
+index 57611ff5..f27be912 100644
+--- a/test/test-functions
++++ b/test/test-functions
+@@ -75,6 +75,9 @@ while (($# > 0)); do
+ 		    test_setup && test_run
+ 		    ret=$?
+ 		    test_cleanup
++                    if ((ret!=0)) && [[ -f "$TESTDIR"/server.log ]]; then
++                        mv [[ -f "$TESTDIR"/server.log ]] ./
++                    fi
+ 		    rm -fr -- "$TESTDIR"
+ 		    rm -f -- .testdir
+ 		    exit $ret
+@@ -88,7 +91,8 @@ while (($# > 0)); do
+ 	    else
+ 	        echo -e "TEST: $TEST_DESCRIPTION " $COLOR_FAILURE "[FAILED]" $COLOR_NORMAL
+                 if [ "$V" == "2" ]; then
+-	            cat $(pwd)/test.log
++	            cat $(pwd)/server.log $(pwd)/test.log
++	            echo -e "TEST: $TEST_DESCRIPTION " $COLOR_FAILURE "[FAILED]" $COLOR_NORMAL
+                 else
+ 	            echo "see $(pwd)/test.log"
+                 fi
+
diff --git a/0029.patch b/0029.patch
new file mode 100644
index 0000000..ce571e1
--- /dev/null
+++ b/0029.patch
@@ -0,0 +1,23 @@
+From 94cc856cb8e4a325cc26a3bcc2d9e92da6a2be69 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Tue, 14 Aug 2018 13:57:15 +0200
+Subject: [PATCH] TEST-70-BONDBRIDGETEAMVLAN: load vlan kernel modules
+
+---
+ test/TEST-70-BONDBRIDGETEAMVLAN/server-init.sh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/test/TEST-70-BONDBRIDGETEAMVLAN/server-init.sh b/test/TEST-70-BONDBRIDGETEAMVLAN/server-init.sh
+index 503ed9ed..b9f01c9b 100755
+--- a/test/TEST-70-BONDBRIDGETEAMVLAN/server-init.sh
++++ b/test/TEST-70-BONDBRIDGETEAMVLAN/server-init.sh
+@@ -49,7 +49,7 @@ linkup() {
+      && wait_for_if_up $1 2>/dev/null
+ }
+ 
+-modprobe -b -q 8021q
++modprobe --all -b -q 8021q ipvlan macvlan
+ >/dev/watchdog
+ ip addr add 127.0.0.1/8 dev lo
+ linkup lo
+
diff --git a/0030.patch b/0030.patch
new file mode 100644
index 0000000..5a1f421
--- /dev/null
+++ b/0030.patch
@@ -0,0 +1,338 @@
+From ca8f1c1ba3e5f1ebfb2e5e70ea4d4b7a791b0bc2 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Tue, 14 Aug 2018 13:58:21 +0200
+Subject: [PATCH] test: fixed KVERSION and qemu backwards compatiblity
+
+---
+ test/TEST-50-MULTINIC/test.sh           | 137 ++++++++++++++++++--------------
+ test/TEST-70-BONDBRIDGETEAMVLAN/test.sh |  52 ++++++++----
+ 2 files changed, 115 insertions(+), 74 deletions(-)
+
+diff --git a/test/TEST-50-MULTINIC/test.sh b/test/TEST-50-MULTINIC/test.sh
+index 2640c318..02443c40 100755
+--- a/test/TEST-50-MULTINIC/test.sh
++++ b/test/TEST-50-MULTINIC/test.sh
+@@ -12,19 +12,36 @@ run_server() {
+     echo "MULTINIC TEST SETUP: Starting DHCP/NFS server"
+ 
+     fsck -a "$TESTDIR"/server.ext3 || return 1
+-    $testdir/run-qemu \
+-        -drive format=raw,index=0,media=disk,file="$TESTDIR"/server.ext3 \
+-        -m 512M  -smp 2 \
+-        -display none \
+-        -net socket,listen=127.0.0.1:12350 \
+-        -net nic,macaddr=52:54:01:12:34:56,model=e1000 \
+-        ${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" \
+-        -initrd "$TESTDIR"/initramfs.server \
+-        -pidfile "$TESTDIR"/server.pid -daemonize || return 1
++
++    if $testdir/run-qemu --help | grep -qF -m1 'netdev hubport,id=str,hubid=n[,netdev=nd]' && echo OK; then
++        $testdir/run-qemu \
++            -drive format=raw,index=0,media=disk,file="$TESTDIR"/server.ext3 \
++            -m 512M  -smp 2 \
++            -display none \
++            -net socket,listen=127.0.0.1:12350 \
++            -net nic,macaddr=52:54:01:12:34:56,model=e1000 \
++            ${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" \
++            -initrd "$TESTDIR"/initramfs.server \
++            -pidfile "$TESTDIR"/server.pid -daemonize || return 1
++    else
++        $testdir/run-qemu \
++            -drive format=raw,index=0,media=disk,file="$TESTDIR"/client.img -m 512M  -smp 2 -nographic \
++            -net socket,vlan=0,connect=127.0.0.1:12350 \
++            -net nic,vlan=0,macaddr=52:54:00:12:34:$mac1,model=e1000 \
++            -net nic,vlan=0,macaddr=52:54:00:12:34:$mac2,model=e1000 \
++            -net nic,vlan=0,macaddr=52:54:00:12:34:$mac3,model=e1000 \
++            -net nic,vlan=1,macaddr=52:54:00:12:34:98,model=e1000 \
++            -net nic,vlan=2,macaddr=52:54:00:12:34:99,model=e1000 \
++            -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" \
++            -initrd "$TESTDIR"/initramfs.testing
++    fi
++
+     sudo chmod 644 -- "$TESTDIR"/server.pid || return 1
+ 
+     # Cleanup the terminal if we have one
+@@ -51,18 +68,18 @@ client_test() {
+     fi
+ 
+     $testdir/run-qemu -drive format=raw,index=0,media=disk,file="$TESTDIR"/client.img -m 512M  -smp 2 -nographic \
+-      -net socket,connect=127.0.0.1:12350 \
+-      -net nic,macaddr=52:54:00:12:34:$mac1,model=e1000 \
+-      -net nic,macaddr=52:54:00:12:34:$mac2,model=e1000 \
+-      -net nic,macaddr=52:54:00:12:34:$mac3,model=e1000 \
+-      -netdev hubport,id=n1,hubid=1 \
+-      -netdev hubport,id=n2,hubid=2 \
+-      -device e1000,netdev=n1,mac=52:54:00:12:34:98 \
+-      -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" \
+-        -initrd "$TESTDIR"/initramfs.testing
++                      -net socket,connect=127.0.0.1:12350 \
++                      -net nic,macaddr=52:54:00:12:34:$mac1,model=e1000 \
++                      -net nic,macaddr=52:54:00:12:34:$mac2,model=e1000 \
++                      -net nic,macaddr=52:54:00:12:34:$mac3,model=e1000 \
++                      -netdev hubport,id=n1,hubid=1 \
++                      -netdev hubport,id=n2,hubid=2 \
++                      -device e1000,netdev=n1,mac=52:54:00:12:34:98 \
++                      -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" \
++                      -initrd "$TESTDIR"/initramfs.testing
+ 
+     { read OK; read IFACES; } < "$TESTDIR"/client.img
+ 
+@@ -110,58 +127,58 @@ test_client() {
+ 
+     # PXE Style BOOTIF=
+     client_test "MULTINIC root=nfs BOOTIF=" \
+-        00 01 02 \
+-        "root=nfs:192.168.50.1:/nfs/client BOOTIF=52-54-00-12-34-00" \
+-        "ens3" || return 1
++                00 01 02 \
++                "root=nfs:192.168.50.1:/nfs/client BOOTIF=52-54-00-12-34-00" \
++                "ens3" || return 1
+ 
+     client_test "MULTINIC root=nfs BOOTIF= ip=ens4:dhcp" \
+-        00 01 02 \
+-        "root=nfs:192.168.50.1:/nfs/client BOOTIF=52-54-00-12-34-00 ip=ens4:dhcp" \
+-        "ens3 ens4" || return 1
++                00 01 02 \
++                "root=nfs:192.168.50.1:/nfs/client BOOTIF=52-54-00-12-34-00 ip=ens4:dhcp" \
++                "ens3 ens4" || return 1
+ 
+     # PXE Style BOOTIF= with dhcp root-path
+     client_test "MULTINIC root=dhcp BOOTIF=" \
+-        00 01 02 \
+-        "root=dhcp BOOTIF=52-54-00-12-34-02" \
+-        "ens5" || return 1
++                00 01 02 \
++                "root=dhcp BOOTIF=52-54-00-12-34-02" \
++                "ens5" || return 1
+ 
+     # Multinic case, where only one nic works
+     client_test "MULTINIC root=nfs ip=dhcp" \
+-        FF 00 FE \
+-        "root=nfs:192.168.50.1:/nfs/client ip=dhcp" \
+-        "ens4" || return 1
++                FF 00 FE \
++                "root=nfs:192.168.50.1:/nfs/client ip=dhcp" \
++                "ens4" || return 1
+ 
+     # Require two interfaces
+     client_test "MULTINIC root=nfs ip=ens4:dhcp ip=ens5:dhcp bootdev=ens4" \
+-        00 01 02 \
+-        "root=nfs:192.168.50.1:/nfs/client ip=ens4:dhcp ip=ens5:dhcp bootdev=ens4" \
+-        "ens4 ens5" || return 1
++                00 01 02 \
++                "root=nfs:192.168.50.1:/nfs/client ip=ens4:dhcp ip=ens5:dhcp bootdev=ens4" \
++                "ens4 ens5" || return 1
+ 
+     # Require three interfaces with dhcp root-path
+     client_test "MULTINIC root=dhcp ip=ens3:dhcp ip=ens4:dhcp ip=ens5:dhcp bootdev=ens5" \
+-        00 01 02 \
+-        "root=dhcp ip=ens3:dhcp ip=ens4:dhcp ip=ens5:dhcp bootdev=ens5" \
+-        "ens3 ens4 ens5" || return 1
++                00 01 02 \
++                "root=dhcp ip=ens3:dhcp ip=ens4:dhcp ip=ens5:dhcp bootdev=ens5" \
++                "ens3 ens4 ens5" || return 1
+ 
+     client_test "MULTINIC bonding" \
+-        00 01 02 \
+-        "root=nfs:192.168.50.1:/nfs/client ip=bond0:dhcp  bond=bond0:ens3,ens4,ens5:mode=balance-rr" \
+-        "bond0" || return 1
++                00 01 02 \
++                "root=nfs:192.168.50.1:/nfs/client ip=bond0:dhcp  bond=bond0:ens3,ens4,ens5:mode=balance-rr" \
++                "bond0" || return 1
+ 
+     client_test "MULTINIC bridging" \
+-        00 01 02 \
+-        "root=nfs:192.168.50.1:/nfs/client ip=bridge0:dhcp  bridge=bridge0:ens3,ens6,ens7" \
+-        "bridge0" || return 1
++                00 01 02 \
++                "root=nfs:192.168.50.1:/nfs/client ip=bridge0:dhcp  bridge=bridge0:ens3,ens6,ens7" \
++                "bridge0" || return 1
+     return 0
+ }
+ 
+ test_setup() {
+-     # Make server root
++    # Make server root
+     dd if=/dev/null of="$TESTDIR"/server.ext3 bs=1M seek=120
+     mke2fs -j -F -- "$TESTDIR"/server.ext3
+     mkdir -- "$TESTDIR"/mnt
+     sudo mount -o loop -- "$TESTDIR"/server.ext3 "$TESTDIR"/mnt
+-
++    kernel=$KVERSION
+     (
+         export initdir="$TESTDIR"/mnt
+         . "$basedir"/dracut-init.sh
+@@ -185,9 +202,9 @@ test_setup() {
+         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
++                      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
+@@ -212,7 +229,7 @@ test_setup() {
+         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:]' '|')
++                       |  tr -s '[:space:]' '\n' | sort -u | tr -s '[:space:]' '|')
+         _nsslibs=${_nsslibs#|}
+         _nsslibs=${_nsslibs%|}
+ 
+@@ -241,7 +258,7 @@ test_setup() {
+             done
+         )
+         inst_multiple sh shutdown poweroff stty cat ps ln ip \
+-            mount dmesg mkdir cp ping grep ls
++                      mount dmesg mkdir cp ping grep ls
+         for _terminfodir in /lib/terminfo /etc/terminfo /usr/share/terminfo; do
+             [[ -f ${_terminfodir}/l/linux ]] && break
+         done
+@@ -258,7 +275,7 @@ test_setup() {
+         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:]' '|')
++                       |  tr -s '[:space:]' '\n' | sort -u | tr -s '[:space:]' '|')
+         _nsslibs=${_nsslibs#|}
+         _nsslibs=${_nsslibs%|}
+ 
+@@ -282,14 +299,16 @@ test_setup() {
+     )
+ 
+     # Make server's dracut image
+-    $basedir/dracut.sh -l -i "$TESTDIR"/overlay / \
++    $basedir/dracut.sh \
++        -l -i "$TESTDIR"/overlay / \
+         -m "dash udev-rules base rootfs-block fs-lib debug kernel-modules watchdog" \
+         -d "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 / \
++    $basedir/dracut.sh \
++        -l -i "$TESTDIR"/overlay / \
+         -o "plymouth" \
+         -a "debug" \
+         -d "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" \
+diff --git a/test/TEST-70-BONDBRIDGETEAMVLAN/test.sh b/test/TEST-70-BONDBRIDGETEAMVLAN/test.sh
+index eadf09f1..8c11a7d3 100755
+--- a/test/TEST-70-BONDBRIDGETEAMVLAN/test.sh
++++ b/test/TEST-70-BONDBRIDGETEAMVLAN/test.sh
+@@ -14,6 +14,7 @@ run_server() {
+     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 \
+@@ -66,17 +67,38 @@ client_test() {
+         nic3=" -netdev hubport,id=n3,hubid=3"
+     fi
+ 
+-    $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
++    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
+@@ -167,7 +189,7 @@ test_setup() {
+     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
+@@ -203,7 +225,7 @@ test_setup() {
+         [ -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
++        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
+@@ -286,7 +308,7 @@ test_setup() {
+     $basedir/dracut.sh -l -i "$TESTDIR"/overlay / \
+         --no-early-microcode \
+         -m "udev-rules base rootfs-block fs-lib debug kernel-modules watchdog" \
+-        -d "af_packet piix ide-gd_mod ata_piix ext3 sd_mod nfsv2 nfsv3 nfsv4 nfs_acl nfs_layout_nfsv41_files nfsd e1000 i6300esb ib700wdt" \
++        -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
+ 
+@@ -295,7 +317,7 @@ test_setup() {
+         --no-early-microcode \
+         -o "plymouth" \
+         -a "debug" \
+-        -d "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" \
++        -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/0031.patch b/0031.patch
new file mode 100644
index 0000000..4967ae3
--- /dev/null
+++ b/0031.patch
@@ -0,0 +1,23 @@
+From bb75d16521a9d76ccedbf06f3a6239efbbca77d7 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Tue, 14 Aug 2018 14:07:12 +0200
+Subject: [PATCH] kernel-network-modules: add vlan kernel modules
+
+---
+ modules.d/90kernel-network-modules/module-setup.sh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/modules.d/90kernel-network-modules/module-setup.sh b/modules.d/90kernel-network-modules/module-setup.sh
+index 16ed3a74..600ef112 100755
+--- a/modules.d/90kernel-network-modules/module-setup.sh
++++ b/modules.d/90kernel-network-modules/module-setup.sh
+@@ -28,7 +28,7 @@ installkernel() {
+         =drivers/net/phy \
+         =drivers/net/team \
+         =drivers/net/ethernet \
+-        ecb arc4 bridge stp llc ipv6 bonding 8021q af_packet virtio_net xennet
++        ecb arc4 bridge stp llc ipv6 bonding 8021q ipvlan macvlan af_packet virtio_net xennet
+     hostonly="" instmods iscsi_ibft crc32c iscsi_boot_sysfs
+ }
+ 
+
diff --git a/0032.patch b/0032.patch
new file mode 100644
index 0000000..af3d99e
--- /dev/null
+++ b/0032.patch
@@ -0,0 +1,37 @@
+From f9c8b3112aee5216a6bb5a42fb46146f6f228854 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Tue, 14 Aug 2018 14:12:54 +0200
+Subject: [PATCH] TEST-50-MULTINIC/test.sh: fixed server startup
+
+---
+ test/TEST-50-MULTINIC/test.sh | 9 ++++++---
+ 1 file changed, 6 insertions(+), 3 deletions(-)
+
+diff --git a/test/TEST-50-MULTINIC/test.sh b/test/TEST-50-MULTINIC/test.sh
+index 02443c40..d7cec437 100755
+--- a/test/TEST-50-MULTINIC/test.sh
++++ b/test/TEST-50-MULTINIC/test.sh
+@@ -29,7 +29,9 @@ run_server() {
+             -pidfile "$TESTDIR"/server.pid -daemonize || return 1
+     else
+         $testdir/run-qemu \
+-            -drive format=raw,index=0,media=disk,file="$TESTDIR"/client.img -m 512M  -smp 2 -nographic \
++            -drive format=raw,index=0,media=disk,file="$TESTDIR"/server.ext3 \
++            -m 512M  -smp 2 \
++            -display none \
+             -net socket,vlan=0,connect=127.0.0.1:12350 \
+             -net nic,vlan=0,macaddr=52:54:00:12:34:$mac1,model=e1000 \
+             -net nic,vlan=0,macaddr=52:54:00:12:34:$mac2,model=e1000 \
+@@ -38,8 +40,9 @@ run_server() {
+             -net nic,vlan=2,macaddr=52:54:00:12:34:99,model=e1000 \
+             -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" \
+-            -initrd "$TESTDIR"/initramfs.testing
++            -append "panic=1 loglevel=7 root=/dev/sda rootfstype=ext3 rw console=ttyS0,115200n81 selinux=0" \
++            -initrd "$TESTDIR"/initramfs.server \
++            -pidfile "$TESTDIR"/server.pid -daemonize || return 1
+     fi
+ 
+     sudo chmod 644 -- "$TESTDIR"/server.pid || return 1
+
diff --git a/0033.patch b/0033.patch
new file mode 100644
index 0000000..e102129
--- /dev/null
+++ b/0033.patch
@@ -0,0 +1,21 @@
+From 604c09b1dacd4a364ee88d0e405a4e6692bdc1c2 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Tue, 14 Aug 2018 15:28:56 +0200
+Subject: [PATCH] TEST-31-ISCSI-MULTI/test.sh: fixed test description
+
+---
+ test/TEST-31-ISCSI-MULTI/test.sh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/test/TEST-31-ISCSI-MULTI/test.sh b/test/TEST-31-ISCSI-MULTI/test.sh
+index c2f86ac8..1ed3fb7b 100755
+--- a/test/TEST-31-ISCSI-MULTI/test.sh
++++ b/test/TEST-31-ISCSI-MULTI/test.sh
+@@ -1,5 +1,5 @@
+ #!/bin/bash
+-TEST_DESCRIPTION="root filesystem over iSCSI"
++TEST_DESCRIPTION="root filesystem over multiple iSCSI"
+ 
+ KVERSION=${KVERSION-$(uname -r)}
+ 
+
diff --git a/0034.patch b/0034.patch
new file mode 100644
index 0000000..b78aca3
--- /dev/null
+++ b/0034.patch
@@ -0,0 +1,86 @@
+From a2dbecfcd65ac243363c9544442f7bf526ec6091 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Tue, 14 Aug 2018 15:42:21 +0200
+Subject: [PATCH] test: add TEST_RUN_ID
+
+---
+ test/test-functions | 24 ++++++++++++------------
+ 1 file changed, 12 insertions(+), 12 deletions(-)
+
+diff --git a/test/test-functions b/test/test-functions
+index f27be912..bde5f742 100644
+--- a/test/test-functions
++++ b/test/test-functions
+@@ -2,11 +2,11 @@
+ PATH=/sbin:/bin:/usr/sbin:/usr/bin
+ export PATH
+ 
+-[[ -e .testdir ]] && . .testdir
++[[ -e .testdir${TEST_RUN_ID:+-$TEST_RUN_ID} ]] && . .testdir${TEST_RUN_ID:+-$TEST_RUN_ID}
+ if [[ -z "$TESTDIR" ]] || [[ ! -d "$TESTDIR" ]]; then
+     TESTDIR=$(mktemp -d -p "/var/tmp" -t dracut-test.XXXXXX)
+ fi
+-echo "TESTDIR=\"$TESTDIR\"" > .testdir
++echo "TESTDIR=\"$TESTDIR\"" > .testdir${TEST_RUN_ID:+-$TEST_RUN_ID}
+ export TESTDIR
+ 
+ command -v test_check &>/dev/null || test_check() {
+@@ -50,11 +50,11 @@ while (($# > 0)); do
+ 	    echo "TEST CLEANUP: $TEST_DESCRIPTION"
+ 	    test_cleanup
+ 	    rm -fr -- "$TESTDIR"
+-	    rm -f -- .testdir
++	    rm -f -- .testdir${TEST_RUN_ID:+-$TEST_RUN_ID}
+ 	    exit $?;;
+         --all)
+             check_root
+-            if ! test_check 2&>test.log ; then
++            if ! test_check 2&>test-${TEST_RUN_ID:+-$TEST_RUN_ID}.log ; then
+  	        echo -e "TEST: $TEST_DESCRIPTION " $COLOR_WARNING "[SKIPPED]" $COLOR_NORMAL
+ 		exit 0;
+             else
+@@ -66,9 +66,9 @@ while (($# > 0)); do
+ 		    ret=$?
+ 		    test_cleanup
+ 		    rm -fr -- "$TESTDIR"
+-		    rm -f -- .testdir
++		    rm -f -- .testdir${TEST_RUN_ID:+-$TEST_RUN_ID}
+ 		    exit $ret
+-	        ) </dev/null >test.log 2>&1
++	        ) </dev/null >test-${TEST_RUN_ID:+-$TEST_RUN_ID}.log 2>&1
+             else
+                 set -o pipefail
+                 (
+@@ -76,25 +76,25 @@ while (($# > 0)); do
+ 		    ret=$?
+ 		    test_cleanup
+                     if ((ret!=0)) && [[ -f "$TESTDIR"/server.log ]]; then
+-                        mv [[ -f "$TESTDIR"/server.log ]] ./
++                        mv [[ -f "$TESTDIR"/server.log ]] ./server${TEST_RUN_ID:+-$TEST_RUN_ID}.log
+                     fi
+ 		    rm -fr -- "$TESTDIR"
+-		    rm -f -- .testdir
++		    rm -f -- .testdir${TEST_RUN_ID:+-$TEST_RUN_ID}
+ 		    exit $ret
+-	        ) </dev/null 2>&1 | tee test.log
++	        ) </dev/null 2>&1 | tee test-${TEST_RUN_ID:+-$TEST_RUN_ID}.log
+             fi
+ 	    ret=$?
+             set +o pipefail
+ 	    if [ $ret -eq 0 ]; then
+-                rm -- test.log
++                rm -- test-${TEST_RUN_ID:+-$TEST_RUN_ID}.log
+ 	        echo -e "TEST: $TEST_DESCRIPTION " $COLOR_SUCCESS "[OK]" $COLOR_NORMAL
+ 	    else
+ 	        echo -e "TEST: $TEST_DESCRIPTION " $COLOR_FAILURE "[FAILED]" $COLOR_NORMAL
+                 if [ "$V" == "2" ]; then
+-	            cat $(pwd)/server.log $(pwd)/test.log
++	            cat $(pwd)/server${TEST_RUN_ID:+-$TEST_RUN_ID}.log $(pwd)/test-${TEST_RUN_ID:+-$TEST_RUN_ID}.log
+ 	            echo -e "TEST: $TEST_DESCRIPTION " $COLOR_FAILURE "[FAILED]" $COLOR_NORMAL
+                 else
+-	            echo "see $(pwd)/test.log"
++	            echo "see $(pwd)/test-${TEST_RUN_ID:+-$TEST_RUN_ID}.log"
+                 fi
+ 	    fi
+ 	    exit $ret;;
+
diff --git a/0035.patch b/0035.patch
new file mode 100644
index 0000000..9741f85
--- /dev/null
+++ b/0035.patch
@@ -0,0 +1,26 @@
+From 0f294d90b246e15d00dd56627a8085e5bfc5bf85 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Tue, 14 Aug 2018 15:54:42 +0200
+Subject: [PATCH] TEST-31-ISCSI-MULTI: increase verbose level
+
+---
+ test/TEST-31-ISCSI-MULTI/test.sh | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/test/TEST-31-ISCSI-MULTI/test.sh b/test/TEST-31-ISCSI-MULTI/test.sh
+index 1ed3fb7b..5c38249c 100755
+--- a/test/TEST-31-ISCSI-MULTI/test.sh
++++ b/test/TEST-31-ISCSI-MULTI/test.sh
+@@ -3,9 +3,9 @@ TEST_DESCRIPTION="root filesystem over multiple iSCSI"
+ 
+ KVERSION=${KVERSION-$(uname -r)}
+ 
+-DEBUGFAIL="loglevel=1"
++#DEBUGFAIL="loglevel=1"
+ #DEBUGFAIL="rd.shell rd.break rd.debug loglevel=7 "
+-#DEBUGFAIL="rd.debug loglevel=7 "
++DEBUGFAIL="rd.debug loglevel=7 "
+ #SERVER_DEBUG="rd.debug loglevel=7"
+ #SERIAL="tcp:127.0.0.1:9999"
+ 
+
diff --git a/0036.patch b/0036.patch
new file mode 100644
index 0000000..77f3c49
--- /dev/null
+++ b/0036.patch
@@ -0,0 +1,93 @@
+From 3c1a083e5c5e56bf2e26aa806f023d4f053fc7b7 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Tue, 14 Aug 2018 16:01:39 +0200
+Subject: [PATCH] add travis build job
+
+---
+ .travis.yml    | 15 +++++++++++++++
+ fedora-test.sh | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 70 insertions(+)
+
+diff --git a/.travis.yml b/.travis.yml
+new file mode 100644
+index 00000000..16f9a511
+--- /dev/null
++++ b/.travis.yml
+@@ -0,0 +1,15 @@
++sudo: required
++
++services:
++  - docker
++
++env:
++  matrix:
++    - IMAGE=latest
++    - IMAGE=rawhide
++    
++before_script:
++- docker pull fedora:$IMAGE
++
++script:
++- docker run --privileged -it -v $(pwd)/:/dracut fedora:$IMAGE /dracut/fedora-test.sh $IMAGE-$$
+diff --git a/fedora-test.sh b/fedora-test.sh
+new file mode 100755
+index 00000000..ee506caf
+--- /dev/null
++++ b/fedora-test.sh
+@@ -0,0 +1,55 @@
++#!/bin/bash
++
++set -ex
++
++cd ${0%/*}
++
++RUN_ID="$1"
++
++dnf -y update --best --allowerasing
++
++dnf -y install --best --allowerasing \
++    dash \
++    asciidoc \
++    mdadm \
++    lvm2 \
++    dmraid \
++    cryptsetup \
++    nfs-utils \
++    nbd \
++    dhcp-server \
++    scsi-target-utils \
++    iscsi-initiator-utils \
++    strace \
++    btrfs-progs \
++    kmod-devel \
++    gcc \
++    bzip2 \
++    xz \
++    tar \
++    wget \
++    rpm-build \
++    make \
++    git \
++    bash-completion \
++    sudo \
++    kernel \
++    dhcp-client \
++    /usr/bin/qemu-kvm \
++    e2fsprogs \
++    $NULL
++
++./configure
++
++NCPU=$(getconf _NPROCESSORS_ONLN)
++
++make -j$NCPU all syncheck rpm
++
++cd test
++
++time sudo make -j$((NCPU/2+1)) \
++     KVERSION=$(rpm -qa kernel --qf '%{VERSION}-%{RELEASE}.%{ARCH}\n' | sort -rn | head -1) \
++     TEST_RUN_ID=$RUN_ID \
++     -k V=2 \
++     SKIP="14 16" \
++     check
+
diff --git a/0037.patch b/0037.patch
new file mode 100644
index 0000000..6a4263b
--- /dev/null
+++ b/0037.patch
@@ -0,0 +1,44 @@
+From b7774da97ca743ada8a94d5eab4484cb96504ca0 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Tue, 14 Aug 2018 16:18:53 +0200
+Subject: [PATCH] might even run without kvm
+
+---
+ .travis.yml   | 5 +----
+ test/run-qemu | 1 +
+ 2 files changed, 2 insertions(+), 4 deletions(-)
+
+diff --git a/.travis.yml b/.travis.yml
+index 16f9a511..a71d9be2 100644
+--- a/.travis.yml
++++ b/.travis.yml
+@@ -1,15 +1,12 @@
++language: generic
+ sudo: required
+-
+ services:
+   - docker
+-
+ env:
+   matrix:
+     - IMAGE=latest
+     - IMAGE=rawhide
+-    
+ before_script:
+ - docker pull fedora:$IMAGE
+-
+ script:
+ - docker run --privileged -it -v $(pwd)/:/dracut fedora:$IMAGE /dracut/fedora-test.sh $IMAGE-$$
+diff --git a/test/run-qemu b/test/run-qemu
+index a4e15548..c28de2db 100755
+--- a/test/run-qemu
++++ b/test/run-qemu
+@@ -8,6 +8,7 @@ $(lsmod | grep -q '^kqemu ') && BIN=/usr/bin/qemu && ARGS="-kernel-kqemu "
+ [[ -c /dev/kvm && -x /usr/bin/kvm ]] && BIN=/usr/bin/kvm && ARGS=""
+ [[ -c /dev/kvm && -x /usr/bin/qemu-kvm ]] && BIN=/usr/bin/qemu-kvm && ARGS=""
+ [[ -c /dev/kvm && -x /usr/libexec/qemu-kvm ]] && BIN=/usr/libexec/qemu-kvm && ARGS=""
++[[ -x /usr/bin/qemu-system-$(uname -i) ]] && BIN=/usr/bin/qemu-system-$(uname -i) && ARGS=""
+ [[ -c /dev/kvm && -x /usr/bin/qemu-system-$(uname -i) ]] && BIN=/usr/bin/qemu-system-$(uname -i) && ARGS="-enable-kvm"
+ 
+ [[ $BIN ]] || {
+
diff --git a/0038.patch b/0038.patch
new file mode 100644
index 0000000..2b03b1f
--- /dev/null
+++ b/0038.patch
@@ -0,0 +1,23 @@
+From fba4d2843382540839d90abbaa2cae0d5bf1c2dd Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Tue, 14 Aug 2018 16:30:42 +0200
+Subject: [PATCH] TEST-50-MULTINIC: fixed server.log
+
+---
+ test/TEST-50-MULTINIC/test.sh | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/test/TEST-50-MULTINIC/test.sh b/test/TEST-50-MULTINIC/test.sh
+index d7cec437..0a4d29c2 100755
+--- a/test/TEST-50-MULTINIC/test.sh
++++ b/test/TEST-50-MULTINIC/test.sh
+@@ -38,6 +38,8 @@ run_server() {
+             -net nic,vlan=0,macaddr=52:54:00:12:34:$mac3,model=e1000 \
+             -net nic,vlan=1,macaddr=52:54:00:12:34:98,model=e1000 \
+             -net nic,vlan=2,macaddr=52:54:00:12:34:99,model=e1000 \
++            ${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" \
+
diff --git a/0039.patch b/0039.patch
new file mode 100644
index 0000000..33b0ab2
--- /dev/null
+++ b/0039.patch
@@ -0,0 +1,51 @@
+From cafe6675c2e54cbdc576785bc98e5f7fda76ba7c Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Tue, 14 Aug 2018 16:31:00 +0200
+Subject: [PATCH] test/run-qemu: move -cpu host to kvm args
+
+---
+ fedora-test.sh |  1 +
+ test/run-qemu  | 12 ++++++------
+ 2 files changed, 7 insertions(+), 6 deletions(-)
+
+diff --git a/fedora-test.sh b/fedora-test.sh
+index ee506caf..146c7f2f 100755
+--- a/fedora-test.sh
++++ b/fedora-test.sh
+@@ -36,6 +36,7 @@ dnf -y install --best --allowerasing \
+     kernel \
+     dhcp-client \
+     /usr/bin/qemu-kvm \
++    /usr/bin/qemu-system-$(uname -i) \
+     e2fsprogs \
+     $NULL
+ 
+diff --git a/test/run-qemu b/test/run-qemu
+index c28de2db..4eb497ff 100755
+--- a/test/run-qemu
++++ b/test/run-qemu
+@@ -4,12 +4,12 @@
+ export PATH=/sbin:/bin:/usr/sbin:/usr/bin
+ 
+ [[ -x /usr/bin/qemu ]] && BIN=/usr/bin/qemu && ARGS=""
+-$(lsmod | grep -q '^kqemu ') && BIN=/usr/bin/qemu && ARGS="-kernel-kqemu "
+-[[ -c /dev/kvm && -x /usr/bin/kvm ]] && BIN=/usr/bin/kvm && ARGS=""
+-[[ -c /dev/kvm && -x /usr/bin/qemu-kvm ]] && BIN=/usr/bin/qemu-kvm && ARGS=""
+-[[ -c /dev/kvm && -x /usr/libexec/qemu-kvm ]] && BIN=/usr/libexec/qemu-kvm && ARGS=""
++$(lsmod | grep -q '^kqemu ') && BIN=/usr/bin/qemu && ARGS="-kernel-kqemu -cpu host"
++[[ -c /dev/kvm && -x /usr/bin/kvm ]] && BIN=/usr/bin/kvm && ARGS="-cpu host"
++[[ -c /dev/kvm && -x /usr/bin/qemu-kvm ]] && BIN=/usr/bin/qemu-kvm && ARGS="-cpu host"
++[[ -c /dev/kvm && -x /usr/libexec/qemu-kvm ]] && BIN=/usr/libexec/qemu-kvm && ARGS="-cpu host"
+ [[ -x /usr/bin/qemu-system-$(uname -i) ]] && BIN=/usr/bin/qemu-system-$(uname -i) && ARGS=""
+-[[ -c /dev/kvm && -x /usr/bin/qemu-system-$(uname -i) ]] && BIN=/usr/bin/qemu-system-$(uname -i) && ARGS="-enable-kvm"
++[[ -c /dev/kvm && -x /usr/bin/qemu-system-$(uname -i) ]] && BIN=/usr/bin/qemu-system-$(uname -i) && ARGS="-enable-kvm -cpu host"
+ 
+ [[ $BIN ]] || {
+    echo "Could not find a working KVM or QEMU to test with!" >&2
+@@ -31,4 +31,4 @@ if ! [ -f "$VMLINUZ" ]; then
+     fi
+ fi
+ 
+-exec sudo $BIN $ARGS -kernel $VMLINUZ -cpu host "$@"
++exec sudo $BIN $ARGS -kernel $VMLINUZ "$@"
+
diff --git a/0040.patch b/0040.patch
new file mode 100644
index 0000000..d65f542
--- /dev/null
+++ b/0040.patch
@@ -0,0 +1,67 @@
+From 9288d21b9fd992cc7a32fbf79ad4f80b070e2277 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Tue, 14 Aug 2018 16:37:01 +0200
+Subject: [PATCH] TEST-50-MULTINIC: removed bogus qemu compat server call
+
+---
+ test/TEST-50-MULTINIC/test.sh | 46 ++++++++++++-------------------------------
+ 1 file changed, 13 insertions(+), 33 deletions(-)
+
+diff --git a/test/TEST-50-MULTINIC/test.sh b/test/TEST-50-MULTINIC/test.sh
+index 0a4d29c2..495a66f2 100755
+--- a/test/TEST-50-MULTINIC/test.sh
++++ b/test/TEST-50-MULTINIC/test.sh
+@@ -13,39 +13,19 @@ run_server() {
+ 
+     fsck -a "$TESTDIR"/server.ext3 || return 1
+ 
+-    if $testdir/run-qemu --help | grep -qF -m1 'netdev hubport,id=str,hubid=n[,netdev=nd]' && echo OK; then
+-        $testdir/run-qemu \
+-            -drive format=raw,index=0,media=disk,file="$TESTDIR"/server.ext3 \
+-            -m 512M  -smp 2 \
+-            -display none \
+-            -net socket,listen=127.0.0.1:12350 \
+-            -net nic,macaddr=52:54:01:12:34:56,model=e1000 \
+-            ${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" \
+-            -initrd "$TESTDIR"/initramfs.server \
+-            -pidfile "$TESTDIR"/server.pid -daemonize || return 1
+-    else
+-        $testdir/run-qemu \
+-            -drive format=raw,index=0,media=disk,file="$TESTDIR"/server.ext3 \
+-            -m 512M  -smp 2 \
+-            -display none \
+-            -net socket,vlan=0,connect=127.0.0.1:12350 \
+-            -net nic,vlan=0,macaddr=52:54:00:12:34:$mac1,model=e1000 \
+-            -net nic,vlan=0,macaddr=52:54:00:12:34:$mac2,model=e1000 \
+-            -net nic,vlan=0,macaddr=52:54:00:12:34:$mac3,model=e1000 \
+-            -net nic,vlan=1,macaddr=52:54:00:12:34:98,model=e1000 \
+-            -net nic,vlan=2,macaddr=52:54:00:12:34:99,model=e1000 \
+-            ${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" \
+-            -initrd "$TESTDIR"/initramfs.server \
+-            -pidfile "$TESTDIR"/server.pid -daemonize || return 1
+-    fi
++    $testdir/run-qemu \
++        -drive format=raw,index=0,media=disk,file="$TESTDIR"/server.ext3 \
++        -m 512M  -smp 2 \
++        -display none \
++        -net socket,listen=127.0.0.1:12350 \
++        -net nic,macaddr=52:54:01:12:34:56,model=e1000 \
++        ${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" \
++        -initrd "$TESTDIR"/initramfs.server \
++        -pidfile "$TESTDIR"/server.pid -daemonize || return 1
+ 
+     sudo chmod 644 -- "$TESTDIR"/server.pid || return 1
+ 
+
diff --git a/0041.patch b/0041.patch
new file mode 100644
index 0000000..ca75cee
--- /dev/null
+++ b/0041.patch
@@ -0,0 +1,23 @@
+From d15c15c8f54d3aa97f7906e4f926584ac646fc5e Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Tue, 14 Aug 2018 16:54:27 +0200
+Subject: [PATCH] test/test-functions: be verbose for any $V not empty
+
+---
+ test/test-functions | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/test/test-functions b/test/test-functions
+index bde5f742..d6b28d20 100644
+--- a/test/test-functions
++++ b/test/test-functions
+@@ -60,7 +60,7 @@ while (($# > 0)); do
+             else
+ 	        echo "TEST: $TEST_DESCRIPTION [STARTED]";
+             fi
+-            if [ "$V" != "1" ]; then
++            if ! [[ "$V" ]]; then
+ 	        (
+ 		    test_setup && test_run
+ 		    ret=$?
+
diff --git a/0042.patch b/0042.patch
new file mode 100644
index 0000000..6410dbe
--- /dev/null
+++ b/0042.patch
@@ -0,0 +1,25 @@
+From 1363167d655f8d08ea8fd71e56c8c85ff94ccc04 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Tue, 14 Aug 2018 16:58:52 +0200
+Subject: [PATCH] Update README.md
+
+---
+ README.md | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/README.md b/README.md
+index e229641b..36ae7e1b 100644
+--- a/README.md
++++ b/README.md
+@@ -2,6 +2,10 @@
+ 
+ dracut is an initramfs infrastructure.
+ 
++## Travis
++
++[![Build Status](https://travis-ci.org/dracutdevs/dracut.svg?branch=master)](https://travis-ci.org/dracutdevs/dracut)
++
+ ## CentOS CI
+ 
+ [![Build Status](https://ci.centos.org/job/dracut-push-master/badge/icon)](https://ci.centos.org/job/dracut-push-master/)
+
diff --git a/0043.patch b/0043.patch
new file mode 100644
index 0000000..302e140
--- /dev/null
+++ b/0043.patch
@@ -0,0 +1,23 @@
+From 75b8b144a1cf5c7e15e0454f847615cadf6518e9 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Tue, 14 Aug 2018 17:02:14 +0200
+Subject: [PATCH] fedora-test.sh: don't parallelize travis tests
+
+---
+ fedora-test.sh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/fedora-test.sh b/fedora-test.sh
+index 146c7f2f..9528f08c 100755
+--- a/fedora-test.sh
++++ b/fedora-test.sh
+@@ -48,7 +48,7 @@ make -j$NCPU all syncheck rpm
+ 
+ cd test
+ 
+-time sudo make -j$((NCPU/2+1)) \
++time sudo make \
+      KVERSION=$(rpm -qa kernel --qf '%{VERSION}-%{RELEASE}.%{ARCH}\n' | sort -rn | head -1) \
+      TEST_RUN_ID=$RUN_ID \
+      -k V=2 \
+
diff --git a/0044.patch b/0044.patch
new file mode 100644
index 0000000..5e1c34c
--- /dev/null
+++ b/0044.patch
@@ -0,0 +1,26 @@
+From da5a44cfb727561e3a2b8e6e24003cd410537cfc Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Tue, 14 Aug 2018 17:06:58 +0200
+Subject: [PATCH] .travis.yml: add gitter notifications
+
+---
+ .travis.yml | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+diff --git a/.travis.yml b/.travis.yml
+index a71d9be2..96dcd951 100644
+--- a/.travis.yml
++++ b/.travis.yml
+@@ -10,3 +10,11 @@ before_script:
+ - docker pull fedora:$IMAGE
+ script:
+ - docker run --privileged -it -v $(pwd)/:/dracut fedora:$IMAGE /dracut/fedora-test.sh $IMAGE-$$
++notifications:
++  webhooks:
++    urls:
++      - https://webhooks.gitter.im/e/effa917ca3e0ed5fd00e
++    on_success: change  # options: [always|never|change] default: always
++    on_failure: always  # options: [always|never|change] default: always
++    on_start: never     # options: [always|never|change] default: always
++
+
diff --git a/0045.patch b/0045.patch
new file mode 100644
index 0000000..dd8a201
--- /dev/null
+++ b/0045.patch
@@ -0,0 +1,94 @@
+From 65d16d19141d0378f6cbab33b435a231ffdd37c4 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Thu, 16 Aug 2018 08:50:11 +0200
+Subject: [PATCH] travis: extend matrix
+
+---
+ .travis.yml    | 45 ++++++++++++++++++++++++++++++++++++++++++---
+ fedora-test.sh |  4 +++-
+ 2 files changed, 45 insertions(+), 4 deletions(-)
+
+diff --git a/.travis.yml b/.travis.yml
+index 96dcd951..fbaafdac 100644
+--- a/.travis.yml
++++ b/.travis.yml
+@@ -4,12 +4,51 @@ services:
+   - docker
+ env:
+   matrix:
+-    - IMAGE=latest
+-    - IMAGE=rawhide
++    - IMAGE=latest TESTS=01
++    - IMAGE=latest TESTS=02
++    - IMAGE=latest TESTS=03
++    - IMAGE=latest TESTS=04
++    - IMAGE=latest TESTS=10
++    - IMAGE=latest TESTS=11
++    - IMAGE=latest TESTS=12
++    - IMAGE=latest TESTS=13
++    - IMAGE=latest TESTS=14
++    - IMAGE=latest TESTS=15
++    - IMAGE=latest TESTS=16
++    - IMAGE=latest TESTS=17
++    - IMAGE=latest TESTS=18
++    - IMAGE=latest TESTS=20
++    - IMAGE=latest TESTS=30
++    - IMAGE=latest TESTS=31
++    - IMAGE=latest TESTS=40
++    - IMAGE=latest TESTS=50
++    - IMAGE=latest TESTS=70
++    - IMAGE=latest TESTS=99
++    - IMAGE=rawhide TESTS=01
++    - IMAGE=rawhide TESTS=02
++    - IMAGE=rawhide TESTS=03
++    - IMAGE=rawhide TESTS=04
++    - IMAGE=rawhide TESTS=10
++    - IMAGE=rawhide TESTS=11
++    - IMAGE=rawhide TESTS=12
++    - IMAGE=rawhide TESTS=13
++    - IMAGE=rawhide TESTS=14
++    - IMAGE=rawhide TESTS=15
++    - IMAGE=rawhide TESTS=16
++    - IMAGE=rawhide TESTS=17
++    - IMAGE=rawhide TESTS=18
++    - IMAGE=rawhide TESTS=20
++    - IMAGE=rawhide TESTS=30
++    - IMAGE=rawhide TESTS=31
++    - IMAGE=rawhide TESTS=40
++    - IMAGE=rawhide TESTS=50
++    - IMAGE=rawhide TESTS=70
++    - IMAGE=rawhide TESTS=99
++
+ before_script:
+ - docker pull fedora:$IMAGE
+ script:
+-- docker run --privileged -it -v $(pwd)/:/dracut fedora:$IMAGE /dracut/fedora-test.sh $IMAGE-$$
++- docker run --privileged -it -v $(pwd)/:/dracut fedora:$IMAGE /dracut/fedora-test.sh $IMAGE-$$ $TESTS
+ notifications:
+   webhooks:
+     urls:
+diff --git a/fedora-test.sh b/fedora-test.sh
+index 9528f08c..df7147c6 100755
+--- a/fedora-test.sh
++++ b/fedora-test.sh
+@@ -2,9 +2,10 @@
+ 
+ set -ex
+ 
+-cd ${0%/*}
++[[ -d ${0%/*} ]] && cd ${0%/*}
+ 
+ RUN_ID="$1"
++TESTS=$2
+ 
+ dnf -y update --best --allowerasing
+ 
+@@ -51,6 +52,7 @@ cd test
+ time sudo make \
+      KVERSION=$(rpm -qa kernel --qf '%{VERSION}-%{RELEASE}.%{ARCH}\n' | sort -rn | head -1) \
+      TEST_RUN_ID=$RUN_ID \
++     ${TESTS:+TESTS="$TESTS"} \
+      -k V=2 \
+      SKIP="14 16" \
+      check
+
diff --git a/0046.patch b/0046.patch
new file mode 100644
index 0000000..8618614
--- /dev/null
+++ b/0046.patch
@@ -0,0 +1,94 @@
+From 1ebbe2eb7b177f169e48df6318d9169e9ae1afe9 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Thu, 16 Aug 2018 09:10:29 +0200
+Subject: [PATCH] travis: combine jobs
+
+---
+ .travis.yml | 64 +++++++++++++++++++++----------------------------------------
+ 1 file changed, 22 insertions(+), 42 deletions(-)
+
+diff --git a/.travis.yml b/.travis.yml
+index fbaafdac..f2cd8b26 100644
+--- a/.travis.yml
++++ b/.travis.yml
+@@ -1,49 +1,29 @@
+ language: generic
+ sudo: required
+ services:
+-  - docker
++- docker
+ env:
+   matrix:
+-    - IMAGE=latest TESTS=01
+-    - IMAGE=latest TESTS=02
+-    - IMAGE=latest TESTS=03
+-    - IMAGE=latest TESTS=04
+-    - IMAGE=latest TESTS=10
+-    - IMAGE=latest TESTS=11
+-    - IMAGE=latest TESTS=12
+-    - IMAGE=latest TESTS=13
+-    - IMAGE=latest TESTS=14
+-    - IMAGE=latest TESTS=15
+-    - IMAGE=latest TESTS=16
+-    - IMAGE=latest TESTS=17
+-    - IMAGE=latest TESTS=18
+-    - IMAGE=latest TESTS=20
+-    - IMAGE=latest TESTS=30
+-    - IMAGE=latest TESTS=31
+-    - IMAGE=latest TESTS=40
+-    - IMAGE=latest TESTS=50
+-    - IMAGE=latest TESTS=70
+-    - IMAGE=latest TESTS=99
+-    - IMAGE=rawhide TESTS=01
+-    - IMAGE=rawhide TESTS=02
+-    - IMAGE=rawhide TESTS=03
+-    - IMAGE=rawhide TESTS=04
+-    - IMAGE=rawhide TESTS=10
+-    - IMAGE=rawhide TESTS=11
+-    - IMAGE=rawhide TESTS=12
+-    - IMAGE=rawhide TESTS=13
+-    - IMAGE=rawhide TESTS=14
+-    - IMAGE=rawhide TESTS=15
+-    - IMAGE=rawhide TESTS=16
+-    - IMAGE=rawhide TESTS=17
+-    - IMAGE=rawhide TESTS=18
+-    - IMAGE=rawhide TESTS=20
+-    - IMAGE=rawhide TESTS=30
+-    - IMAGE=rawhide TESTS=31
+-    - IMAGE=rawhide TESTS=40
+-    - IMAGE=rawhide TESTS=50
+-    - IMAGE=rawhide TESTS=70
+-    - IMAGE=rawhide TESTS=99
++  - IMAGE=latest TESTS=01
++  - IMAGE=latest TESTS="02 03 04"
++  - IMAGE=latest TESTS="10 11 12 13 15 17 18"
++  - IMAGE=latest TESTS=20
++  - IMAGE=latest TESTS=30
++  - IMAGE=latest TESTS=31
++  - IMAGE=latest TESTS=40
++  - IMAGE=latest TESTS=50
++  - IMAGE=latest TESTS=70
++  - IMAGE=latest TESTS=99
++  - IMAGE=rawhide TESTS=01
++  - IMAGE=rawhide TESTS="02 03 04"
++  - IMAGE=rawhide TESTS="10 11 12 13 15 17 18"
++  - IMAGE=rawhide TESTS=20
++  - IMAGE=rawhide TESTS=30
++  - IMAGE=rawhide TESTS=31
++  - IMAGE=rawhide TESTS=40
++  - IMAGE=rawhide TESTS=50
++  - IMAGE=rawhide TESTS=70
++  - IMAGE=rawhide TESTS=99
+ 
+ before_script:
+ - docker pull fedora:$IMAGE
+@@ -52,7 +32,7 @@ script:
+ notifications:
+   webhooks:
+     urls:
+-      - https://webhooks.gitter.im/e/effa917ca3e0ed5fd00e
++    - https://webhooks.gitter.im/e/effa917ca3e0ed5fd00e
+     on_success: change  # options: [always|never|change] default: always
+     on_failure: always  # options: [always|never|change] default: always
+     on_start: never     # options: [always|never|change] default: always
+
diff --git a/0047.patch b/0047.patch
new file mode 100644
index 0000000..7e63148
--- /dev/null
+++ b/0047.patch
@@ -0,0 +1,24 @@
+From 311198868044b79e8e4f37872514f580b51e4ceb Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Thu, 16 Aug 2018 09:19:52 +0200
+Subject: [PATCH] dracut.sh: remove bogus dir removal for --rebuild
+
+---
+ dracut.sh | 3 ---
+ 1 file changed, 3 deletions(-)
+
+diff --git a/dracut.sh b/dracut.sh
+index 6614d27d..8ee8c168 100755
+--- a/dracut.sh
++++ b/dracut.sh
+@@ -474,9 +474,6 @@ if [[ $append_args_l == "yes" ]]; then
+         eval set -- "$TEMP"
+         rearrange_params "$@"
+     fi
+-
+-    # clean the temporarily used scratch-pad directory
+-    rm -rf $scratch_dir
+ fi
+ 
+ unset PARMS_TO_STORE
+
diff --git a/0048.patch b/0048.patch
new file mode 100644
index 0000000..bf00e5d
--- /dev/null
+++ b/0048.patch
@@ -0,0 +1,49 @@
+From 01f9d0d9bf47f80823094de6b184ee67023406c7 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Thu, 16 Aug 2018 09:26:35 +0200
+Subject: [PATCH] travis: combine more tests
+
+---
+ .travis.yml | 14 +++++---------
+ 1 file changed, 5 insertions(+), 9 deletions(-)
+
+diff --git a/.travis.yml b/.travis.yml
+index f2cd8b26..a99418e3 100644
+--- a/.travis.yml
++++ b/.travis.yml
+@@ -5,21 +5,17 @@ services:
+ env:
+   matrix:
+   - IMAGE=latest TESTS=01
+-  - IMAGE=latest TESTS="02 03 04"
+-  - IMAGE=latest TESTS="10 11 12 13 15 17 18"
++  - IMAGE=latest TESTS="02 03 04 10 11 12 13 15 17 18"
+   - IMAGE=latest TESTS=20
+-  - IMAGE=latest TESTS=30
+-  - IMAGE=latest TESTS=31
++  - IMAGE=latest TESTS="30 31"
+   - IMAGE=latest TESTS=40
+   - IMAGE=latest TESTS=50
+   - IMAGE=latest TESTS=70
+   - IMAGE=latest TESTS=99
+   - IMAGE=rawhide TESTS=01
+-  - IMAGE=rawhide TESTS="02 03 04"
+-  - IMAGE=rawhide TESTS="10 11 12 13 15 17 18"
++  - IMAGE=rawhide TESTS="02 03 04 10 11 12 13 15 17 18"
+   - IMAGE=rawhide TESTS=20
+-  - IMAGE=rawhide TESTS=30
+-  - IMAGE=rawhide TESTS=31
++  - IMAGE=rawhide TESTS="30 31"
+   - IMAGE=rawhide TESTS=40
+   - IMAGE=rawhide TESTS=50
+   - IMAGE=rawhide TESTS=70
+@@ -28,7 +24,7 @@ env:
+ before_script:
+ - docker pull fedora:$IMAGE
+ script:
+-- docker run --privileged -it -v $(pwd)/:/dracut fedora:$IMAGE /dracut/fedora-test.sh $IMAGE-$$ $TESTS
++- docker run --privileged -it -v $(pwd)/:/dracut fedora:$IMAGE /dracut/fedora-test.sh $IMAGE-$$ "$TESTS"
+ notifications:
+   webhooks:
+     urls:
+
diff --git a/0049.patch b/0049.patch
new file mode 100644
index 0000000..f471892
--- /dev/null
+++ b/0049.patch
@@ -0,0 +1,52 @@
+From 3c8d3a65656707148d5f9e5de1c0191339a72053 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Thu, 16 Aug 2018 09:35:33 +0200
+Subject: [PATCH] travis: don't run TEST-40-NBD
+
+---
+ .travis.yml    | 16 +++++++---------
+ fedora-test.sh |  1 -
+ 2 files changed, 7 insertions(+), 10 deletions(-)
+
+diff --git a/.travis.yml b/.travis.yml
+index a99418e3..d6d3947c 100644
+--- a/.travis.yml
++++ b/.travis.yml
+@@ -4,19 +4,17 @@ services:
+ - docker
+ env:
+   matrix:
+-  - IMAGE=latest TESTS=01
+-  - IMAGE=latest TESTS="02 03 04 10 11 12 13 15 17 18"
+-  - IMAGE=latest TESTS=20
+-  - IMAGE=latest TESTS="30 31"
+-  - IMAGE=latest TESTS=40
+-  - IMAGE=latest TESTS=50
+-  - IMAGE=latest TESTS=70
+-  - IMAGE=latest TESTS=99
++  - IMAGE=latest  TESTS=01
++  - IMAGE=latest  TESTS="02 03 04 10 11 12 13 15 17 18"
++  - IMAGE=latest  TESTS=20
++  - IMAGE=latest  TESTS="30 31"
++  - IMAGE=latest  TESTS=50
++  - IMAGE=latest  TESTS=70
++  - IMAGE=latest  TESTS=99
+   - IMAGE=rawhide TESTS=01
+   - IMAGE=rawhide TESTS="02 03 04 10 11 12 13 15 17 18"
+   - IMAGE=rawhide TESTS=20
+   - IMAGE=rawhide TESTS="30 31"
+-  - IMAGE=rawhide TESTS=40
+   - IMAGE=rawhide TESTS=50
+   - IMAGE=rawhide TESTS=70
+   - IMAGE=rawhide TESTS=99
+diff --git a/fedora-test.sh b/fedora-test.sh
+index df7147c6..5e7d34d6 100755
+--- a/fedora-test.sh
++++ b/fedora-test.sh
+@@ -54,5 +54,4 @@ time sudo make \
+      TEST_RUN_ID=$RUN_ID \
+      ${TESTS:+TESTS="$TESTS"} \
+      -k V=2 \
+-     SKIP="14 16" \
+      check
+
diff --git a/0050.patch b/0050.patch
new file mode 100644
index 0000000..a5606f0
--- /dev/null
+++ b/0050.patch
@@ -0,0 +1,32 @@
+From 79afb279c273d46b65fafc2c686ed99c5433fe94 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Thu, 16 Aug 2018 09:48:02 +0200
+Subject: [PATCH] travis: fedora-test.sh send dnf output to dev/null
+
+---
+ fedora-test.sh | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/fedora-test.sh b/fedora-test.sh
+index 5e7d34d6..e7d0f633 100755
+--- a/fedora-test.sh
++++ b/fedora-test.sh
+@@ -7,7 +7,7 @@ set -ex
+ RUN_ID="$1"
+ TESTS=$2
+ 
+-dnf -y update --best --allowerasing
++dnf -y update --best --allowerasing &>/dev/null
+ 
+ dnf -y install --best --allowerasing \
+     dash \
+@@ -39,7 +39,7 @@ dnf -y install --best --allowerasing \
+     /usr/bin/qemu-kvm \
+     /usr/bin/qemu-system-$(uname -i) \
+     e2fsprogs \
+-    $NULL
++    $NULL &>/dev/null
+ 
+ ./configure
+ 
+
diff --git a/0051.patch b/0051.patch
new file mode 100644
index 0000000..b6f5692
--- /dev/null
+++ b/0051.patch
@@ -0,0 +1,46 @@
+From c31a80c9edf8603cbdc5d2fe4465571a2ffcdff0 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Thu, 16 Aug 2018 09:50:52 +0200
+Subject: [PATCH] TEST-01: remove memdebug
+
+---
+ .travis.yml                | 6 ++----
+ test/TEST-01-BASIC/test.sh | 2 +-
+ 2 files changed, 3 insertions(+), 5 deletions(-)
+
+diff --git a/.travis.yml b/.travis.yml
+index d6d3947c..1f50b6d9 100644
+--- a/.travis.yml
++++ b/.travis.yml
+@@ -4,15 +4,13 @@ services:
+ - docker
+ env:
+   matrix:
+-  - IMAGE=latest  TESTS=01
+-  - IMAGE=latest  TESTS="02 03 04 10 11 12 13 15 17 18"
++  - IMAGE=latest  TESTS="01 02 03 04 10 11 12 13 15 17 18"
+   - IMAGE=latest  TESTS=20
+   - IMAGE=latest  TESTS="30 31"
+   - IMAGE=latest  TESTS=50
+   - IMAGE=latest  TESTS=70
+   - IMAGE=latest  TESTS=99
+-  - IMAGE=rawhide TESTS=01
+-  - IMAGE=rawhide TESTS="02 03 04 10 11 12 13 15 17 18"
++  - IMAGE=rawhide TESTS="01 02 03 04 10 11 12 13 15 17 18"
+   - IMAGE=rawhide TESTS=20
+   - IMAGE=rawhide TESTS="30 31"
+   - IMAGE=rawhide TESTS=50
+diff --git a/test/TEST-01-BASIC/test.sh b/test/TEST-01-BASIC/test.sh
+index 137249f4..455afef6 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 rd.memdebug=4" \
++	-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" \
+ 	-initrd $TESTDIR/initramfs.testing || return 1
+     grep -F -m 1 -q dracut-root-block-success $TESTDIR/result || return 1
+ }
+
diff --git a/0052.patch b/0052.patch
new file mode 100644
index 0000000..9264dce
--- /dev/null
+++ b/0052.patch
@@ -0,0 +1,149 @@
+From 51d0a545557d535f814e402fff20274f9e125d85 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Thu, 16 Aug 2018 10:16:52 +0200
+Subject: [PATCH] travis: use own logtee.c to reduce log output
+
+---
+ .travis.yml         | 12 ++++++------
+ Makefile            |  3 +++
+ fedora-test.sh      |  2 +-
+ logtee.c            | 46 ++++++++++++++++++++++++++++++++++++++++++++++
+ test/test-functions | 15 ++++++++++++++-
+ 5 files changed, 70 insertions(+), 8 deletions(-)
+
+diff --git a/.travis.yml b/.travis.yml
+index 1f50b6d9..5298a816 100644
+--- a/.travis.yml
++++ b/.travis.yml
+@@ -10,12 +10,12 @@ env:
+   - IMAGE=latest  TESTS=50
+   - IMAGE=latest  TESTS=70
+   - IMAGE=latest  TESTS=99
+-  - IMAGE=rawhide TESTS="01 02 03 04 10 11 12 13 15 17 18"
+-  - IMAGE=rawhide TESTS=20
+-  - IMAGE=rawhide TESTS="30 31"
+-  - IMAGE=rawhide TESTS=50
+-  - IMAGE=rawhide TESTS=70
+-  - IMAGE=rawhide TESTS=99
++#  - IMAGE=rawhide TESTS="01 02 03 04 10 11 12 13 15 17 18"
++#  - IMAGE=rawhide TESTS=20
++#  - IMAGE=rawhide TESTS="30 31"
++#  - IMAGE=rawhide TESTS=50
++#  - IMAGE=rawhide TESTS=70
++#  - IMAGE=rawhide TESTS=99
+ 
+ before_script:
+ - docker pull fedora:$IMAGE
+diff --git a/Makefile b/Makefile
+index 414fb330..cd02dab0 100644
+--- a/Makefile
++++ b/Makefile
+@@ -63,6 +63,9 @@ install/strv.o: install/strv.c install/strv.h install/util.h install/macro.h ins
+ install/dracut-install: $(DRACUT_INSTALL_OBJECTS)
+ 	$(CC) $(LDFLAGS) -o $@ $(DRACUT_INSTALL_OBJECTS) $(LDLIBS) $(KMOD_LIBS)
+ 
++logtee: logtee.c
++	$(CC) $(LDFLAGS) -o $@ $<
++
+ dracut-install: install/dracut-install
+ 	ln -fs $< $@
+ 
+diff --git a/fedora-test.sh b/fedora-test.sh
+index e7d0f633..af38bc33 100755
+--- a/fedora-test.sh
++++ b/fedora-test.sh
+@@ -45,7 +45,7 @@ dnf -y install --best --allowerasing \
+ 
+ NCPU=$(getconf _NPROCESSORS_ONLN)
+ 
+-make -j$NCPU all syncheck rpm
++make -j$NCPU all syncheck rpm logtee
+ 
+ cd test
+ 
+diff --git a/logtee.c b/logtee.c
+new file mode 100644
+index 00000000..2f1937d4
+--- /dev/null
++++ b/logtee.c
+@@ -0,0 +1,46 @@
++#define _GNU_SOURCE
++#include <fcntl.h>
++#include <stdio.h>
++#include <stdlib.h>
++#include <unistd.h>
++#include <errno.h>
++#include <limits.h>
++
++int
++main(int argc, char *argv[])
++{
++	int fd;
++	int len, slen;
++
++	if (argc != 2) {
++		fprintf(stderr, "Usage: %s <file>\n", argv[0]);
++		exit(EXIT_FAILURE);
++	}
++
++	fd = open(argv[1], O_WRONLY | O_CREAT | O_TRUNC, 0644);
++	if (fd == -1) {
++		perror("open");
++		exit(EXIT_FAILURE);
++	}
++
++	fprintf(stderr, "Logging to %s: ", argv[1]);
++
++	do {
++		len = splice(STDIN_FILENO, NULL, fd, NULL,
++			     65536, SPLICE_F_MOVE);
++
++		if (len < 0) {
++			if (errno == EAGAIN)
++				continue;
++			perror("tee");
++			exit(EXIT_FAILURE);
++		} else
++			if (len == 0)
++				break;
++		fprintf(stderr, ".", len);
++	} while (1);
++	close(fd);
++	fprintf(stderr, "\n");
++	exit(EXIT_SUCCESS);
++}
++
+diff --git a/test/test-functions b/test/test-functions
+index d6b28d20..02ceafec 100644
+--- a/test/test-functions
++++ b/test/test-functions
+@@ -60,7 +60,7 @@ while (($# > 0)); do
+             else
+ 	        echo "TEST: $TEST_DESCRIPTION [STARTED]";
+             fi
+-            if ! [[ "$V" ]]; then
++            if [[ "$V" == "1" ]]; then
+ 	        (
+ 		    test_setup && test_run
+ 		    ret=$?
+@@ -69,6 +69,19 @@ while (($# > 0)); do
+ 		    rm -f -- .testdir${TEST_RUN_ID:+-$TEST_RUN_ID}
+ 		    exit $ret
+ 	        ) </dev/null >test-${TEST_RUN_ID:+-$TEST_RUN_ID}.log 2>&1
++            elif [[ "$V" == "2" ]]; then
++                set -o pipefail
++                (
++		    test_setup && test_run
++		    ret=$?
++		    test_cleanup
++                    if ((ret!=0)) && [[ -f "$TESTDIR"/server.log ]]; then
++                        mv [[ -f "$TESTDIR"/server.log ]] ./server${TEST_RUN_ID:+-$TEST_RUN_ID}.log
++                    fi
++		    rm -fr -- "$TESTDIR"
++		    rm -f -- .testdir${TEST_RUN_ID:+-$TEST_RUN_ID}
++		    exit $ret
++	        ) </dev/null 2>&1 | $basedir/logtee test-${TEST_RUN_ID:+-$TEST_RUN_ID}.log
+             else
+                 set -o pipefail
+                 (
+
diff --git a/0053.patch b/0053.patch
new file mode 100644
index 0000000..006c0e5
--- /dev/null
+++ b/0053.patch
@@ -0,0 +1,24 @@
+From 110063c5850ea1cb95dd2af171adff1a03305e60 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Thu, 16 Aug 2018 10:29:16 +0200
+Subject: [PATCH] travis: git check
+
+---
+ .travis.yml | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/.travis.yml b/.travis.yml
+index 5298a816..72cfe8f9 100644
+--- a/.travis.yml
++++ b/.travis.yml
+@@ -19,6 +19,9 @@ env:
+ 
+ before_script:
+ - docker pull fedora:$IMAGE
++- git describe --abbrev=0 --tags || :
++- git describe --tags || :
++
+ script:
+ - docker run --privileged -it -v $(pwd)/:/dracut fedora:$IMAGE /dracut/fedora-test.sh $IMAGE-$$ "$TESTS"
+ notifications:
+
diff --git a/0054.patch b/0054.patch
new file mode 100644
index 0000000..31318d1
--- /dev/null
+++ b/0054.patch
@@ -0,0 +1,39 @@
+From 6f90be2971439e84c4efb61d1fc888b165b3f3ca Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Thu, 16 Aug 2018 10:33:06 +0200
+Subject: [PATCH] travis: fixup
+
+---
+ .travis.yml | 13 ++++---------
+ 1 file changed, 4 insertions(+), 9 deletions(-)
+
+diff --git a/.travis.yml b/.travis.yml
+index 72cfe8f9..cd05ceae 100644
+--- a/.travis.yml
++++ b/.travis.yml
+@@ -10,20 +10,15 @@ env:
+   - IMAGE=latest  TESTS=50
+   - IMAGE=latest  TESTS=70
+   - IMAGE=latest  TESTS=99
+-#  - IMAGE=rawhide TESTS="01 02 03 04 10 11 12 13 15 17 18"
+-#  - IMAGE=rawhide TESTS=20
+-#  - IMAGE=rawhide TESTS="30 31"
+-#  - IMAGE=rawhide TESTS=50
+-#  - IMAGE=rawhide TESTS=70
+-#  - IMAGE=rawhide TESTS=99
+ 
+ before_script:
+-- docker pull fedora:$IMAGE
+-- git describe --abbrev=0 --tags || :
+-- git describe --tags || :
++  - docker pull fedora:$IMAGE
++  - git describe --abbrev=0 --tags || :
++  - git describe --tags || :
+ 
+ script:
+ - docker run --privileged -it -v $(pwd)/:/dracut fedora:$IMAGE /dracut/fedora-test.sh $IMAGE-$$ "$TESTS"
++
+ notifications:
+   webhooks:
+     urls:
+
diff --git a/0055.patch b/0055.patch
new file mode 100644
index 0000000..0dd70c6
--- /dev/null
+++ b/0055.patch
@@ -0,0 +1,26 @@
+From 2b77ba0b75dad8f87c141fc517f2999b2e45ae0c Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Thu, 16 Aug 2018 10:36:17 +0200
+Subject: [PATCH] travis: fight with yaml
+
+---
+ .travis.yml | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/.travis.yml b/.travis.yml
+index cd05ceae..38b29ca4 100644
+--- a/.travis.yml
++++ b/.travis.yml
+@@ -13,8 +13,9 @@ env:
+ 
+ before_script:
+   - docker pull fedora:$IMAGE
+-  - git describe --abbrev=0 --tags || :
+-  - git describe --tags || :
++  - |
++    git describe --abbrev=0 --tags || :
++    git describe --tags || :
+ 
+ script:
+ - docker run --privileged -it -v $(pwd)/:/dracut fedora:$IMAGE /dracut/fedora-test.sh $IMAGE-$$ "$TESTS"
+
diff --git a/0056.patch b/0056.patch
new file mode 100644
index 0000000..680bd88
--- /dev/null
+++ b/0056.patch
@@ -0,0 +1,22 @@
+From 9f02b291ac9c315b94d42c4c029645fb1298dac4 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Thu, 16 Aug 2018 10:39:49 +0200
+Subject: [PATCH] travis: git pull --tags
+
+---
+ .travis.yml | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/.travis.yml b/.travis.yml
+index 38b29ca4..01be428f 100644
+--- a/.travis.yml
++++ b/.travis.yml
+@@ -13,6 +13,7 @@ env:
+ 
+ before_script:
+   - docker pull fedora:$IMAGE
++  - git pull --tags
+   - |
+     git describe --abbrev=0 --tags || :
+     git describe --tags || :
+
diff --git a/0057.patch b/0057.patch
new file mode 100644
index 0000000..413d889
--- /dev/null
+++ b/0057.patch
@@ -0,0 +1,38 @@
+From 0ae584824519995219857ca7f447e73f31a6da9a Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Thu, 16 Aug 2018 10:46:57 +0200
+Subject: [PATCH] travis: git pull more depth
+
+---
+ .travis.yml | 2 +-
+ Makefile    | 4 ++--
+ 2 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/.travis.yml b/.travis.yml
+index 01be428f..2df45f4d 100644
+--- a/.travis.yml
++++ b/.travis.yml
+@@ -13,7 +13,7 @@ env:
+ 
+ before_script:
+   - docker pull fedora:$IMAGE
+-  - git pull --tags
++  - git pull --depth=100
+   - |
+     git describe --abbrev=0 --tags || :
+     git describe --tags || :
+diff --git a/Makefile b/Makefile
+index cd02dab0..80623437 100644
+--- a/Makefile
++++ b/Makefile
+@@ -1,7 +1,7 @@
+ -include dracut-version.sh
+ 
+-VERSION ?= $(shell [ -d .git ] && git describe --abbrev=0 --tags 2>/dev/null || echo $(DRACUT_VERSION))
+-GITVERSION ?= $(shell [ -d .git ] && { v=$$(git describe --tags 2>/dev/null); [ -n "$$v" ] && [ $${v\#*-} != $$v ] && echo -$${v\#*-}; } )
++VERSION ?= $(shell [ -d .git ] && git describe --abbrev=0 --tags --always 2>/dev/null || echo $(DRACUT_VERSION))
++GITVERSION ?= $(shell [ -d .git ] && { v=$$(git describe --tags --always 2>/dev/null); [ -n "$$v" ] && [ $${v\#*-} != $$v ] && echo -$${v\#*-}; } )
+ 
+ -include Makefile.inc
+ 
+
diff --git a/0058.patch b/0058.patch
new file mode 100644
index 0000000..017b251
--- /dev/null
+++ b/0058.patch
@@ -0,0 +1,66 @@
+From 67f43d2124cb827f45f4a1f3a2c1aae7cb08378e Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Thu, 16 Aug 2018 11:13:55 +0200
+Subject: [PATCH] test: fixed test.log name
+
+---
+ test/test-functions | 14 +++++++-------
+ 1 file changed, 7 insertions(+), 7 deletions(-)
+
+diff --git a/test/test-functions b/test/test-functions
+index 02ceafec..0c9d88c8 100644
+--- a/test/test-functions
++++ b/test/test-functions
+@@ -54,7 +54,7 @@ while (($# > 0)); do
+ 	    exit $?;;
+         --all)
+             check_root
+-            if ! test_check 2&>test-${TEST_RUN_ID:+-$TEST_RUN_ID}.log ; then
++            if ! test_check 2&>test${TEST_RUN_ID:+-$TEST_RUN_ID}.log ; then
+  	        echo -e "TEST: $TEST_DESCRIPTION " $COLOR_WARNING "[SKIPPED]" $COLOR_NORMAL
+ 		exit 0;
+             else
+@@ -68,7 +68,7 @@ while (($# > 0)); do
+ 		    rm -fr -- "$TESTDIR"
+ 		    rm -f -- .testdir${TEST_RUN_ID:+-$TEST_RUN_ID}
+ 		    exit $ret
+-	        ) </dev/null >test-${TEST_RUN_ID:+-$TEST_RUN_ID}.log 2>&1
++	        ) </dev/null >test${TEST_RUN_ID:+-$TEST_RUN_ID}.log 2>&1
+             elif [[ "$V" == "2" ]]; then
+                 set -o pipefail
+                 (
+@@ -81,7 +81,7 @@ while (($# > 0)); do
+ 		    rm -fr -- "$TESTDIR"
+ 		    rm -f -- .testdir${TEST_RUN_ID:+-$TEST_RUN_ID}
+ 		    exit $ret
+-	        ) </dev/null 2>&1 | $basedir/logtee test-${TEST_RUN_ID:+-$TEST_RUN_ID}.log
++	        ) </dev/null 2>&1 | $basedir/logtee test${TEST_RUN_ID:+-$TEST_RUN_ID}.log
+             else
+                 set -o pipefail
+                 (
+@@ -94,20 +94,20 @@ while (($# > 0)); do
+ 		    rm -fr -- "$TESTDIR"
+ 		    rm -f -- .testdir${TEST_RUN_ID:+-$TEST_RUN_ID}
+ 		    exit $ret
+-	        ) </dev/null 2>&1 | tee test-${TEST_RUN_ID:+-$TEST_RUN_ID}.log
++	        ) </dev/null 2>&1 | tee test${TEST_RUN_ID:+-$TEST_RUN_ID}.log
+             fi
+ 	    ret=$?
+             set +o pipefail
+ 	    if [ $ret -eq 0 ]; then
+-                rm -- test-${TEST_RUN_ID:+-$TEST_RUN_ID}.log
++                rm -- test${TEST_RUN_ID:+-$TEST_RUN_ID}.log
+ 	        echo -e "TEST: $TEST_DESCRIPTION " $COLOR_SUCCESS "[OK]" $COLOR_NORMAL
+ 	    else
+ 	        echo -e "TEST: $TEST_DESCRIPTION " $COLOR_FAILURE "[FAILED]" $COLOR_NORMAL
+                 if [ "$V" == "2" ]; then
+-	            cat $(pwd)/server${TEST_RUN_ID:+-$TEST_RUN_ID}.log $(pwd)/test-${TEST_RUN_ID:+-$TEST_RUN_ID}.log
++	            cat $(pwd)/server${TEST_RUN_ID:+-$TEST_RUN_ID}.log $(pwd)/test${TEST_RUN_ID:+-$TEST_RUN_ID}.log
+ 	            echo -e "TEST: $TEST_DESCRIPTION " $COLOR_FAILURE "[FAILED]" $COLOR_NORMAL
+                 else
+-	            echo "see $(pwd)/test-${TEST_RUN_ID:+-$TEST_RUN_ID}.log"
++	            echo "see $(pwd)/test${TEST_RUN_ID:+-$TEST_RUN_ID}.log"
+                 fi
+ 	    fi
+ 	    exit $ret;;
+
diff --git a/0059.patch b/0059.patch
new file mode 100644
index 0000000..1f96b3f
--- /dev/null
+++ b/0059.patch
@@ -0,0 +1,55 @@
+From f59664a01fa9b525e211fbcb837bf8b54cac9acb Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Thu, 16 Aug 2018 11:14:11 +0200
+Subject: [PATCH] logtee: reduce output
+
+---
+ logtee.c | 16 ++++++++++++----
+ 1 file changed, 12 insertions(+), 4 deletions(-)
+
+diff --git a/logtee.c b/logtee.c
+index 2f1937d4..2690e72d 100644
+--- a/logtee.c
++++ b/logtee.c
+@@ -6,6 +6,8 @@
+ #include <errno.h>
+ #include <limits.h>
+ 
++#define BUFLEN 4096
++
+ int
+ main(int argc, char *argv[])
+ {
+@@ -25,9 +27,11 @@ main(int argc, char *argv[])
+ 
+ 	fprintf(stderr, "Logging to %s: ", argv[1]);
+ 
++	slen = 0;
++
+ 	do {
+ 		len = splice(STDIN_FILENO, NULL, fd, NULL,
+-			     65536, SPLICE_F_MOVE);
++			     BUFLEN, SPLICE_F_MOVE);
+ 
+ 		if (len < 0) {
+ 			if (errno == EAGAIN)
+@@ -37,10 +41,14 @@ main(int argc, char *argv[])
+ 		} else
+ 			if (len == 0)
+ 				break;
+-		fprintf(stderr, ".", len);
++		slen += len;
++		if ((slen/BUFLEN) > 0) {
++			fprintf(stderr, ".");
++		}
++		slen = slen % BUFLEN;
++
+ 	} while (1);
+ 	close(fd);
+ 	fprintf(stderr, "\n");
+ 	exit(EXIT_SUCCESS);
+-}
+-
++}
+\ No newline at end of file
+
diff --git a/0060.patch b/0060.patch
new file mode 100644
index 0000000..e616f92
--- /dev/null
+++ b/0060.patch
@@ -0,0 +1,30 @@
+From c128b969bb860dee863fcd3beed1f4097f6fb44a Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Thu, 16 Aug 2018 11:15:16 +0200
+Subject: [PATCH] travis: combine more tests
+
+---
+ .travis.yml | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/.travis.yml b/.travis.yml
+index 2df45f4d..dfb4a616 100644
+--- a/.travis.yml
++++ b/.travis.yml
+@@ -4,12 +4,12 @@ services:
+ - docker
+ env:
+   matrix:
+-  - IMAGE=latest  TESTS="01 02 03 04 10 11 12 13 15 17 18"
++  - IMAGE=latest  TESTS="01 02 03 04 10 11"
++  - IMAGE=latest  TESTS="12 13 15 17 18"
+   - IMAGE=latest  TESTS=20
+   - IMAGE=latest  TESTS="30 31"
+   - IMAGE=latest  TESTS=50
+-  - IMAGE=latest  TESTS=70
+-  - IMAGE=latest  TESTS=99
++  - IMAGE=latest  TESTS="70 99"
+ 
+ before_script:
+   - docker pull fedora:$IMAGE
+
diff --git a/0061.patch b/0061.patch
new file mode 100644
index 0000000..e322ac1
--- /dev/null
+++ b/0061.patch
@@ -0,0 +1,23 @@
+From f8cad00948c10107f84b9fcba812589a256f8f80 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Thu, 16 Aug 2018 11:47:21 +0200
+Subject: [PATCH] test: for V=2 tail only the last MB of logs
+
+---
+ test/test-functions | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/test/test-functions b/test/test-functions
+index 0c9d88c8..6d7f418b 100644
+--- a/test/test-functions
++++ b/test/test-functions
+@@ -104,7 +104,7 @@ while (($# > 0)); do
+ 	    else
+ 	        echo -e "TEST: $TEST_DESCRIPTION " $COLOR_FAILURE "[FAILED]" $COLOR_NORMAL
+                 if [ "$V" == "2" ]; then
+-	            cat $(pwd)/server${TEST_RUN_ID:+-$TEST_RUN_ID}.log $(pwd)/test${TEST_RUN_ID:+-$TEST_RUN_ID}.log
++	            tail -c 1048576 $(pwd)/server${TEST_RUN_ID:+-$TEST_RUN_ID}.log $(pwd)/test${TEST_RUN_ID:+-$TEST_RUN_ID}.log
+ 	            echo -e "TEST: $TEST_DESCRIPTION " $COLOR_FAILURE "[FAILED]" $COLOR_NORMAL
+                 else
+ 	            echo "see $(pwd)/test${TEST_RUN_ID:+-$TEST_RUN_ID}.log"
+
diff --git a/0062.patch b/0062.patch
new file mode 100644
index 0000000..7fbef0d
--- /dev/null
+++ b/0062.patch
@@ -0,0 +1,65 @@
+From 9c034dc326b4acd8e66af15f76f151311a5408bb Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Thu, 16 Aug 2018 11:57:30 +0200
+Subject: [PATCH] travis: no rpm check for all matrix tests
+
+---
+ .travis.yml    | 10 +++++-----
+ fedora-test.sh | 24 ++++++++++++++----------
+ 2 files changed, 19 insertions(+), 15 deletions(-)
+
+diff --git a/.travis.yml b/.travis.yml
+index dfb4a616..075cbc6a 100644
+--- a/.travis.yml
++++ b/.travis.yml
+@@ -4,12 +4,12 @@ services:
+ - docker
+ env:
+   matrix:
+-  - IMAGE=latest  TESTS="01 02 03 04 10 11"
+-  - IMAGE=latest  TESTS="12 13 15 17 18"
++  - IMAGE=latest
++  - IMAGE=latest  TESTS="01 02 03 04 10 11 12"
++  - IMAGE=latest  TESTS="13 15 17 18"
+   - IMAGE=latest  TESTS=20
+-  - IMAGE=latest  TESTS="30 31"
+-  - IMAGE=latest  TESTS=50
+-  - IMAGE=latest  TESTS="70 99"
++  - IMAGE=latest  TESTS="30 31 99"
++  - IMAGE=latest  TESTS="50 70"
+ 
+ before_script:
+   - docker pull fedora:$IMAGE
+diff --git a/fedora-test.sh b/fedora-test.sh
+index af38bc33..87023a84 100755
+--- a/fedora-test.sh
++++ b/fedora-test.sh
+@@ -45,13 +45,17 @@ dnf -y install --best --allowerasing \
+ 
+ NCPU=$(getconf _NPROCESSORS_ONLN)
+ 
+-make -j$NCPU all syncheck rpm logtee
+-
+-cd test
+-
+-time sudo make \
+-     KVERSION=$(rpm -qa kernel --qf '%{VERSION}-%{RELEASE}.%{ARCH}\n' | sort -rn | head -1) \
+-     TEST_RUN_ID=$RUN_ID \
+-     ${TESTS:+TESTS="$TESTS"} \
+-     -k V=2 \
+-     check
++if ! [[ $TESTS ]]; then
++    make -j$NCPU all syncheck rpm logtee
++else
++    make -j$NCPU all logtee
++
++    cd test
++
++    time sudo make \
++         KVERSION=$(rpm -qa kernel --qf '%{VERSION}-%{RELEASE}.%{ARCH}\n' | sort -rn | head -1) \
++         TEST_RUN_ID=$RUN_ID \
++         ${TESTS:+TESTS="$TESTS"} \
++         -k V=2 \
++         check
++fi
+
diff --git a/0063.patch b/0063.patch
new file mode 100644
index 0000000..f291125
--- /dev/null
+++ b/0063.patch
@@ -0,0 +1,45 @@
+From 5a8f1aef556056de88d55bb398443fe2b57eae52 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Thu, 16 Aug 2018 11:59:09 +0200
+Subject: [PATCH] TEST-15-BTRFSRAID: sync in test-init
+
+strange failure
+---
+ test/TEST-15-BTRFSRAID/test-init.sh | 1 +
+ test/TEST-15-BTRFSRAID/test.sh      | 3 ++-
+ 2 files changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/test/TEST-15-BTRFSRAID/test-init.sh b/test/TEST-15-BTRFSRAID/test-init.sh
+index 8f7cdf3a..ab9021df 100755
+--- a/test/TEST-15-BTRFSRAID/test-init.sh
++++ b/test/TEST-15-BTRFSRAID/test-init.sh
+@@ -2,6 +2,7 @@
+ export PATH=/sbin:/bin:/usr/sbin:/usr/bin
+ exec >/dev/console 2>&1
+ echo "dracut-root-block-success" >/dev/sda1
++sync
+ export TERM=linux
+ export PS1='initramfs-test:\w\$ '
+ [ -f /etc/fstab ] || ln -s /proc/mounts /etc/fstab
+diff --git a/test/TEST-15-BTRFSRAID/test.sh b/test/TEST-15-BTRFSRAID/test.sh
+index b8969863..3936ade2 100755
+--- a/test/TEST-15-BTRFSRAID/test.sh
++++ b/test/TEST-15-BTRFSRAID/test.sh
+@@ -15,6 +15,7 @@ test_run() {
+ 	-append "panic=1 root=LABEL=root rw rd.retry=3 rd.info console=ttyS0,115200n81 selinux=0 rd.shell=0 $DEBUGFAIL" \
+ 	-initrd $TESTDIR/initramfs.testing
+     dd if=$DISKIMAGE bs=512 count=4 skip=2048 | grep -F -m 1 -q dracut-root-block-success $DISKIMAGE || return 1
++    return 0
+ }
+ 
+ test_setup() {
+@@ -38,7 +39,7 @@ test_setup() {
+             mkdir -p -- var/lib/nfs/rpc_pipefs
+         )
+ 	inst_multiple sh df free ls shutdown poweroff stty cat ps ln ip \
+-	    mount dmesg dhclient mkdir cp ping dhclient
++	    mount dmesg dhclient mkdir cp ping dhclient sync
+         for _terminfodir in /lib/terminfo /etc/terminfo /usr/share/terminfo; do
+ 	    [ -f ${_terminfodir}/l/linux ] && break
+ 	done
+
diff --git a/0064.patch b/0064.patch
new file mode 100644
index 0000000..41044cc
--- /dev/null
+++ b/0064.patch
@@ -0,0 +1,23 @@
+From 2699d8ff7eb41ffafba46194f29bab9670b9e874 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Thu, 16 Aug 2018 12:03:40 +0200
+Subject: [PATCH] TEST-99-RPM: removed --releasever
+
+---
+ test/TEST-99-RPM/test.sh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/test/TEST-99-RPM/test.sh b/test/TEST-99-RPM/test.sh
+index b76a061b..984b9385 100755
+--- a/test/TEST-99-RPM/test.sh
++++ b/test/TEST-99-RPM/test.sh
+@@ -35,7 +35,7 @@ test_run() {
+     dnf_or_yum_cmd=yum
+     command -v dnf >/dev/null && { dnf_or_yum="dnf"; dnf_or_yum_cmd="dnf --allowerasing"; }
+     for (( i=0; i < 5 ; i++)); do
+-        $dnf_or_yum_cmd -v --nogpgcheck --installroot "$rootdir"/ --releasever 29 --disablerepo='*' \
++        $dnf_or_yum_cmd -v --nogpgcheck --installroot "$rootdir"/ --disablerepo='*' \
+                         --enablerepo=fedora --enablerepo=updates \
+                         install -y \
+                         $dnf_or_yum \
+
diff --git a/0065.patch b/0065.patch
new file mode 100644
index 0000000..d2c4ac3
--- /dev/null
+++ b/0065.patch
@@ -0,0 +1,50 @@
+From 7c62555bcffd7565883738df5e8c2150e887694f Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Thu, 16 Aug 2018 13:05:42 +0200
+Subject: [PATCH] TEST-15-BTRFSRAID: use seperate disk image for boot result
+
+---
+ test/TEST-15-BTRFSRAID/test-init.sh |  2 +-
+ test/TEST-15-BTRFSRAID/test.sh      | 10 ++++++----
+ 2 files changed, 7 insertions(+), 5 deletions(-)
+
+diff --git a/test/TEST-15-BTRFSRAID/test-init.sh b/test/TEST-15-BTRFSRAID/test-init.sh
+index ab9021df..ed66a2b3 100755
+--- a/test/TEST-15-BTRFSRAID/test-init.sh
++++ b/test/TEST-15-BTRFSRAID/test-init.sh
+@@ -1,7 +1,7 @@
+ #!/bin/sh
+ export PATH=/sbin:/bin:/usr/sbin:/usr/bin
+ exec >/dev/console 2>&1
+-echo "dracut-root-block-success" >/dev/sda1
++echo "dracut-root-block-success" >/dev/sda
+ sync
+ export TERM=linux
+ export PS1='initramfs-test:\w\$ '
+diff --git a/test/TEST-15-BTRFSRAID/test.sh b/test/TEST-15-BTRFSRAID/test.sh
+index 3936ade2..092ed254 100755
+--- a/test/TEST-15-BTRFSRAID/test.sh
++++ b/test/TEST-15-BTRFSRAID/test.sh
+@@ -7,15 +7,17 @@ KVERSION=${KVERSION-$(uname -r)}
+ #DEBUGFAIL="rd.shell"
+ test_run() {
+     DISKIMAGE=$TESTDIR/TEST-15-BTRFSRAID-root.img
++    MARKER_DISKIMAGE=$TESTDIR/TEST-15-BTRFSRAID-marker.img
++    dd if=/dev/zero of=$MARKER_DISKIMAGE bs=512 count=10
+     $testdir/run-qemu \
+-	-drive format=raw,index=0,media=disk,file=$DISKIMAGE \
+-	-m 512M   -smp 2 -nographic \
++	-drive format=raw,index=0,media=disk,file=$MARKER_DISKIMAGE \
++	-drive format=raw,index=1,media=disk,file=$DISKIMAGE \
++	-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" \
+ 	-initrd $TESTDIR/initramfs.testing
+-    dd if=$DISKIMAGE bs=512 count=4 skip=2048 | grep -F -m 1 -q dracut-root-block-success $DISKIMAGE || return 1
+-    return 0
++    grep -F -m 1 -q dracut-root-block-success $MARKER_DISKIMAGE || return 1
+ }
+ 
+ test_setup() {
+
diff --git a/0066.patch b/0066.patch
new file mode 100644
index 0000000..fb3bb99
--- /dev/null
+++ b/0066.patch
@@ -0,0 +1,29 @@
+From 286685cb720f4150f363487c3702ea12d838f7df Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Thu, 16 Aug 2018 13:20:40 +0200
+Subject: [PATCH] TEST-99-RPM: use releasever of the host system
+
+---
+ test/TEST-99-RPM/test.sh | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/test/TEST-99-RPM/test.sh b/test/TEST-99-RPM/test.sh
+index 984b9385..b4aca176 100755
+--- a/test/TEST-99-RPM/test.sh
++++ b/test/TEST-99-RPM/test.sh
+@@ -30,12 +30,12 @@ test_run() {
+        "$TESTDIR"/dracut-[0-9]*.$(arch).rpm \
+        "$TESTDIR"/dracut-network-[0-9]*.$(arch).rpm \
+        "$rootdir/$TESTDIR/"
+-
++    . /etc/os-release
+     dnf_or_yum=yum
+     dnf_or_yum_cmd=yum
+     command -v dnf >/dev/null && { dnf_or_yum="dnf"; dnf_or_yum_cmd="dnf --allowerasing"; }
+     for (( i=0; i < 5 ; i++)); do
+-        $dnf_or_yum_cmd -v --nogpgcheck --installroot "$rootdir"/ --disablerepo='*' \
++        $dnf_or_yum_cmd -v --nogpgcheck --installroot "$rootdir"/ --releasever "$VERSION_ID" --disablerepo='*' \
+                         --enablerepo=fedora --enablerepo=updates \
+                         install -y \
+                         $dnf_or_yum \
+
diff --git a/0067.patch b/0067.patch
new file mode 100644
index 0000000..e260427
--- /dev/null
+++ b/0067.patch
@@ -0,0 +1,31 @@
+From f059ce76826645569575ee9631b23806764095fe Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Thu, 16 Aug 2018 13:56:19 +0200
+Subject: [PATCH] travis: reshuffle tests
+
+---
+ .travis.yml | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/.travis.yml b/.travis.yml
+index 075cbc6a..8e20054a 100644
+--- a/.travis.yml
++++ b/.travis.yml
+@@ -5,11 +5,11 @@ services:
+ env:
+   matrix:
+   - IMAGE=latest
+-  - IMAGE=latest  TESTS="01 02 03 04 10 11 12"
+-  - IMAGE=latest  TESTS="13 15 17 18"
+-  - IMAGE=latest  TESTS=20
+-  - IMAGE=latest  TESTS="30 31 99"
+-  - IMAGE=latest  TESTS="50 70"
++  - IMAGE=latest  TESTS="13 15 17 18 30 31"
++  - IMAGE=latest  TESTS="10 20"
++  - IMAGE=latest  TESTS="01 02 03 04 70"
++  - IMAGE=latest  TESTS="11 12 99"
++  - IMAGE=latest  TESTS="50"
+ 
+ before_script:
+   - docker pull fedora:$IMAGE
+
diff --git a/0068.patch b/0068.patch
new file mode 100644
index 0000000..4b87a32
--- /dev/null
+++ b/0068.patch
@@ -0,0 +1,34 @@
+From 06e12e4ba8d827eedd0882d9918f94758d52a579 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Thu, 16 Aug 2018 14:25:23 +0200
+Subject: [PATCH] travis: rebalance tests
+
+---
+ .travis.yml | 10 +++++++---
+ 1 file changed, 7 insertions(+), 3 deletions(-)
+
+diff --git a/.travis.yml b/.travis.yml
+index 8e20054a..91ecafed 100644
+--- a/.travis.yml
++++ b/.travis.yml
+@@ -7,12 +7,16 @@ env:
+   - IMAGE=latest
+   - IMAGE=latest  TESTS="13 15 17 18 30 31"
+   - IMAGE=latest  TESTS="10 20"
+-  - IMAGE=latest  TESTS="01 02 03 04 70"
+-  - IMAGE=latest  TESTS="11 12 99"
+-  - IMAGE=latest  TESTS="50"
++  - IMAGE=latest  TESTS="01 02 03 04 11 70"
++  - IMAGE=latest  TESTS="12"
++  - IMAGE=latest  TESTS="50 99"
+ 
+ before_script:
+   - docker pull fedora:$IMAGE
++  - |
++    sudo modprobe kvm-intel nested=y || :
++    sudo modprobe kvm-amd nested=y || :
++    dmesg | tail || :
+   - git pull --depth=100
+   - |
+     git describe --abbrev=0 --tags || :
+
diff --git a/0069.patch b/0069.patch
new file mode 100644
index 0000000..9cabe22
--- /dev/null
+++ b/0069.patch
@@ -0,0 +1,30 @@
+From bd03d374b704324b595e2af1901e590ff7c5a92b Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Thu, 16 Aug 2018 14:28:54 +0200
+Subject: [PATCH] travis: modprobe amd nested=1
+
+GREAT!
+
+$ modinfo kvm-intel kvm-amd| fgrep nested
+parm:           nested:bool
+parm:           nested:int
+---
+ .travis.yml | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/.travis.yml b/.travis.yml
+index 91ecafed..0932805f 100644
+--- a/.travis.yml
++++ b/.travis.yml
+@@ -14,8 +14,8 @@ env:
+ before_script:
+   - docker pull fedora:$IMAGE
+   - |
+-    sudo modprobe kvm-intel nested=y || :
+-    sudo modprobe kvm-amd nested=y || :
++    sudo modprobe kvm-intel nested=1 || :
++    sudo modprobe kvm-amd nested=1 || :
+     dmesg | tail || :
+   - git pull --depth=100
+   - |
+
diff --git a/0070.patch b/0070.patch
new file mode 100644
index 0000000..9d5aa11
--- /dev/null
+++ b/0070.patch
@@ -0,0 +1,44 @@
+From a17440713acdc943983c61cf12c56aa0a7e3a58d Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Thu, 16 Aug 2018 14:48:21 +0200
+Subject: [PATCH] travis: reshuffle tests
+
+long running tests first
+---
+ .travis.yml | 22 +++++++++++++++++-----
+ 1 file changed, 17 insertions(+), 5 deletions(-)
+
+diff --git a/.travis.yml b/.travis.yml
+index 0932805f..f1aab2a9 100644
+--- a/.travis.yml
++++ b/.travis.yml
+@@ -5,11 +5,23 @@ services:
+ env:
+   matrix:
+   - IMAGE=latest
+-  - IMAGE=latest  TESTS="13 15 17 18 30 31"
+-  - IMAGE=latest  TESTS="10 20"
+-  - IMAGE=latest  TESTS="01 02 03 04 11 70"
+-  - IMAGE=latest  TESTS="12"
+-  - IMAGE=latest  TESTS="50 99"
++  - IMAGE=latest TESTS=01
++  - IMAGE=latest TESTS=12
++  - IMAGE=latest TESTS=20
++  - IMAGE=latest TESTS=50
++  - IMAGE=latest TESTS=31
++  - IMAGE=latest TESTS=30
++  - IMAGE=latest TESTS=70
++  - IMAGE=latest TESTS=99
++  - IMAGE=latest TESTS=02
++  - IMAGE=latest TESTS=03
++  - IMAGE=latest TESTS=04
++  - IMAGE=latest TESTS=10
++  - IMAGE=latest TESTS=11
++  - IMAGE=latest TESTS=13
++  - IMAGE=latest TESTS=15
++  - IMAGE=latest TESTS=17
++  - IMAGE=latest TESTS=18
+ 
+ before_script:
+   - docker pull fedora:$IMAGE
+
diff --git a/0071.patch b/0071.patch
new file mode 100644
index 0000000..34ebb94
--- /dev/null
+++ b/0071.patch
@@ -0,0 +1,41 @@
+From f19063ac71b9a82d19f3be7f252bf90d98be454f Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Thu, 16 Aug 2018 15:28:04 +0200
+Subject: [PATCH] travis: one last job reshuffle
+
+---
+ .travis.yml | 15 +++------------
+ 1 file changed, 3 insertions(+), 12 deletions(-)
+
+diff --git a/.travis.yml b/.travis.yml
+index f1aab2a9..83e9b4d1 100644
+--- a/.travis.yml
++++ b/.travis.yml
+@@ -5,23 +5,14 @@ services:
+ env:
+   matrix:
+   - IMAGE=latest
+-  - IMAGE=latest TESTS=01
++  - IMAGE=latest TESTS="01 02 03 04"
+   - IMAGE=latest TESTS=12
+   - IMAGE=latest TESTS=20
+   - IMAGE=latest TESTS=50
+-  - IMAGE=latest TESTS=31
+-  - IMAGE=latest TESTS=30
++  - IMAGE=latest TESTS="30 31"
+   - IMAGE=latest TESTS=70
+   - IMAGE=latest TESTS=99
+-  - IMAGE=latest TESTS=02
+-  - IMAGE=latest TESTS=03
+-  - IMAGE=latest TESTS=04
+-  - IMAGE=latest TESTS=10
+-  - IMAGE=latest TESTS=11
+-  - IMAGE=latest TESTS=13
+-  - IMAGE=latest TESTS=15
+-  - IMAGE=latest TESTS=17
+-  - IMAGE=latest TESTS=18
++  - IMAGE=latest TESTS="10 11 13 15 17"
+ 
+ before_script:
+   - docker pull fedora:$IMAGE
+
diff --git a/0072.patch b/0072.patch
new file mode 100644
index 0000000..36d2b42
--- /dev/null
+++ b/0072.patch
@@ -0,0 +1,142 @@
+From 09132c732a36cc892310b26c829ac00c007d84ec Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Fri, 17 Aug 2018 15:38:03 +0200
+Subject: [PATCH] test/test-functions: fixed V=1 logic
+
+---
+ test/test-functions | 96 ++++++++++++++++++++++++++---------------------------
+ 1 file changed, 48 insertions(+), 48 deletions(-)
+
+diff --git a/test/test-functions b/test/test-functions
+index 6d7f418b..a6254ec7 100644
+--- a/test/test-functions
++++ b/test/test-functions
+@@ -38,79 +38,79 @@ while (($# > 0)); do
+     case $1 in
+         --run)
+             check_root
+-	    echo "TEST RUN: $TEST_DESCRIPTION"
+-	    test_check && test_run
+-	    exit $?;;
++            echo "TEST RUN: $TEST_DESCRIPTION"
++            test_check && test_run
++            exit $?;;
+         --setup)
+             check_root
+-	    echo "TEST SETUP: $TEST_DESCRIPTION"
+-	    test_check && test_setup
+-	    exit $?;;
++            echo "TEST SETUP: $TEST_DESCRIPTION"
++            test_check && test_setup
++            exit $?;;
+         --clean)
+-	    echo "TEST CLEANUP: $TEST_DESCRIPTION"
+-	    test_cleanup
+-	    rm -fr -- "$TESTDIR"
+-	    rm -f -- .testdir${TEST_RUN_ID:+-$TEST_RUN_ID}
+-	    exit $?;;
++            echo "TEST CLEANUP: $TEST_DESCRIPTION"
++            test_cleanup
++            rm -fr -- "$TESTDIR"
++            rm -f -- .testdir${TEST_RUN_ID:+-$TEST_RUN_ID}
++            exit $?;;
+         --all)
+             check_root
+             if ! test_check 2&>test${TEST_RUN_ID:+-$TEST_RUN_ID}.log ; then
+- 	        echo -e "TEST: $TEST_DESCRIPTION " $COLOR_WARNING "[SKIPPED]" $COLOR_NORMAL
+-		exit 0;
++                echo -e "TEST: $TEST_DESCRIPTION " $COLOR_WARNING "[SKIPPED]" $COLOR_NORMAL
++                exit 0;
+             else
+-	        echo "TEST: $TEST_DESCRIPTION [STARTED]";
++                echo "TEST: $TEST_DESCRIPTION [STARTED]";
+             fi
+             if [[ "$V" == "1" ]]; then
+-	        (
+-		    test_setup && test_run
+-		    ret=$?
+-		    test_cleanup
+-		    rm -fr -- "$TESTDIR"
+-		    rm -f -- .testdir${TEST_RUN_ID:+-$TEST_RUN_ID}
+-		    exit $ret
+-	        ) </dev/null >test${TEST_RUN_ID:+-$TEST_RUN_ID}.log 2>&1
+-            elif [[ "$V" == "2" ]]; then
+                 set -o pipefail
+                 (
+-		    test_setup && test_run
+-		    ret=$?
+-		    test_cleanup
++                    test_setup && test_run
++                    ret=$?
++                    test_cleanup
+                     if ((ret!=0)) && [[ -f "$TESTDIR"/server.log ]]; then
+                         mv [[ -f "$TESTDIR"/server.log ]] ./server${TEST_RUN_ID:+-$TEST_RUN_ID}.log
+                     fi
+-		    rm -fr -- "$TESTDIR"
+-		    rm -f -- .testdir${TEST_RUN_ID:+-$TEST_RUN_ID}
+-		    exit $ret
+-	        ) </dev/null 2>&1 | $basedir/logtee test${TEST_RUN_ID:+-$TEST_RUN_ID}.log
+-            else
++                    rm -fr -- "$TESTDIR"
++                    rm -f -- .testdir${TEST_RUN_ID:+-$TEST_RUN_ID}
++                    exit $ret
++                ) </dev/null 2>&1 | tee test${TEST_RUN_ID:+-$TEST_RUN_ID}.log
++            elif [[ "$V" == "2" ]]; then
+                 set -o pipefail
+                 (
+-		    test_setup && test_run
+-		    ret=$?
+-		    test_cleanup
++                    test_setup && test_run
++                    ret=$?
++                    test_cleanup
+                     if ((ret!=0)) && [[ -f "$TESTDIR"/server.log ]]; then
+                         mv [[ -f "$TESTDIR"/server.log ]] ./server${TEST_RUN_ID:+-$TEST_RUN_ID}.log
+                     fi
+-		    rm -fr -- "$TESTDIR"
+-		    rm -f -- .testdir${TEST_RUN_ID:+-$TEST_RUN_ID}
+-		    exit $ret
+-	        ) </dev/null 2>&1 | tee test${TEST_RUN_ID:+-$TEST_RUN_ID}.log
++                    rm -fr -- "$TESTDIR"
++                    rm -f -- .testdir${TEST_RUN_ID:+-$TEST_RUN_ID}
++                    exit $ret
++                ) </dev/null 2>&1 | $basedir/logtee test${TEST_RUN_ID:+-$TEST_RUN_ID}.log
++            else
++                (
++                    test_setup && test_run
++                    ret=$?
++                    test_cleanup
++                    rm -fr -- "$TESTDIR"
++                    rm -f -- .testdir${TEST_RUN_ID:+-$TEST_RUN_ID}
++                    exit $ret
++                ) </dev/null >test${TEST_RUN_ID:+-$TEST_RUN_ID}.log 2>&1
+             fi
+-	    ret=$?
++            ret=$?
+             set +o pipefail
+-	    if [ $ret -eq 0 ]; then
++            if [ $ret -eq 0 ]; then
+                 rm -- test${TEST_RUN_ID:+-$TEST_RUN_ID}.log
+-	        echo -e "TEST: $TEST_DESCRIPTION " $COLOR_SUCCESS "[OK]" $COLOR_NORMAL
+-	    else
+-	        echo -e "TEST: $TEST_DESCRIPTION " $COLOR_FAILURE "[FAILED]" $COLOR_NORMAL
++                echo -e "TEST: $TEST_DESCRIPTION " $COLOR_SUCCESS "[OK]" $COLOR_NORMAL
++            else
++                echo -e "TEST: $TEST_DESCRIPTION " $COLOR_FAILURE "[FAILED]" $COLOR_NORMAL
+                 if [ "$V" == "2" ]; then
+-	            tail -c 1048576 $(pwd)/server${TEST_RUN_ID:+-$TEST_RUN_ID}.log $(pwd)/test${TEST_RUN_ID:+-$TEST_RUN_ID}.log
+-	            echo -e "TEST: $TEST_DESCRIPTION " $COLOR_FAILURE "[FAILED]" $COLOR_NORMAL
++                    tail -c 1048576 $(pwd)/server${TEST_RUN_ID:+-$TEST_RUN_ID}.log $(pwd)/test${TEST_RUN_ID:+-$TEST_RUN_ID}.log
++                    echo -e "TEST: $TEST_DESCRIPTION " $COLOR_FAILURE "[FAILED]" $COLOR_NORMAL
+                 else
+-	            echo "see $(pwd)/test${TEST_RUN_ID:+-$TEST_RUN_ID}.log"
++                    echo "see $(pwd)/test${TEST_RUN_ID:+-$TEST_RUN_ID}.log"
+                 fi
+-	    fi
+-	    exit $ret;;
++            fi
++            exit $ret;;
+         *) break ;;
+     esac
+     shift
+
diff --git a/0073.patch b/0073.patch
new file mode 100644
index 0000000..19fd209
--- /dev/null
+++ b/0073.patch
@@ -0,0 +1,44 @@
+From ee18dd2b88d6767902d442baa92c95f7be69c265 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Fri, 17 Aug 2018 12:50:29 +0200
+Subject: [PATCH] ifcfg/write-ifcfg.sh: aggregate resolv.conf
+
+The old code used /tmp/net.$netif.resolv.conf with $netif being randomly
+chosen.
+
+As it is not known which nameserver have which priority, just sort them
+and deduplicate.
+---
+ modules.d/45ifcfg/module-setup.sh | 1 +
+ modules.d/45ifcfg/write-ifcfg.sh  | 5 ++++-
+ 2 files changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/modules.d/45ifcfg/module-setup.sh b/modules.d/45ifcfg/module-setup.sh
+index 6791985a..c89def3e 100755
+--- a/modules.d/45ifcfg/module-setup.sh
++++ b/modules.d/45ifcfg/module-setup.sh
+@@ -14,6 +14,7 @@ depends() {
+ 
+ # called by dracut
+ install() {
++    inst_binary sort
+     inst_hook pre-pivot 85 "$moddir/write-ifcfg.sh"
+ }
+ 
+diff --git a/modules.d/45ifcfg/write-ifcfg.sh b/modules.d/45ifcfg/write-ifcfg.sh
+index 25c81be3..3bf847a5 100755
+--- a/modules.d/45ifcfg/write-ifcfg.sh
++++ b/modules.d/45ifcfg/write-ifcfg.sh
+@@ -286,7 +286,10 @@ echo "files /etc/sysconfig/network-scripts" >> /run/initramfs/rwtab
+ echo "files /var/lib/dhclient" >> /run/initramfs/rwtab
+ {
+     cp /tmp/net.* /run/initramfs/
+-    cp /tmp/net.$netif.resolv.conf /run/initramfs/state/etc/resolv.conf
++    for i in /tmp/net.*.resolv.conf; do
++             [ -f "$i" ] && cat "$i"
++    done | sort -u > /run/initramfs/state/etc/resolv.conf
++    [ -s /run/initramfs/state/etc/resolv.conf ] || rm -f /run/initramfs/state/etc/resolv.conf
+     copytree /tmp/ifcfg /run/initramfs/state/etc/sysconfig/network-scripts
+     cp /tmp/ifcfg-leases/* /run/initramfs/state/var/lib/dhclient
+ } > /dev/null 2>&1
+
diff --git a/0074.patch b/0074.patch
new file mode 100644
index 0000000..33d82c1
--- /dev/null
+++ b/0074.patch
@@ -0,0 +1,42 @@
+From e0e6d96d696349c69cffd72a9c4eaf3be3dd22d5 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Mon, 20 Aug 2018 10:04:52 +0200
+Subject: [PATCH] travis: re-enable test 14
+
+https://bugzilla.redhat.com/show_bug.cgi?id=1615271
+---
+ .travis.yml | 15 ++++++++++++---
+ 1 file changed, 12 insertions(+), 3 deletions(-)
+
+diff --git a/.travis.yml b/.travis.yml
+index 83e9b4d1..f913db57 100644
+--- a/.travis.yml
++++ b/.travis.yml
+@@ -5,14 +5,23 @@ services:
+ env:
+   matrix:
+   - IMAGE=latest
+-  - IMAGE=latest TESTS="01 02 03 04"
++  - IMAGE=latest TESTS=01
+   - IMAGE=latest TESTS=12
+   - IMAGE=latest TESTS=20
+   - IMAGE=latest TESTS=50
+-  - IMAGE=latest TESTS="30 31"
++  - IMAGE=latest TESTS=30
++  - IMAGE=latest TESTS=31
+   - IMAGE=latest TESTS=70
+   - IMAGE=latest TESTS=99
+-  - IMAGE=latest TESTS="10 11 13 15 17"
++  - IMAGE=latest TESTS=02
++  - IMAGE=latest TESTS=03
++  - IMAGE=latest TESTS=04
++  - IMAGE=latest TESTS=10
++  - IMAGE=latest TESTS=11
++  - IMAGE=latest TESTS=13
++  - IMAGE=latest TESTS=14
++  - IMAGE=latest TESTS=15
++  - IMAGE=latest TESTS=17
+ 
+ before_script:
+   - docker pull fedora:$IMAGE
+
diff --git a/0075.patch b/0075.patch
new file mode 100644
index 0000000..beefa3c
--- /dev/null
+++ b/0075.patch
@@ -0,0 +1,129 @@
+From e791d753bed41315cfbd8611e65cc8cd64ea2d15 Mon Sep 17 00:00:00 2001
+From: Frederick Grose <fgrose@sugarlabs.org>
+Date: Wed, 1 Aug 2018 18:40:20 -0400
+Subject: [PATCH] livenet: Enable OverlayFS overlay in sysroot.mount generator.
+
+Adjust sysroot.mount configuration for rd.live.overlay.overlayfs option.
+Use link at /dev/root as a consistent flag for wait_for_dev.
+Adjust documentation.
+---
+ dracut.cmdline.7.asc                             |  9 +++++----
+ modules.d/90dmsquash-live/dmsquash-live-root.sh  |  5 +++--
+ modules.d/90dmsquash-live/parse-dmsquash-live.sh |  2 +-
+ modules.d/90livenet/livenet-generator.sh         | 18 ++++++++++++++----
+ 4 files changed, 23 insertions(+), 11 deletions(-)
+
+diff --git a/dracut.cmdline.7.asc b/dracut.cmdline.7.asc
+index 9252d253..df633e5d 100644
+--- a/dracut.cmdline.7.asc
++++ b/dracut.cmdline.7.asc
+@@ -930,7 +930,8 @@ NOTE: There must be enough free RAM available to hold the complete image.
+ This method is very suitable for diskless boots.
+ 
+ **root=**live:__<url>__::
+-Boots a live image retrieved from __<url>__.  Valid handlers: __http, https, ftp, torrent, tftp__.
++Boots a live image retrieved from __<url>__.  Requires dracut 'livenet' module.
++Valid handlers: __http, https, ftp, torrent, tftp__.
+ +
+ [listing]
+ .Example
+@@ -955,7 +956,7 @@ By default, this is __squashfs.img__.
+ Copy the complete image to RAM and use this for booting. This is useful
+ when the image resides on, i.e., a DVD which needs to be ejected later on.
+ 
+-**rd.live.overlay=**__<devspec>__:__(<pathspec>|auto)__|__none__::
++**rd.live.overlay={**__<devspec>__[:__{<pathspec>|auto}__]|__none__}::
+ Allow the usage of a permanent overlay.
+ - _<devspec>_ specifies the path to a device with a mountable filesystem.
+ - _<pathspec>_ is the path to a file within that filesystem, which shall be
+@@ -1005,10 +1006,10 @@ extended attributes and provides a valid d_type in readdir responses, such as
+ with ext4 and xfs.  On non-vfat-formatted devices, a persistent OverlayFS
+ overlay can extend the available root filesystem storage up to the capacity of
+ the LiveOS device.
+-
+++
+ If a persistent overlay is detected at the standard LiveOS path, the overlay &
+ overlay type detected (whether OverlayFS or Device-mapper) will be used.
+-
+++
+ The **rd.live.overlay.readonly** option, which allows a persistent overlayfs to
+ be mounted read only through a higher level transient overlay directory, has
+ been implemented through the multiple lower layers feature of OverlayFS.
+diff --git a/modules.d/90dmsquash-live/dmsquash-live-root.sh b/modules.d/90dmsquash-live/dmsquash-live-root.sh
+index 8f3b2bf9..ac603408 100755
+--- a/modules.d/90dmsquash-live/dmsquash-live-root.sh
++++ b/modules.d/90dmsquash-live/dmsquash-live-root.sh
+@@ -376,19 +376,20 @@ if [ -n "$overlayfs" ]; then
+         mount -r $FSIMG /run/rootfsbase
+     fi
+     if [ -z "$DRACUT_SYSTEMD" ]; then
+-        #FIXME What to link to /dev/root? Is it even needed?
+         printf 'mount -t overlay LiveOS_rootfs -o%s,%s %s\n' "$ROOTFLAGS" \
+         'lowerdir=/run/rootfsbase,upperdir=/run/overlayfs,workdir=/run/ovlwork' \
+         "$NEWROOT" > $hookdir/mount/01-$$-live.sh
+     fi
++    _dev=/run/rootfsbase
+ else
+-    ln -s /dev/mapper/live-rw /dev/root
++    _dev=/dev/mapper/live-rw
+     if [ -z "$DRACUT_SYSTEMD" ]; then
+         [ -n "$ROOTFLAGS" ] && ROOTFLAGS="-o $ROOTFLAGS"
+         printf 'mount %s /dev/mapper/live-rw %s\n' "$ROOTFLAGS" "$NEWROOT" > $hookdir/mount/01-$$-live.sh
+     fi
+     ln -s $BASE_LOOPDEV /run/rootfsbase
+ fi
++ln -s $_dev /dev/root
+ 
+ need_shutdown
+ 
+diff --git a/modules.d/90dmsquash-live/parse-dmsquash-live.sh b/modules.d/90dmsquash-live/parse-dmsquash-live.sh
+index a9b78ab5..0eedf1f6 100755
+--- a/modules.d/90dmsquash-live/parse-dmsquash-live.sh
++++ b/modules.d/90dmsquash-live/parse-dmsquash-live.sh
+@@ -57,6 +57,6 @@ info "root was $liveroot, is now $root"
+ # make sure that init doesn't complain
+ [ -z "$root" ] && root="live"
+ 
+-wait_for_dev -n /run/rootfsbase
++wait_for_dev -n /dev/root
+ 
+ return 0
+diff --git a/modules.d/90livenet/livenet-generator.sh b/modules.d/90livenet/livenet-generator.sh
+index a349cd0b..e2b5b6eb 100755
+--- a/modules.d/90livenet/livenet-generator.sh
++++ b/modules.d/90livenet/livenet-generator.sh
+@@ -43,19 +43,29 @@ GENERATOR_DIR="$2"
+ 
+ [ -d "$GENERATOR_DIR" ] || mkdir "$GENERATOR_DIR"
+ 
++getargbool 0 rd.live.overlay.overlayfs && overlayfs="yes"
++[ -e /xor_overlayfs ] && xor_overlayfs="yes"
+ ROOTFLAGS="$(getarg rootflags)"
+ {
+     echo "[Unit]"
+     echo "Before=initrd-root-fs.target"
+     echo "[Mount]"
+     echo "Where=/sysroot"
+-    echo "What=/dev/mapper/live-rw"
+-    [ -n "$ROOTFLAGS" ] && echo "Options=${ROOTFLAGS}"
++    if [ "$overlayfs$xor_overlayfs" = "yes" ]; then
++        echo "What=LiveOS_rootfs"
++        echo "Options=${ROOTFLAGS},lowerdir=/run/rootfsbase,upperdir=/run/overlayfs,workdir=/run/ovlwork"
++        echo "Type=overlay"
++        _dev=LiveOS_rootfs
++    else
++        echo "What=/dev/mapper/live-rw"
++        [ -n "$ROOTFLAGS" ] && echo "Options=${ROOTFLAGS}"
++        _dev=$'dev-mapper-live\\x2drw'
++    fi
+ } > "$GENERATOR_DIR"/sysroot.mount
+ 
+-mkdir -p "$GENERATOR_DIR/dev-mapper-live\x2drw.device.d"
++mkdir -p "$GENERATOR_DIR/$_dev.device.d"
+ {
+     echo "[Unit]"
+     echo "JobTimeoutSec=3000"
+     echo "JobRunningTimeoutSec=3000"
+-} > "$GENERATOR_DIR/dev-mapper-live\x2drw.device.d/timeout.conf"
++} > "$GENERATOR_DIR/$_dev.device.d/timeout.conf"
+
diff --git a/0076.patch b/0076.patch
new file mode 100644
index 0000000..933102e
--- /dev/null
+++ b/0076.patch
@@ -0,0 +1,361 @@
+From 789668deb3e6f8584ffab964d2204ddcb75f0a06 Mon Sep 17 00:00:00 2001
+From: Frederick Grose <fgrose@sugarlabs.org>
+Date: Mon, 20 Aug 2018 09:47:50 -0400
+Subject: [PATCH] dmsquash-live: Support a flattened squashfs.img
+
+A simplified root filesystem structure may be provided for OverlayFS
+overlays by squashing the root filesystem directly instead of squashing
+an embedded image file at /LiveOS/rootfs.img.  Detect and configure
+such a squashed root filesystem for live booting.
+
+For OverlayFS boots, avoid the read-only Device-mapper linear device
+  at /dev/mapper/live-base.
+Create a consistent device link at /dev/live-base for the read-only
+  base loop device for all overlayed live root filesystems.
+Consistently provide a link at /dev/root for wait_for_dev.
+
+Update documentation.
+---
+ dracut.cmdline.7.asc                            | 126 +++++++++++++++---------
+ modules.d/90dmsquash-live/dmsquash-live-root.sh |  51 ++++++----
+ 2 files changed, 110 insertions(+), 67 deletions(-)
+
+diff --git a/dracut.cmdline.7.asc b/dracut.cmdline.7.asc
+index df633e5d..882035af 100644
+--- a/dracut.cmdline.7.asc
++++ b/dracut.cmdline.7.asc
+@@ -838,23 +838,24 @@ Booting live images
+ Dracut offers multiple options for live booted images:
+ 
+ =====================
+-SquashFS with read-only filesystem image::: The system will boot with a read
+-only filesystem from the SquashFS and apply a writable device-mapper snapshot
+-over the read only filesystem.  Using this method ensures a relatively fast
+-boot and lower RAM usage. Users **must be careful** to avoid writing too many
+-blocks to the snapshot volume.  Once the blocks of the snapshot overlay are
+-exhausted, the root filesystem becomes read only and may cause application
+-failures.  The overlay file is marked 'Overflow', and a difficult recovery is
+-required to repair and enlarge the overlay offline.  Non-persistent overlays
+-are sparse files in RAM that only consume content space as required blocks are
+-allocated.  They default to an apparent size of 32 GiB in RAM.  The size can be
+-adjusted with the **rd.live.overlay.size=** kernel command line option.
++SquashFS with read-only filesystem image::: The system will boot with a
++read-only filesystem from the SquashFS and apply a writable Device-mapper
++snapshot or an OverlayFS overlay mount for the read-only base filesystem.  This
++method ensures a relatively fast boot and lower RAM usage. Users **must be
++careful** to avoid writing too many blocks to a snapshot volume.  Once the
++blocks of the snapshot overlay are exhausted, the root filesystem becomes
++read-only and may cause application failures.  The snapshot overlay file is
++marked 'Overflow', and a difficult recovery is required to repair and enlarge
++the overlay offline.  Non-persistent overlays are sparse files in RAM that only
++consume content space as required blocks are allocated.  They default to an
++apparent size of 32 GiB in RAM.  The size can be adjusted with the
++**rd.live.overlay.size=** kernel command line option.
+ +
+-The filesystem structure is expected to be:
++The filesystem structure is traditionally expected to be:
+ +
+ [listing]
+ --
+-squashfs.img          |  Squashfs from LiveCD .iso downloaded via network
++squashfs.img          |  SquashFS from LiveCD .iso
+    !(mount)
+    /LiveOS
+        |- rootfs.img  |  Filesystem image to mount read-only
+@@ -865,21 +866,35 @@ squashfs.img          |  Squashfs from LiveCD .iso downloaded via network
+             ...       |
+ --
+ +
+-Dracut uses this method of live booting by default.  No additional command line
+-options are required other than **root=live:<URL>** to specify the location
+-of your squashed filesystem.
++For OverlayFS mount overlays, the filesystem structure may also be a direct
++compression of the root filesystem:
+++
++[listing]
++--
++squashfs.img          |  SquashFS from LiveCD .iso
++   !(mount)
++   /bin               |  Live filesystem
++   /boot              |
++   /dev               |
++   ...                |
++--
+++
++Dracut uses one of the overlay methods of live booting by default.  No
++additional command line options are required other than **root=live:<URL>** to
++specify the location of your squashed filesystem.
+ +
+ - The compressed SquashFS image can be copied during boot to RAM at
+ `/run/initramfs/squashed.img` by using the **rd.live.ram=1** option.
+-- A device with a persistent overlay can be booted read only by using the
++- A device with a persistent overlay can be booted read-only by using the
+ **rd.live.overlay.readonly** option on the kernel command line.  This will
+-cause a temporary, writable overlay to be stacked over a read-only snapshot
+-of the root filesystem.
++either cause a temporary, writable overlay to be stacked over a read-only
++snapshot of the root filesystem or the OverlayFS mount will use an additional
++lower layer with the root filesystem.
+ +
+ Uncompressed live filesystem image:::
+ When the live system was installed with the '--skipcompress' option of the
+ __livecd-iso-to-disk__ installation script for Live USB devices, the root
+-filesystem image, `rootfs.img`, is expanded on installation and no SquashFS
++filesystem image, __rootfs.img__, is expanded on installation and no SquashFS
+ is involved during boot.
+ +
+ - If **rd.live.ram=1** is used in this situation, the full, uncompressed
+@@ -887,12 +902,12 @@ root filesystem is copied during boot to `/run/initramfs/rootfs.img` in the
+ `/run` tmpfs.
+ +
+ - If **rd.live.overlay=none** is provided as a kernel command line option,
+-a writable, linear device-mapper target is created on boot with no overlay.
++a writable, linear Device-mapper target is created on boot with no overlay.
+ 
+-writable filesystem image:::
++Writable filesystem image:::
+ The system will retrieve a compressed filesystem image, extract it to
+ `/run/initramfs/fsimg/rootfs.img`, connect it to a loop device, create a
+-writable, linear device-mapper target at `/dev/mapper/live-rw`, and mount that
++writable, linear Device-mapper target at `/dev/mapper/live-rw`, and mount that
+ as a writable volume at `/`.  More RAM is required during boot but the live
+ filesystem is easier to manage if it becomes full.  Users can make a filesystem
+ image of any size and that size will be maintained when the system boots. There
+@@ -902,7 +917,7 @@ The filesystem structure is expected to be:
+ +
+ [listing]
+ --
+-rootfs.tgz            |  Compressed tarball containing fileystem image
++rootfs.tgz            |  Compressed tarball containing filesystem image
+    !(unpack)
+    /rootfs.img        |  Filesystem image at /run/initramfs/fsimg/
+       !(mount)
+@@ -930,11 +945,11 @@ NOTE: There must be enough free RAM available to hold the complete image.
+ This method is very suitable for diskless boots.
+ 
+ **root=**live:__<url>__::
+-Boots a live image retrieved from __<url>__.  Requires dracut 'livenet' module.
+-Valid handlers: __http, https, ftp, torrent, tftp__.
++Boots a live image retrieved from __<url>__.  Requires the dracut 'livenet'
++module.  Valid handlers: __http, https, ftp, torrent, tftp__.
+ +
+ [listing]
+-.Example
++.Examples
+ --
+ root=live:http://example.com/liveboot.img
+ root=live:ftp://ftp.example.com/liveboot.img
+@@ -946,7 +961,7 @@ Enables debug output from the live boot process.
+ 
+ **rd.live.dir=**__<path>__::
+ Specifies the directory within the boot device where the squashfs.img or
+-rootfs.img can be found.  By default, this is __LiveOS__.
++rootfs.img can be found.  By default, this is `/LiveOS`.
+ 
+ **rd.live.squashimg=**__<filename of SquashFS image>__::
+ Specifies the filename for a SquashFS image of the root filesystem.
+@@ -954,35 +969,52 @@ By default, this is __squashfs.img__.
+ 
+ **rd.live.ram=**1::
+ Copy the complete image to RAM and use this for booting. This is useful
+-when the image resides on, i.e., a DVD which needs to be ejected later on.
++when the image resides on, e.g., a DVD which needs to be ejected later on.
+ 
+ **rd.live.overlay={**__<devspec>__[:__{<pathspec>|auto}__]|__none__}::
+-Allow the usage of a permanent overlay.
+-- _<devspec>_ specifies the path to a device with a mountable filesystem.
+-- _<pathspec>_ is the path to a file within that filesystem, which shall be
++Manage the usage of a permanent overlay.
+++
++--
++* _<devspec>_ specifies the path to a device with a mountable filesystem.
++* _<pathspec>_ is the path to a file within that filesystem, which shall be
+ used to persist the changes made to the device specified by the
+ **root=live:__<url>__** option.
+-- _none_ specifies no overlay when an uncompressed live root filesystem is
+-available.
+-If a persistent overlay is detected at the standard LiveOS path, the overlay &
+-overlay type detected (whether Device-mapper or OverlayFS) will be used.
+++
++The default _pathspec_, when _auto_ or no _:<pathspec>_ is given, is
++`/<+++<b>rd.live.dir</b>+++>/overlay-<label>-<uuid>`, where _<label>_ is the
++device LABEL, and _<uuid>_ is the device UUID.
++* _none_ (the word itself) specifies that no overlay will be used, such as when
++an uncompressed, writable live root filesystem is available.
+++
++If a persistent overlay __is detected__ at the standard LiveOS path, the
++overlay & overlay type detected, whether Device-mapper or OverlayFS, will be
++used.
++--
+ +
+ [listing]
+-.Example
++.Examples
+ --
+ rd.live.overlay=/dev/sdb1:persistent-overlay.img
++rd.live.overlay=UUID=99440c1f-8daa-41bf-b965-b7240a8996f4
+ --
+ 
+ **rd.live.overlay.size=**__<size_MiB>__::
+-Specifies a non-persistent overlay size in MiB.  The default is _32768_.
++Specifies a non-persistent Device-mapper overlay size in MiB.  The default is
++_32768_.
+ 
+ **rd.live.overlay.readonly=**1::
+-Specifies a non-persistent, writable snapshot overlay to be stacked over a
+-read-only snapshot of the root filesystem, `/dev/mapper/live-ro`, or a read-
+-only loop device of a writable `rootfs.img`.
++This is used to boot with a normally read-write persistent overlay in a
++read-only mode.  With this option, either an additional, non-persistent,
++writable snapshot overlay will be stacked over a read-only snapshot,
++`/dev/mapper/live‑ro`, of the base filesystem with the persistent overlay, or a
++read-only loop device, in the case of a writable __rootfs.img__, or an OverlayFS
++mount will use the persistent overlay directory linked at `/run/overlayfs‑r` as
++an additional lower layer along with the base root filesystem and apply a
++transient, writable upper directory overlay, in order to complete the booted
++root filesystem.
+ 
+ **rd.live.overlay.reset=**1::
+-Specifies that a persistent overlay should be reset on boot.  All root
++Specifies that a persistent overlay should be reset on boot.  All previous root
+ filesystem changes are vacated by this action.
+ 
+ **rd.live.overlay.thin=**1::
+@@ -993,25 +1025,25 @@ that memory is given back to the kernel when the filesystem does not claim it
+ anymore.
+ 
+ **rd.live.overlay.overlayfs=**1::
+-Enables the use of the **OverlayFS** kernel module, if available, to provide a
++Enables the use of the *OverlayFS* kernel module, if available, to provide a
+ copy-on-write union directory for the root filesystem.  OverlayFS overlays are
+ directories of the files that have changed on the read-only base (lower)
+ filesystem.  The root filesystem is provided through a special overlay type
+ mount that merges the lower and upper directories.  If an OverlayFS upper
+ directory is not present on the boot device, a tmpfs directory will be created
+-at /run/overlayfs to provide temporary storage.  Persistent storage can be
++at `/run/overlayfs` to provide temporary storage.  Persistent storage can be
+ provided on vfat or msdos formatted devices by supplying the OverlayFS upper
+ directory within an embedded filesystem that supports the creation of trusted.*
+ extended attributes and provides a valid d_type in readdir responses, such as
+ with ext4 and xfs.  On non-vfat-formatted devices, a persistent OverlayFS
+ overlay can extend the available root filesystem storage up to the capacity of
+-the LiveOS device.
++the LiveOS disk device.
+ +
+ If a persistent overlay is detected at the standard LiveOS path, the overlay &
+-overlay type detected (whether OverlayFS or Device-mapper) will be used.
++overlay type detected, whether OverlayFS or Device-mapper, will be used.
+ +
+ The **rd.live.overlay.readonly** option, which allows a persistent overlayfs to
+-be mounted read only through a higher level transient overlay directory, has
++be mounted read-only through a higher level transient overlay directory, has
+ been implemented through the multiple lower layers feature of OverlayFS.
+ 
+ 
+diff --git a/modules.d/90dmsquash-live/dmsquash-live-root.sh b/modules.d/90dmsquash-live/dmsquash-live-root.sh
+index ac603408..0c5e010e 100755
+--- a/modules.d/90dmsquash-live/dmsquash-live-root.sh
++++ b/modules.d/90dmsquash-live/dmsquash-live-root.sh
+@@ -250,13 +250,11 @@ do_live_overlay() {
+         echo 0 $sz snapshot $base $over PO 8 | dmsetup create live-rw
+     fi
+ 
+-    # Create a device that always points to a ro base image
+-    if [ -n "$overlayfs" ]; then
+-        BASE_LOOPDUP=$(losetup -f --show -r $BASE_LOOPDEV)
+-        echo 0 $sz linear $BASE_LOOPDUP 0 | dmsetup create --readonly live-base
+-    else
++    # Create a device for the ro base of overlayed file systems.
++    if [ -z "$overlayfs" ]; then
+         echo 0 $sz linear $BASE_LOOPDEV 0 | dmsetup create --readonly live-base
+     fi
++    ln -s $BASE_LOOPDEV /dev/live-base
+ }
+ 
+ # we might have a genMinInstDelta delta file for anaconda to take advantage of
+@@ -291,10 +289,21 @@ if [ -e "$SQUASHED" ]; then
+     mkdir -m 0755 -p /run/initramfs/squashfs
+     mount -n -t squashfs -o ro $SQUASHED_LOOPDEV /run/initramfs/squashfs
+ 
+-    if [ -f /run/initramfs/squashfs/LiveOS/rootfs.img ]; then
+-        FSIMG="/run/initramfs/squashfs/LiveOS/rootfs.img"
+-    elif [ -f /run/initramfs/squashfs/LiveOS/ext3fs.img ]; then
+-        FSIMG="/run/initramfs/squashfs/LiveOS/ext3fs.img"
++    if [ -d /run/initramfs/squashfs/LiveOS ]; then
++        if [ -f /run/initramfs/squashfs/LiveOS/rootfs.img ]; then
++            FSIMG="/run/initramfs/squashfs/LiveOS/rootfs.img"
++        elif [ -f /run/initramfs/squashfs/LiveOS/ext3fs.img ]; then
++            FSIMG="/run/initramfs/squashfs/LiveOS/ext3fs.img"
++        fi
++    elif [ -d /run/initramfs/squashfs/proc ]; then
++        FSIMG=$SQUASHED
++        if [ -z "$overlayfs" ]; then
++            overlayfs="yes"
++            [ -n "$DRACUT_SYSTEMD" ] && reloadsysrootmountunit="yes"
++        fi
++    else
++        die "Failed to find a root filesystem in $SQUASHED."
++        exit 1
+     fi
+ else
+     # we might have an embedded fs image to use as rootfs (uncompressed live)
+@@ -312,8 +321,8 @@ else
+     fi
+ fi
+ 
+-if [ -n "$FSIMG" ] ; then
+-    if [ -n "$writable_fsimg" ] ; then
++if [ -n "$FSIMG" ]; then
++    if [ -n "$writable_fsimg" ]; then
+         # mount the provided filesystem read/write
+         echo "Unpacking live filesystem (may take some time)" > /dev/kmsg
+         mkdir -m 0755 /run/initramfs/fsimg/
+@@ -336,9 +345,13 @@ if [ -n "$FSIMG" ] ; then
+             setup=yes
+         fi
+     fi
+-    BASE_LOOPDEV=$(losetup -f --show $opt $FSIMG)
+-    sz=$(blockdev --getsz $BASE_LOOPDEV)
+-    if [ "$setup" == rw ]; then
++    if [ "$FSIMG" = "$SQUASHED" ]; then
++        BASE_LOOPDEV=$SQUASHED_LOOPDEV
++    else
++        BASE_LOOPDEV=$(losetup -f --show $opt $FSIMG)
++        sz=$(blockdev --getsz $BASE_LOOPDEV)
++    fi
++    if [ "$setup" = rw ]; then
+         echo 0 $sz linear $BASE_LOOPDEV 0 | dmsetup create live-rw
+     else
+         # Add a DM snapshot or OverlayFS for writes.
+@@ -346,8 +359,6 @@ if [ -n "$FSIMG" ] ; then
+     fi
+ fi
+ 
+-[ -e "$SQUASHED" ] && [ -z "$overlayfs" ] && umount -l /run/initramfs/squashfs
+-
+ if [ -b "$OSMIN_LOOPDEV" ]; then
+     # set up the devicemapper snapshot device, which will merge
+     # the normal live fs image, and the delta, into a minimzied fs image
+@@ -380,17 +391,17 @@ if [ -n "$overlayfs" ]; then
+         'lowerdir=/run/rootfsbase,upperdir=/run/overlayfs,workdir=/run/ovlwork' \
+         "$NEWROOT" > $hookdir/mount/01-$$-live.sh
+     fi
+-    _dev=/run/rootfsbase
+ else
+-    _dev=/dev/mapper/live-rw
+     if [ -z "$DRACUT_SYSTEMD" ]; then
+         [ -n "$ROOTFLAGS" ] && ROOTFLAGS="-o $ROOTFLAGS"
+         printf 'mount %s /dev/mapper/live-rw %s\n' "$ROOTFLAGS" "$NEWROOT" > $hookdir/mount/01-$$-live.sh
+     fi
+-    ln -s $BASE_LOOPDEV /run/rootfsbase
+ fi
+-ln -s $_dev /dev/root
++[ -e "$SQUASHED" ] && umount -l /run/initramfs/squashfs
++
++ln -s null /dev/root
+ 
+ need_shutdown
+ 
+ exit 0
++
+
diff --git a/0077.patch b/0077.patch
new file mode 100644
index 0000000..dd46af6
--- /dev/null
+++ b/0077.patch
@@ -0,0 +1,193 @@
+From eb18a1fe29a3ffcd646fe6d25ae2d7d998b63e71 Mon Sep 17 00:00:00 2001
+From: Frederick Grose <fgrose@sugarlabs.org>
+Date: Mon, 20 Aug 2018 19:52:53 -0400
+Subject: [PATCH] dmsquash-live, livenet: Simplify OverlayFS read-only overlay
+ setup.
+
+Use multiple lower layer directories in a single OverlayFS mount with
+  a transient overlay directory.
+Tolerate a command line with rd.live.overlay.readonly and NO persistent
+  overlay by reconfiguring the OverlayFS mount options.
+Use more compatible shell syntax for testing symlinks, and use printf
+  instead of echo -e.
+---
+ modules.d/90dmsquash-live/dmsquash-generator.sh |  9 ++++++-
+ modules.d/90dmsquash-live/dmsquash-live-root.sh | 34 ++++++++++++++-----------
+ modules.d/90livenet/livenet-generator.sh        |  9 ++++++-
+ 3 files changed, 35 insertions(+), 17 deletions(-)
+
+diff --git a/modules.d/90dmsquash-live/dmsquash-generator.sh b/modules.d/90dmsquash-live/dmsquash-generator.sh
+index fe190012..1129ddff 100755
+--- a/modules.d/90dmsquash-live/dmsquash-generator.sh
++++ b/modules.d/90dmsquash-live/dmsquash-generator.sh
+@@ -54,8 +54,10 @@ GENERATOR_DIR="$2"
+ [ -z "$GENERATOR_DIR" ] && exit 1
+ [ -d "$GENERATOR_DIR" ] || mkdir "$GENERATOR_DIR"
+ 
++getargbool 0 rd.live.overlay.readonly -d -y readonly_overlay && readonly_overlay="--readonly" || readonly_overlay=""
+ getargbool 0 rd.live.overlay.overlayfs && overlayfs="yes"
+ [ -e /xor_overlayfs ] && xor_overlayfs="yes"
++[ -e /xor_readonly ] && xor_readonly="--readonly"
+ ROOTFLAGS="$(getarg rootflags)"
+ {
+     echo "[Unit]"
+@@ -64,7 +66,12 @@ ROOTFLAGS="$(getarg rootflags)"
+     echo "Where=/sysroot"
+     if [ "$overlayfs$xor_overlayfs" = "yes" ]; then
+         echo "What=LiveOS_rootfs"
+-        echo "Options=${ROOTFLAGS},lowerdir=/run/rootfsbase,upperdir=/run/overlayfs,workdir=/run/ovlwork"
++        if [ "$readonly_overlay$xor_readonly" = "--readonly" ]; then
++            ovlfs=lowerdir=/run/overlayfs-r:/run/rootfsbase
++        else
++            ovlfs=lowerdir=/run/rootfsbase
++        fi
++        echo "Options=${ROOTFLAGS},${ovlfs},upperdir=/run/overlayfs,workdir=/run/ovlwork"
+         echo "Type=overlay"
+         _dev=LiveOS_rootfs
+     else
+diff --git a/modules.d/90dmsquash-live/dmsquash-live-root.sh b/modules.d/90dmsquash-live/dmsquash-live-root.sh
+index 0c5e010e..0f3d8f89 100755
+--- a/modules.d/90dmsquash-live/dmsquash-live-root.sh
++++ b/modules.d/90dmsquash-live/dmsquash-live-root.sh
+@@ -137,7 +137,7 @@ do_live_overlay() {
+                 fi
+                 if [ -n "$overlayfs" ]; then
+                     unset -v overlayfs
+-                    [ -n "$DRACUT_SYSTEMD" ] && reloadsysrootmountunit="yes"
++                    [ -n "$DRACUT_SYSTEMD" ] && reloadsysrootmountunit=":>/xor_overlayfs;"
+                 fi
+                 setup="yes"
+             else
+@@ -148,7 +148,7 @@ do_live_overlay() {
+                     ln -s /run/initramfs/overlayfs/ovlwork /run/ovlwork$opt
+                     if [ -z "$overlayfs" ]; then
+                         overlayfs="yes"
+-                        [ -n "$DRACUT_SYSTEMD" ] && reloadsysrootmountunit="yes"
++                        [ -n "$DRACUT_SYSTEMD" ] && reloadsysrootmountunit=":>/xor_overlayfs;"
+                     fi
+                     setup="yes"
+                 fi
+@@ -159,7 +159,7 @@ do_live_overlay() {
+             ln -s /run/initramfs/overlayfs$pathspec/../ovlwork /run/ovlwork$opt
+             if [ -z "$overlayfs" ]; then
+                 overlayfs="yes"
+-                [ -n "$DRACUT_SYSTEMD" ] && reloadsysrootmountunit="yes"
++                [ -n "$DRACUT_SYSTEMD" ] && reloadsysrootmountunit=":>/xor_overlayfs;"
+             fi
+             setup="yes"
+         fi
+@@ -168,8 +168,7 @@ do_live_overlay() {
+         modprobe overlay
+         if [ $? != 0 ]; then
+             m='OverlayFS is not available; using temporary Device-mapper overlay.'
+-            unset -v overlayfs setup
+-            [ -n "$reloadsysrootmountunit" ] && unset -v reloadsysrootmountunit
++            unset -v overlayfs setup reloadsysrootmountunit
+         fi
+     fi
+ 
+@@ -181,7 +180,7 @@ do_live_overlay() {
+                 m='   Unable to find a persistent overlay; using a temporary one.'
+             m="$m"$'\n      All root filesystem changes will be lost on shutdown.'
+             m="$m"$'\n         Press [Enter] to continue.'
+-            echo -e "\n\n\n\n${m}\n\n\n" > /dev/kmsg
++            printf "\n\n\n\n${m}\n\n\n" > /dev/kmsg
+             if [ -n "$DRACUT_SYSTEMD" ]; then
+                 if type plymouth >/dev/null 2>&1 && plymouth --ping ; then
+                     if getargbool 0 rhgb || getargbool 0 splash ; then
+@@ -203,6 +202,11 @@ do_live_overlay() {
+         if [ -n "$overlayfs" ]; then
+             mkdir -m 0755 /run/overlayfs
+             mkdir -m 0755 /run/ovlwork
++            if [ -n "$readonly_overlay" ] && ! [ -h /run/overlayfs-r ]; then
++                info "No persistent overlay found."
++                unset -v readonly_overlay
++                [ -n "$DRACUT_SYSTEMD" ] && reloadsysrootmountunit="${reloadsysrootmountunit}:>/xor_readonly;"
++            fi
+         else
+             dd if=/dev/null of=/overlay bs=1024 count=1 seek=$((overlay_size*1024)) 2> /dev/null
+             if [ -n "$setup" -a -n "$readonly_overlay" ]; then
+@@ -256,6 +260,7 @@ do_live_overlay() {
+     fi
+     ln -s $BASE_LOOPDEV /dev/live-base
+ }
++# end do_live_overlay()
+ 
+ # we might have a genMinInstDelta delta file for anaconda to take advantage of
+ if [ -e /run/initramfs/live/${live_dir}/osmin.img ]; then
+@@ -299,7 +304,7 @@ if [ -e "$SQUASHED" ]; then
+         FSIMG=$SQUASHED
+         if [ -z "$overlayfs" ]; then
+             overlayfs="yes"
+-            [ -n "$DRACUT_SYSTEMD" ] && reloadsysrootmountunit="yes"
++            [ -n "$DRACUT_SYSTEMD" ] && reloadsysrootmountunit=":>/xor_overlayfs;"
+         fi
+     else
+         die "Failed to find a root filesystem in $SQUASHED."
+@@ -366,7 +371,7 @@ if [ -b "$OSMIN_LOOPDEV" ]; then
+ fi
+ 
+ if [ -n "$reloadsysrootmountunit" ]; then
+-    > /xor_overlayfs
++    eval "$reloadsysrootmountunit"
+     systemctl daemon-reload
+ fi
+ 
+@@ -374,21 +379,20 @@ ROOTFLAGS="$(getarg rootflags)"
+ 
+ if [ -n "$overlayfs" ]; then
+     mkdir -m 0755 /run/rootfsbase
+-    if [ -n "$reset_overlay" ] && [ -L /run/overlayfs ]; then
++    if [ -n "$reset_overlay" ] && [ -h /run/overlayfs ]; then
+         ovlfs=$(readlink /run/overlayfs)
+         info "Resetting the OverlayFS overlay directory."
+         rm -r -- ${ovlfs}/* ${ovlfs}/.* >/dev/null 2>&1
+     fi
+-    if [ -n "$readonly_overlay" ]; then
+-        mkdir -m 0755 /run/rootfsbase-r
+-        mount -r $FSIMG /run/rootfsbase-r
+-        mount -t overlay LiveOS_rootfs-r -oro,lowerdir=/run/overlayfs-r:/run/rootfsbase-r /run/rootfsbase
++    if [ -n "$readonly_overlay" ] && [ -h /run/overlayfs-r ]; then
++        ovlfs=lowerdir=/run/overlayfs-r:/run/rootfsbase
+     else
+-        mount -r $FSIMG /run/rootfsbase
++        ovlfs=lowerdir=/run/rootfsbase
+     fi
++    mount -r $FSIMG /run/rootfsbase
+     if [ -z "$DRACUT_SYSTEMD" ]; then
+         printf 'mount -t overlay LiveOS_rootfs -o%s,%s %s\n' "$ROOTFLAGS" \
+-        'lowerdir=/run/rootfsbase,upperdir=/run/overlayfs,workdir=/run/ovlwork' \
++        "$ovlfs",upperdir=/run/overlayfs,workdir=/run/ovlwork \
+         "$NEWROOT" > $hookdir/mount/01-$$-live.sh
+     fi
+ else
+diff --git a/modules.d/90livenet/livenet-generator.sh b/modules.d/90livenet/livenet-generator.sh
+index e2b5b6eb..f0d12851 100755
+--- a/modules.d/90livenet/livenet-generator.sh
++++ b/modules.d/90livenet/livenet-generator.sh
+@@ -43,8 +43,10 @@ GENERATOR_DIR="$2"
+ 
+ [ -d "$GENERATOR_DIR" ] || mkdir "$GENERATOR_DIR"
+ 
++getargbool 0 rd.live.overlay.readonly -d -y readonly_overlay && readonly_overlay="--readonly" || readonly_overlay=""
+ getargbool 0 rd.live.overlay.overlayfs && overlayfs="yes"
+ [ -e /xor_overlayfs ] && xor_overlayfs="yes"
++[ -e /xor_readonly ] && xor_readonly="--readonly"
+ ROOTFLAGS="$(getarg rootflags)"
+ {
+     echo "[Unit]"
+@@ -53,7 +55,12 @@ ROOTFLAGS="$(getarg rootflags)"
+     echo "Where=/sysroot"
+     if [ "$overlayfs$xor_overlayfs" = "yes" ]; then
+         echo "What=LiveOS_rootfs"
+-        echo "Options=${ROOTFLAGS},lowerdir=/run/rootfsbase,upperdir=/run/overlayfs,workdir=/run/ovlwork"
++        if [ "$readonly_overlay$xor_readonly" = "--readonly" ]; then
++            ovlfs=lowerdir=/run/overlayfs-r:/run/rootfsbase
++        else
++            ovlfs=lowerdir=/run/rootfsbase
++        fi
++        echo "Options=${ROOTFLAGS},${ovlfs},upperdir=/run/overlayfs,workdir=/run/ovlwork"
+         echo "Type=overlay"
+         _dev=LiveOS_rootfs
+     else
+
diff --git a/0078.patch b/0078.patch
new file mode 100644
index 0000000..5fd699f
--- /dev/null
+++ b/0078.patch
@@ -0,0 +1,29 @@
+From 9f3c31cd8d68b5272f803063247362a644720227 Mon Sep 17 00:00:00 2001
+From: Kairui Song <kasong@redhat.com>
+Date: Mon, 20 Aug 2018 18:43:19 +0800
+Subject: [PATCH] 99base: enable initqueue if extra devices are added
+
+When extra devices are added, initqueue should be enabled to make sure
+those devices are present, so following services and routines could
+use those devices.
+
+See PR #442 for more detail.
+---
+ modules.d/99base/module-setup.sh | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/modules.d/99base/module-setup.sh b/modules.d/99base/module-setup.sh
+index a1569b12..731c6dcc 100755
+--- a/modules.d/99base/module-setup.sh
++++ b/modules.d/99base/module-setup.sh
+@@ -94,6 +94,9 @@ install() {
+ 
+     ## save host_devs which we need bring up
+     if [[ $hostonly_cmdline == "yes" ]]; then
++        if [[ -n $add_device ]]; then
++            dracut_need_initqueue
++        fi
+         if [[ -f "$initdir/lib/dracut/need-initqueue" ]] || ! dracut_module_included "systemd"; then
+             (
+                 if dracut_module_included "systemd"; then
+
diff --git a/0079.patch b/0079.patch
new file mode 100644
index 0000000..80384b5
--- /dev/null
+++ b/0079.patch
@@ -0,0 +1,24 @@
+From 09ba1b289f2cba613c1950b03f0f549ebb7eb83f Mon Sep 17 00:00:00 2001
+From: Kairui Song <kasong@redhat.com>
+Date: Mon, 20 Aug 2018 18:40:05 +0800
+Subject: [PATCH] kernel-modules: add nfit
+
+To support pmem devices, nfit module is required
+---
+ modules.d/90kernel-modules/module-setup.sh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/modules.d/90kernel-modules/module-setup.sh b/modules.d/90kernel-modules/module-setup.sh
+index f01470e7..3dfceff0 100755
+--- a/modules.d/90kernel-modules/module-setup.sh
++++ b/modules.d/90kernel-modules/module-setup.sh
+@@ -41,7 +41,7 @@ installkernel() {
+             yenta_socket scsi_dh_rdac scsi_dh_emc scsi_dh_alua \
+             atkbd i8042 usbhid firewire-ohci pcmcia hv-vmbus \
+             virtio virtio_blk virtio_ring virtio_pci virtio_scsi \
+-            "=drivers/pcmcia" =ide nvme vmd
++            "=drivers/pcmcia" =ide nvme vmd nfit
+ 
+         if [[ "$(uname -m)" == arm* || "$(uname -m)" == aarch64 ]]; then
+             # arm/aarch64 specific modules
+
diff --git a/0080.patch b/0080.patch
new file mode 100644
index 0000000..0ede47d
--- /dev/null
+++ b/0080.patch
@@ -0,0 +1,35 @@
+From ae9bc0d72ffea2c960c95d7b705b1b76ae53d692 Mon Sep 17 00:00:00 2001
+From: Tony Asleson <tasleson@redhat.com>
+Date: Thu, 23 Aug 2018 15:08:59 -0500
+Subject: [PATCH] stratis: Add additional binaries
+
+Include all binaries that could be called by the daemon.
+
+Signed-off-by: Tony Asleson <tasleson@redhat.com>
+---
+ modules.d/90stratis/module-setup.sh | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/modules.d/90stratis/module-setup.sh b/modules.d/90stratis/module-setup.sh
+index 2787b63b..29f0765b 100755
+--- a/modules.d/90stratis/module-setup.sh
++++ b/modules.d/90stratis/module-setup.sh
+@@ -2,7 +2,7 @@
+ 
+ # called by dracut
+ check() {
+-    require_binaries stratisd-init thin_check thin_repair || return 1
++    require_binaries stratisd-init thin_check thin_repair mkfs.xfs xfs_admin xfs_growfs || return 1
+     return 255
+ }
+ 
+@@ -20,7 +20,7 @@ installkernel() {
+ # called by dracut
+ install() {
+ 
+-    inst_multiple stratisd-init thin_check thin_repair
++    inst_multiple stratisd-init thin_check thin_repair mkfs.xfs xfs_admin xfs_growfs
+ 
+     if dracut_module_included "systemd"; then
+         inst_simple "${moddir}/stratisd-init.service" "${systemdsystemunitdir}/stratisd-init.service"
+
diff --git a/0081.patch b/0081.patch
new file mode 100644
index 0000000..d64429d
--- /dev/null
+++ b/0081.patch
@@ -0,0 +1,106 @@
+From d09218823c787d23b3fdc3e450bb27b20f71f089 Mon Sep 17 00:00:00 2001
+From: Tobias Klauser <tklauser@distanz.ch>
+Date: Wed, 29 Aug 2018 11:53:14 +0200
+Subject: [PATCH] Fix misspellings in man pages and usage
+
+Also remove some trailing whitespaces from the same files.
+
+Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
+---
+ dracut.cmdline.7.asc | 2 +-
+ dracut.modules.7.asc | 6 +++---
+ dracut.usage.asc     | 4 ++--
+ mkinitrd-suse.8.asc  | 6 +++---
+ 4 files changed, 9 insertions(+), 9 deletions(-)
+
+diff --git a/dracut.cmdline.7.asc b/dracut.cmdline.7.asc
+index 882035af..3cee5a00 100644
+--- a/dracut.cmdline.7.asc
++++ b/dracut.cmdline.7.asc
+@@ -601,7 +601,7 @@ NFS
+     mount nfs share from <server-ip>:/<root-dir>, if no server-ip is given, use
+     dhcp next_server. If server-ip is an IPv6 address it has to be put in
+     brackets, e.g. [2001:DB8::1]. NFS options can be appended with the prefix
+-    ":" or "," and are seperated by ",".
++    ":" or "," and are separated by ",".
+ 
+ **root=**nfs:\[_<server-ip>_:]__<root-dir>__[:__<nfs-options>__], **root=**nfs4:\[_<server-ip>_:]__<root-dir>__[:__<nfs-options>__], **root=**__{dhcp|dhcp6}__::
+     root=dhcp alone directs initrd to look at the DHCP root-path where NFS
+diff --git a/dracut.modules.7.asc b/dracut.modules.7.asc
+index 69ac6c44..c34d005d 100644
+--- a/dracut.modules.7.asc
++++ b/dracut.modules.7.asc
+@@ -212,7 +212,7 @@ check() should return with:
+ 
+ 0:: Include the dracut module in the initramfs.
+ 
+-1:: Do not include the dracut module. The requirements are not fullfilled
++1:: Do not include the dracut module. The requirements are not fulfilled
+ (missing tools, etc.)
+ 
+ 255:: Only include the dracut module, if another module requires it or if
+@@ -255,8 +255,8 @@ not lead to an error.
+ ==== inst <src> [<dst>]
+ 
+ installs _one_ file <src> either to the same place in the initramfs or to an
+-optional <dst>. inst with more than two arguments is treated the same as 
+-inst_multiple, all arguments are treated as files to install and none as 
++optional <dst>. inst with more than two arguments is treated the same as
++inst_multiple, all arguments are treated as files to install and none as
+ install destinations.
+ 
+ ==== inst_hook <hookdir> <prio> <src>
+diff --git a/dracut.usage.asc b/dracut.usage.asc
+index 2b25588f..2b598ee6 100644
+--- a/dracut.usage.asc
++++ b/dracut.usage.asc
+@@ -243,7 +243,7 @@ If your root partition is on a network drive, you have to have the network
+ dracut modules installed to create a network aware initramfs image.
+ 
+ If you specify ip=dhcp on the kernel command line, then dracut asks a dhcp
+-server about the ip adress for the machine. The dhcp server can also serve an
++server about the ip address for the machine. The dhcp server can also serve an
+ additional root-path, which will set the root device for dracut. With this
+ mechanism, you have static configuration on your client machine and a
+ centralized boot configuration on your TFTP/DHCP server. If you can't pass a
+@@ -252,7 +252,7 @@ method described in <<Injecting>>.
+ 
+ ==== Reducing the Image Size
+ 
+-To reduce the size of the initramfs, you should create it with by ommitting all
++To reduce the size of the initramfs, you should create it with by omitting all
+ dracut modules, which you know, you don't need to boot the machine.
+ 
+ You can also specify the exact dracut and kernel modules to produce a very tiny
+diff --git a/mkinitrd-suse.8.asc b/mkinitrd-suse.8.asc
+index 91ec4695..e39ac52b 100644
+--- a/mkinitrd-suse.8.asc
++++ b/mkinitrd-suse.8.asc
+@@ -18,7 +18,7 @@ DESCRIPTION
+ version <kernel-version> by calling *dracut*.
+ 
+ [IMPORTANT]
+-This version of mkinitrd is provided for compability with older
++This version of mkinitrd is provided for compatibility with older
+ versions of mkinitrd. If a more fine grained control over the
+ resulting image is needed, *dracut* should be called directly.
+ 
+@@ -30,7 +30,7 @@ OPTIONS
+ **-k** _<kernel_list>_::
+     List of kernel images for which initrd files are created (relative
+     to _boot_dir_), Image name should begin with the following string,
+-    defaults to _vmlinux_ on ppc/ppc64, _image_ on s390/s390x and _vmlinuz_ 
++    defaults to _vmlinux_ on ppc/ppc64, _image_ on s390/s390x and _vmlinuz_
+     for everything else.
+ 
+ **-i** _<initrd_list>_::
+@@ -51,7 +51,7 @@ OPTIONS
+ 
+ **-d** _<root_device>_::
+     Root device, defaults to the device from which the root_dir is
+-    mounted; overwrites the rootdev enviroment variable if set
++    mounted; overwrites the rootdev environment variable if set
+ 
+ **-s** _<size>_::
+     Add splash animation and bootscreen to initrd.
+
diff --git a/0082.patch b/0082.patch
new file mode 100644
index 0000000..149f2e5
--- /dev/null
+++ b/0082.patch
@@ -0,0 +1,46 @@
+From e9a84e0a215fb5a79e563f665bc406c0ea177d32 Mon Sep 17 00:00:00 2001
+From: Daniel Molkentin <dmolkentin@suse.com>
+Date: Wed, 5 Sep 2018 12:06:06 +0200
+Subject: [PATCH] 98dracut-systemd: Start systemd-vconsole-setup before
+ dracut-cmdline-ask
+
+This is what happened before this patch (edited for brevity):
+
+  dracut-cmdline-ask.service in modules.d/98dracut-systemd, which invokes
+  dracut-cmdline-ask.sh. This script and systemd-vconsole-setup are
+  started in parallel for the same console (tty1).
+
+  Then dracut-cmdline-ask quits immediately without doing anything (unless
+  rd.cmdline=ask is given). As this is a bash script and it gets tty as
+  stdin as specified in its *.service, this triggers the hangup of tty1 at
+  its exit.
+
+  Meanwhile systemd-vconsole-setup continues and tries some ioctls after
+  that, but they fail because of the hung up tty1.
+
+The usual culprit for starting systemd-vconsole-setup early on is
+plymouth-start.service, even if plymouth.enable=0 is set.
+
+A popular (and annoying) symptom of this as reported by users was
+the inability use their configured keyboard layout in plymouth when
+unlocking their crypted block devices.
+
+Reference: boo#1055834
+---
+ modules.d/98dracut-systemd/dracut-cmdline-ask.service | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/modules.d/98dracut-systemd/dracut-cmdline-ask.service b/modules.d/98dracut-systemd/dracut-cmdline-ask.service
+index ce7deda5..b96c2aaf 100644
+--- a/modules.d/98dracut-systemd/dracut-cmdline-ask.service
++++ b/modules.d/98dracut-systemd/dracut-cmdline-ask.service
+@@ -7,6 +7,8 @@ Description=dracut ask for additional cmdline parameters
+ DefaultDependencies=no
+ Before=dracut-cmdline.service
+ After=systemd-journald.socket
++After=systemd-vconsole-setup.service
++Requires=systemd-vconsole-setup.service
+ Wants=systemd-journald.socket
+ ConditionPathExists=/usr/lib/initrd-release
+ ConditionKernelCommandLine=|rd.cmdline=ask
+
diff --git a/0083.patch b/0083.patch
new file mode 100644
index 0000000..100fbb5
--- /dev/null
+++ b/0083.patch
@@ -0,0 +1,88 @@
+From a7d8fc280c172ab023ce6170c33c323fb7c87adf Mon Sep 17 00:00:00 2001
+From: Frederick Grose <fgrose@sugarlabs.org>
+Date: Mon, 3 Sep 2018 17:01:53 -0400
+Subject: [PATCH] dmsquash-live: Avoid grep and sed in this module.
+
+strstr and variable string manipulations suffice.
+---
+ modules.d/90dmsquash-live/dmsquash-generator.sh  | 4 ++--
+ modules.d/90dmsquash-live/dmsquash-live-root.sh  | 6 +++---
+ modules.d/90dmsquash-live/module-setup.sh        | 2 +-
+ modules.d/90dmsquash-live/parse-dmsquash-live.sh | 4 ++--
+ 4 files changed, 8 insertions(+), 8 deletions(-)
+
+diff --git a/modules.d/90dmsquash-live/dmsquash-generator.sh b/modules.d/90dmsquash-live/dmsquash-generator.sh
+index 1129ddff..f57b1fc5 100755
+--- a/modules.d/90dmsquash-live/dmsquash-generator.sh
++++ b/modules.d/90dmsquash-live/dmsquash-generator.sh
+@@ -18,12 +18,12 @@ fi
+ case "$liveroot" in
+     live:LABEL=*|LABEL=*) \
+         root="${root#live:}"
+-        root="$(echo $root | sed 's,/,\\x2f,g')"
++        root="${root//\//\\x2f}"
+         root="live:/dev/disk/by-label/${root#LABEL=}"
+         rootok=1 ;;
+     live:CDLABEL=*|CDLABEL=*) \
+         root="${root#live:}"
+-        root="$(echo $root | sed 's,/,\\x2f,g')"
++        root="${root//\//\\x2f}"
+         root="live:/dev/disk/by-label/${root#CDLABEL=}"
+         rootok=1 ;;
+     live:UUID=*|UUID=*) \
+diff --git a/modules.d/90dmsquash-live/dmsquash-live-root.sh b/modules.d/90dmsquash-live/dmsquash-live-root.sh
+index 0f3d8f89..330ba3e9 100755
+--- a/modules.d/90dmsquash-live/dmsquash-live-root.sh
++++ b/modules.d/90dmsquash-live/dmsquash-live-root.sh
+@@ -109,15 +109,15 @@ do_live_overlay() {
+ 
+     if [ -z "$overlay" ]; then
+         pathspec="/${live_dir}/overlay-$l-$u"
+-    elif ( echo $overlay | grep -q ":" ); then
++    elif strstr $overlay ":"; then
+         # pathspec specified, extract
+-        pathspec=$( echo $overlay | sed -e 's/^.*://' )
++        pathspec=${overlay##*:}
+     fi
+ 
+     if [ -z "$pathspec" -o "$pathspec" = "auto" ]; then
+         pathspec="/${live_dir}/overlay-$l-$u"
+     fi
+-    devspec=$( echo $overlay | sed -e 's/:.*$//' )
++    devspec=${overlay%%:*}
+ 
+     # need to know where to look for the overlay
+     if [ -z "$setup" -a -n "$devspec" -a -n "$pathspec" -a -n "$overlay" ]; then
+diff --git a/modules.d/90dmsquash-live/module-setup.sh b/modules.d/90dmsquash-live/module-setup.sh
+index 48418a06..f251258f 100755
+--- a/modules.d/90dmsquash-live/module-setup.sh
++++ b/modules.d/90dmsquash-live/module-setup.sh
+@@ -22,7 +22,7 @@ installkernel() {
+ 
+ # called by dracut
+ install() {
+-    inst_multiple umount dmsetup blkid dd losetup grep blockdev find
++    inst_multiple umount dmsetup blkid dd losetup blockdev find
+     inst_multiple -o checkisomd5
+     inst_hook cmdline 30 "$moddir/parse-dmsquash-live.sh"
+     inst_hook cmdline 31 "$moddir/parse-iso-scan.sh"
+diff --git a/modules.d/90dmsquash-live/parse-dmsquash-live.sh b/modules.d/90dmsquash-live/parse-dmsquash-live.sh
+index 0eedf1f6..4d46a360 100755
+--- a/modules.d/90dmsquash-live/parse-dmsquash-live.sh
++++ b/modules.d/90dmsquash-live/parse-dmsquash-live.sh
+@@ -20,12 +20,12 @@ modprobe -q loop
+ case "$liveroot" in
+     live:LABEL=*|LABEL=*) \
+         root="${root#live:}"
+-        root="$(echo $root | sed 's,/,\\x2f,g')"
++        root="${root//\//\\x2f}"
+         root="live:/dev/disk/by-label/${root#LABEL=}"
+         rootok=1 ;;
+     live:CDLABEL=*|CDLABEL=*) \
+         root="${root#live:}"
+-        root="$(echo $root | sed 's,/,\\x2f,g')"
++        root="${root//\//\\x2f}"
+         root="live:/dev/disk/by-label/${root#CDLABEL=}"
+         rootok=1 ;;
+     live:UUID=*|UUID=*) \
+
diff --git a/0084.patch b/0084.patch
new file mode 100644
index 0000000..ef1ee87
--- /dev/null
+++ b/0084.patch
@@ -0,0 +1,72 @@
+From 44d1688164040f088fd66fb8a2d458e1f61836ce Mon Sep 17 00:00:00 2001
+From: Frederick Grose <fgrose@sugarlabs.org>
+Date: Mon, 3 Sep 2018 19:02:23 -0400
+Subject: [PATCH] dmsquash-live-root: Manage absent overlayfs module better.
+
+die when required; systemctl reload otherwise.
+---
+ modules.d/90dmsquash-live/dmsquash-live-root.sh | 26 +++++++++++++++----------
+ 1 file changed, 16 insertions(+), 10 deletions(-)
+
+diff --git a/modules.d/90dmsquash-live/dmsquash-live-root.sh b/modules.d/90dmsquash-live/dmsquash-live-root.sh
+index 330ba3e9..6324fe83 100755
+--- a/modules.d/90dmsquash-live/dmsquash-live-root.sh
++++ b/modules.d/90dmsquash-live/dmsquash-live-root.sh
+@@ -146,10 +146,10 @@ do_live_overlay() {
+                     [ -d /run/initramfs/overlayfs/ovlwork ]; then
+                     ln -s /run/initramfs/overlayfs/overlayfs /run/overlayfs$opt
+                     ln -s /run/initramfs/overlayfs/ovlwork /run/ovlwork$opt
+-                    if [ -z "$overlayfs" ]; then
+-                        overlayfs="yes"
+-                        [ -n "$DRACUT_SYSTEMD" ] && reloadsysrootmountunit=":>/xor_overlayfs;"
++                    if [ -z "$overlayfs" ] && [ -n "$DRACUT_SYSTEMD" ]; then
++                        reloadsysrootmountunit=":>/xor_overlayfs;"
+                     fi
++                    overlayfs="required"
+                     setup="yes"
+                 fi
+             fi
+@@ -157,18 +157,24 @@ do_live_overlay() {
+             [ -d /run/initramfs/overlayfs$pathspec/../ovlwork ]; then
+             ln -s /run/initramfs/overlayfs$pathspec /run/overlayfs$opt
+             ln -s /run/initramfs/overlayfs$pathspec/../ovlwork /run/ovlwork$opt
+-            if [ -z "$overlayfs" ]; then
+-                overlayfs="yes"
+-                [ -n "$DRACUT_SYSTEMD" ] && reloadsysrootmountunit=":>/xor_overlayfs;"
++            if [ -z "$overlayfs" ] && [ -n "$DRACUT_SYSTEMD" ]; then
++                reloadsysrootmountunit=":>/xor_overlayfs;"
+             fi
++            overlayfs="required"
+             setup="yes"
+         fi
+     fi
+     if [ -n "$overlayfs" ]; then
+         modprobe overlay
+         if [ $? != 0 ]; then
++            if [ "$overlayfs" = required ]; then
++                die "OverlayFS is required but not available."
++                exit 1
++            fi
++            [ -n "$DRACUT_SYSTEMD" ] && reloadsysrootmountunit=":>/xor_overlayfs;"
+             m='OverlayFS is not available; using temporary Device-mapper overlay.'
+-            unset -v overlayfs setup reloadsysrootmountunit
++            info $m
++            unset -v overlayfs setup
+         fi
+     fi
+ 
+@@ -302,10 +308,10 @@ if [ -e "$SQUASHED" ]; then
+         fi
+     elif [ -d /run/initramfs/squashfs/proc ]; then
+         FSIMG=$SQUASHED
+-        if [ -z "$overlayfs" ]; then
+-            overlayfs="yes"
+-            [ -n "$DRACUT_SYSTEMD" ] && reloadsysrootmountunit=":>/xor_overlayfs;"
++        if [ -z "$overlayfs" ] && [ -n "$DRACUT_SYSTEMD" ]; then
++            reloadsysrootmountunit=":>/xor_overlayfs;"
+         fi
++        overlayfs="required"
+     else
+         die "Failed to find a root filesystem in $SQUASHED."
+         exit 1
+
diff --git a/0085.patch b/0085.patch
new file mode 100644
index 0000000..0a44482
--- /dev/null
+++ b/0085.patch
@@ -0,0 +1,24 @@
+From 8dd7bb48fcd9d19dd2d7cec2577cd2c6b414fd8b Mon Sep 17 00:00:00 2001
+From: Frederick Grose <fgrose@sugarlabs.org>
+Date: Mon, 3 Sep 2018 19:41:58 -0400
+Subject: [PATCH] dmsquash-live/apply-live-updates: Test proper file link.
+
+Update flag link to /dev/root as required by commit
+789668deb3e6f8584ffab964d2204ddcb75f0a06.
+---
+ modules.d/90dmsquash-live/apply-live-updates.sh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/modules.d/90dmsquash-live/apply-live-updates.sh b/modules.d/90dmsquash-live/apply-live-updates.sh
+index bcca761b..3df2d4ad 100755
+--- a/modules.d/90dmsquash-live/apply-live-updates.sh
++++ b/modules.d/90dmsquash-live/apply-live-updates.sh
+@@ -1,6 +1,6 @@
+ #!/bin/sh
+ 
+-if [ -L /run/rootfsbase ] && [ -d /run/initramfs/live/updates -o -d /updates ]; then
++if [ -h /dev/root ] && [ -d /run/initramfs/live/updates -o -d /updates ]; then
+     info "Applying updates to live image..."
+     mount -o bind /run $NEWROOT/run
+     # avoid overwriting symlinks (e.g. /lib -> /usr/lib) with directories
+
diff --git a/0086.patch b/0086.patch
new file mode 100644
index 0000000..970ae94
--- /dev/null
+++ b/0086.patch
@@ -0,0 +1,67 @@
+From b3480d31b01e66e21a70b7dab55eac95449126c7 Mon Sep 17 00:00:00 2001
+From: Alexander Tsoy <alexander@tsoy.me>
+Date: Sat, 8 Sep 2018 17:02:03 +0300
+Subject: [PATCH] Prevent environment leaking into initrd-release
+
+On my system the following initrd-release is generated:
+...
+VERSION="4 dracut-048 dracut-048"
+...
+
+VERSION is not defined in /etc/os-release, so the variable is
+concatenated with its previous value:
+
+* "4" comes from the kernel build system since dracut is called from the
+  kernel install hook ("4" is a major kernel version);
+* first "dracut-048" comes from the "systemd-initrd" module;
+* second "dracut-048" comes from the "base" module.
+---
+ modules.d/01systemd-initrd/module-setup.sh | 9 ++++-----
+ modules.d/99base/module-setup.sh           | 9 ++++-----
+ 2 files changed, 8 insertions(+), 10 deletions(-)
+
+diff --git a/modules.d/01systemd-initrd/module-setup.sh b/modules.d/01systemd-initrd/module-setup.sh
+index c1ccd2af..cb8a8fa6 100755
+--- a/modules.d/01systemd-initrd/module-setup.sh
++++ b/modules.d/01systemd-initrd/module-setup.sh
+@@ -38,13 +38,12 @@ install() {
+ 
+     ln_r "${systemdsystemunitdir}/initrd.target" "${systemdsystemunitdir}/default.target"
+ 
++    local VERSION=""
++    local PRETTY_NAME=""
+     if [ -e /etc/os-release ]; then
+         . /etc/os-release
+-        VERSION+=" "
+-        PRETTY_NAME+=" "
+-    else
+-        VERSION=""
+-        PRETTY_NAME=""
++        [[ -n ${VERSION} ]] && VERSION+=" "
++        [[ -n ${PRETTY_NAME} ]] && PRETTY_NAME+=" "
+     fi
+     NAME=dracut
+     ID=dracut
+diff --git a/modules.d/99base/module-setup.sh b/modules.d/99base/module-setup.sh
+index 731c6dcc..21523fc9 100755
+--- a/modules.d/99base/module-setup.sh
++++ b/modules.d/99base/module-setup.sh
+@@ -63,13 +63,12 @@ install() {
+         echo ro >> "${initdir}/etc/cmdline.d/base.conf"
+     fi
+ 
++    local VERSION=""
++    local PRETTY_NAME=""
+     if [ -e /etc/os-release ]; then
+         . /etc/os-release
+-        VERSION+=" "
+-        PRETTY_NAME+=" "
+-    else
+-        VERSION=""
+-        PRETTY_NAME=""
++        [[ -n ${VERSION} ]] && VERSION+=" "
++        [[ -n ${PRETTY_NAME} ]] && PRETTY_NAME+=" "
+     fi
+     NAME=dracut
+     ID=dracut
+
diff --git a/0087.patch b/0087.patch
new file mode 100644
index 0000000..23b3ca2
--- /dev/null
+++ b/0087.patch
@@ -0,0 +1,32 @@
+From 838f22259a50e5f92429ecdd24b897c1128edc98 Mon Sep 17 00:00:00 2001
+From: Alexander Tsoy <alexander@tsoy.me>
+Date: Sun, 9 Sep 2018 02:47:09 +0300
+Subject: [PATCH] install: avoid non-portable __WORDSIZE
+
+Lets not unnecessarily rely on __WORDSIZE, which is not clearly specified
+by any spec. Use explicit size comparisons if we're not interested in the
+WORDSIZE, anyway.
+
+Patch ported from systemd.
+(commit 8507eb20b64010b26f23822cbf442bb0bf96511c)
+
+Original-patch-by: Emil Renner Berthing <systemd@esmil.dk>
+Bug: https://bugs.gentoo.org/602122
+---
+ install/util.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/install/util.h b/install/util.h
+index 2ad3254d..c13b1a27 100644
+--- a/install/util.h
++++ b/install/util.h
+@@ -167,7 +167,7 @@ int safe_atoi(const char *s, int *ret_i);
+ int safe_atollu(const char *s, unsigned long long *ret_u);
+ int safe_atolli(const char *s, long long int *ret_i);
+ 
+-#if __WORDSIZE == 32
++#if LONG_MAX == INT_MAX
+ static inline int safe_atolu(const char *s, unsigned long *ret_u) {
+         assert_cc(sizeof(unsigned long) == sizeof(unsigned));
+         return safe_atou(s, (unsigned*) ret_u);
+
diff --git a/0088.patch b/0088.patch
new file mode 100644
index 0000000..58d0f89
--- /dev/null
+++ b/0088.patch
@@ -0,0 +1,24 @@
+From f4334e9bdf5ff85d5f9d9eb12f51a6b78e94101e Mon Sep 17 00:00:00 2001
+From: Alexander Tsoy <alexander@tsoy.me>
+Date: Sun, 9 Sep 2018 13:57:33 +0300
+Subject: [PATCH] base/dracut-lib.sh: use "command -v" in pidof()
+
+"type -P" doesn't work in dash
+---
+ modules.d/99base/dracut-lib.sh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/modules.d/99base/dracut-lib.sh b/modules.d/99base/dracut-lib.sh
+index b78272a3..f71e757c 100755
+--- a/modules.d/99base/dracut-lib.sh
++++ b/modules.d/99base/dracut-lib.sh
+@@ -1060,7 +1060,7 @@ if ! command -v pidof >/dev/null 2>/dev/null; then
+             debug_on
+             return 1
+         fi
+-        _exe=$(type -P "$1")
++        _exe=$(command -v "$1")
+         for i in /proc/*/exe; do
+             [ -e "$i" ] || continue
+             if [ -n "$_exe" ]; then
+
diff --git a/0089.patch b/0089.patch
new file mode 100644
index 0000000..3de1342
--- /dev/null
+++ b/0089.patch
@@ -0,0 +1,349 @@
+From 095e1f37c41e8995c95635a47dbe2bf61d8ee2bc Mon Sep 17 00:00:00 2001
+From: Kairui Song <kasong@redhat.com>
+Date: Tue, 11 Sep 2018 19:32:24 +0800
+Subject: [PATCH] Add support for building a squashed initramfs
+
+With all files stored in ramfs, and most of them are not compressed,
+the initramfs will take up a lot of memory. Besides, if the file number
+is large, each file will waste some memory due to page fragmetation.
+This is due to ramfs' design, at least one page will be allocated for
+one file however small the file is. On machine with large page size,
+this will become worse and waste too many memory.
+
+One approach to reducing the memory usage is to reduce the number of
+files that got directly loaded into the root ramfs, and compress files
+by put most files will into a read-only squash image and keep a minimum
+set of executable and libraries outside as the loader for the squash
+image. After the squash image is mounted, the real 'init' will be
+executed and then everything behaves as usual.
+
+This patch will introduce a '99squash' module which will never be
+included by default. User can force add it, and if it is included,
+dracut will perform some extra steps before creating the final image:
+
+For now, "/etc" and "/usr" will be moved into the squashfs image.
+"/init" will be renamed to "/init.stock" and replaced by "/init.squash".
+Files and folders need to be accessible before mounting the image will
+be still avaliable at their original place. And due to squashfs is
+readonly, an overlayfs layer will be created on top of squashfs mount
+point, as many dracut module require readwrite access to "/etc" and
+"/usr", "init.squash" will ultimately call "/init.stock".
+
+An extra systemd service will be installed. This service will umount all
+squashfs related mount points right before switch-root to release
+resources properly. This service will not actually do anything if
+switch-root is not used.
+
+This is very helpful when mem resource is very limited, like Kdump.
+According to my tests, this squash module can help save about 35MB of
+memory with 64K page size, or about 15MB with 4K page size on an
+ordinary kdump capture routine. This module could also help reduce
+memory usage for normal boot up process.
+
+Won't change any behavior if squash module is not enabled.
+
+Signed-off-by: Kairui Song <kasong@redhat.com>
+---
+ dracut.sh                                   | 114 ++++++++++++++++++++++++++++
+ modules.d/99squash/clear-squash.sh          |   9 +++
+ modules.d/99squash/init.sh                  |   7 ++
+ modules.d/99squash/module-setup.sh          |  29 +++++++
+ modules.d/99squash/setup-squash.sh          |  61 +++++++++++++++
+ modules.d/99squash/shutdown.sh              |   7 ++
+ modules.d/99squash/squash-mnt-clear.service |  19 +++++
+ 7 files changed, 246 insertions(+)
+
+diff --git a/dracut.sh b/dracut.sh
+index 8ee8c168..e683a9bc 100755
+--- a/dracut.sh
++++ b/dracut.sh
+@@ -1747,6 +1747,120 @@ fi
+ 
+ dinfo "*** Creating image file '$outfile' ***"
+ 
++if dracut_module_included "squash"; then
++    if ! check_kernel_config CONFIG_SQUASHFS; then
++        dfatal "CONFIG_SQUASHFS have to be enabled for dracut squash module to work"
++        exit 1
++    fi
++    if ! check_kernel_config CONFIG_OVERLAY_FS; then
++        dfatal "CONFIG_OVERLAY_FS have to be enabled for dracut squash module to work"
++        exit 1
++    fi
++    if ! check_kernel_config CONFIG_DEVTMPFS; then
++        dfatal "CONFIG_DEVTMPFS have to be enabled for dracut squash module to work"
++        exit 1
++    fi
++
++    readonly squash_dir="${DRACUT_TMPDIR}/squashfs"
++    readonly squash_img=$initdir/squash/root.img
++
++    # Currently only move "usr" "etc" to squashdir
++    readonly squash_candidate=( "usr" "etc" )
++
++    mkdir -m 0755 -p $squash_dir
++    for folder in "${squash_candidate[@]}"; do
++        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"
++    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
++    required_in_root() {
++        local file=$1
++        local _sqsh_file=$squash_dir/$file
++        local _init_file=$initdir/$file
++
++        if [[ -e $_init_file ]]; then
++            return
++        fi
++
++        if [[ ! -e $_sqsh_file ]] && [[ ! -L $_sqsh_file ]]; then
++            derror "$file is required to boot a squashed initramfs but it's not installed!"
++            return
++        fi
++
++        if [[ ! -d $(dirname $_init_file) ]]; 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
++        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
++        fi
++    }
++
++    required_in_root etc/initrd-release
++
++    for module_spec in $squash_dir/usr/lib/modules/*/modules.*;
++    do
++        required_in_root ${module_spec#$squash_dir/}
++    done
++
++    for dracut_spec in $squash_dir/usr/lib/dracut/*;
++    do
++        required_in_root ${dracut_spec#$squash_dir/}
++    done
++
++    mv $initdir/init $initdir/init.stock
++    mv $initdir/shutdown $initdir/shutdown.stock
++    ln -s squash/init.sh $initdir/init
++    ln -s squash/shutdown.sh $initdir/shutdown
++
++    mksquashfs $squash_dir $squash_img -comp xz -b 64K -Xdict-size 100% &> /dev/null
++
++    if [[ $? != 0 ]]; then
++        dfatal "dracut: Failed making squash image"
++        exit 1
++    fi
++fi
++
+ if [[ $uefi = yes ]]; then
+     readonly uefi_outdir="$DRACUT_TMPDIR/uefi"
+     mkdir "$uefi_outdir"
+diff --git a/modules.d/99squash/clear-squash.sh b/modules.d/99squash/clear-squash.sh
+new file mode 100755
+index 00000000..34cb4cf5
+--- /dev/null
++++ b/modules.d/99squash/clear-squash.sh
+@@ -0,0 +1,9 @@
++#!/bin/sh
++SQUASH_MNT_REC=/squash/mounts
++SQUASH_MNTS=( )
++
++while read mnt; do
++    SQUASH_MNTS+=( "$mnt" )
++done <<< "$(cat $SQUASH_MNT_REC)"
++
++umount --lazy -- ${SQUASH_MNTS[@]}
+diff --git a/modules.d/99squash/init.sh b/modules.d/99squash/init.sh
+new file mode 100755
+index 00000000..bca49db5
+--- /dev/null
++++ b/modules.d/99squash/init.sh
+@@ -0,0 +1,7 @@
++#!/bin/sh
++/squash/setup-squash.sh
++
++exec /init.stock
++
++echo "Something went wrong when trying to start original init executable!"
++exit 1
+diff --git a/modules.d/99squash/module-setup.sh b/modules.d/99squash/module-setup.sh
+new file mode 100644
+index 00000000..935fd721
+--- /dev/null
++++ b/modules.d/99squash/module-setup.sh
+@@ -0,0 +1,29 @@
++#!/bin/bash
++
++check() {
++    return 255
++}
++
++depends() {
++    echo "bash systemd systemd-initrd"
++    return 0
++}
++
++installkernel() {
++    hostonly="" instmods squashfs loop overlay
++}
++
++install() {
++    if ! type -P mksquashfs >/dev/null || ! type -P unsquashfs >/dev/null ; then
++        derror "squash module requires squashfs-tools to be installed."
++        return 1
++    fi
++
++    inst_multiple kmod modprobe mount mkdir ln echo
++    inst $moddir/setup-squash.sh /squash/setup-squash.sh
++    inst $moddir/clear-squash.sh /squash/clear-squash.sh
++    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"
++}
+diff --git a/modules.d/99squash/setup-squash.sh b/modules.d/99squash/setup-squash.sh
+new file mode 100755
+index 00000000..d2740e7c
+--- /dev/null
++++ b/modules.d/99squash/setup-squash.sh
+@@ -0,0 +1,61 @@
++#!/bin/sh
++PATH=/bin:/sbin
++
++SQUASH_IMG=/squash/root.img
++SQUASH_MNT=/squash/root
++SQUASH_MNT_REC=/squash/mounts
++SQUASHED_MNT="usr etc"
++
++echo $SQUASH_MNT > $SQUASH_MNT_REC
++
++# Following mount points are neccessary for mounting a squash image
++
++[ ! -d /proc/self ] && \
++    mount -t proc -o nosuid,noexec,nodev proc /proc
++
++[ ! -d /sys/kernel ] && \
++    mount -t sysfs -o nosuid,noexec,nodev sysfs /sys
++
++[ ! -e /dev/loop-control ] && \
++    mount -t devtmpfs -o mode=0755,noexec,nosuid,strictatime devtmpfs /dev
++
++# Need a loop device backend, overlayfs, and squashfs module
++modprobe loop
++if [ $? != 0 ]; then
++    echo "Unable to setup loop module"
++fi
++
++modprobe squashfs
++if [ $? != 0 ]; then
++    echo "Unable to setup squashfs module"
++fi
++
++modprobe overlay
++if [ $? != 0 ]; then
++    echo "Unable to setup overlay module"
++fi
++
++[ ! -d "$SQUASH_MNT" ] && \
++	mkdir -m 0755 -p $SQUASH_MNT
++
++# Mount the squashfs image
++mount -t squashfs -o ro,loop $SQUASH_IMG $SQUASH_MNT
++
++if [ $? != 0 ]; then
++    echo "Unable to mount squashed initramfs image"
++fi
++
++for file in $SQUASHED_MNT; do
++	lowerdir=$SQUASH_MNT/$file
++	workdir=/squash/overlay-work/$file
++	upperdir=/$file
++	mntdir=/$file
++
++	mkdir -m 0755 -p $workdir
++	mkdir -m 0755 -p $mntdir
++
++	mount -t overlay overlay -o\
++		lowerdir=$lowerdir,upperdir=$upperdir,workdir=$workdir $mntdir
++
++	echo $mntdir >> $SQUASH_MNT_REC
++done
+diff --git a/modules.d/99squash/shutdown.sh b/modules.d/99squash/shutdown.sh
+new file mode 100755
+index 00000000..535779f4
+--- /dev/null
++++ b/modules.d/99squash/shutdown.sh
+@@ -0,0 +1,7 @@
++#!/bin/sh
++/squash/setup-squash.sh
++
++exec /shutdown.stock
++
++echo "Something went wrong when trying to start original shutdown executable!"
++exit 1
+diff --git a/modules.d/99squash/squash-mnt-clear.service b/modules.d/99squash/squash-mnt-clear.service
+new file mode 100644
+index 00000000..8dd17812
+--- /dev/null
++++ b/modules.d/99squash/squash-mnt-clear.service
+@@ -0,0 +1,19 @@
++#  This file is part of dracut.
++#
++
++[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
++ConditionPathExists=/squash/root
++Conflicts=initrd-switch-root.target
++
++[Service]
++Type=oneshot
++RemainAfterExit=yes
++StandardInput=null
++StandardOutput=syslog+console
++StandardError=syslog+console
++ExecStop=/squash/clear-squash.sh
+
diff --git a/0090.patch b/0090.patch
new file mode 100644
index 0000000..82b559a
--- /dev/null
+++ b/0090.patch
@@ -0,0 +1,43 @@
+From 24f3463bff8600d562975c9a7c44365066a50ca4 Mon Sep 17 00:00:00 2001
+From: Kairui Song <kasong@redhat.com>
+Date: Thu, 20 Sep 2018 17:23:19 +0800
+Subject: [PATCH] dracut.spec: Add dracut-squash package
+
+As 99squash module requires extra dependency and it introduces new
+files, add a new sub package for this module.
+---
+ dracut.spec | 13 +++++++++++++
+ 1 file changed, 13 insertions(+)
+
+diff --git a/dracut.spec b/dracut.spec
+index 09c74478..d9cfdf1c 100644
+--- a/dracut.spec
++++ b/dracut.spec
+@@ -178,6 +178,16 @@ 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: squash-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} .
+@@ -439,6 +449,9 @@ 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
+
diff --git a/0091.patch b/0091.patch
new file mode 100644
index 0000000..bc86778
--- /dev/null
+++ b/0091.patch
@@ -0,0 +1,30 @@
+From 0454dc247a146fabd66232c26536514dca1f6044 Mon Sep 17 00:00:00 2001
+From: Lubomir Rintel <lkundrak@v3.sk>
+Date: Tue, 18 Sep 2018 11:17:54 +0200
+Subject: [PATCH] network: configure NetworkManager to use dhclient
+
+If the network module obtained a lease using dhclient, NetworkManager
+must be configured to use it too, otherwise it would obtain a different
+lease (and could potentially break a connection to the network volume).
+---
+ modules.d/40network/ifup.sh | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+diff --git a/modules.d/40network/ifup.sh b/modules.d/40network/ifup.sh
+index 54981386..ea2a67ff 100755
+--- a/modules.d/40network/ifup.sh
++++ b/modules.d/40network/ifup.sh
+@@ -41,6 +41,12 @@ do_dhcp() {
+         return 1
+     fi
+ 
++    if [ ! -e /run/NetworkManager/conf.d/10-dracut-dhclient.conf ]; then
++        mkdir -p /run/NetworkManager/conf.d
++        echo '[main]' > /run/NetworkManager/conf.d/10-dracut-dhclient.conf
++        echo 'dhcp=dhclient' >>/run/NetworkManager/conf.d/10-dracut-dhclient.conf
++    fi
++
+     while [ $_COUNT -lt $_DHCPRETRY ]; do
+         info "Starting dhcp for interface $netif"
+         dhclient "$@" \
+
diff --git a/0092.patch b/0092.patch
new file mode 100644
index 0000000..ed20a76
--- /dev/null
+++ b/0092.patch
@@ -0,0 +1,37 @@
+From 9e82732dd412a49cbdf9c4b998f04ac0a39e393f Mon Sep 17 00:00:00 2001
+From: Lubomir Rintel <lkundrak@v3.sk>
+Date: Thu, 30 Aug 2018 16:21:17 +0200
+Subject: [PATCH] iscsi: do not replace the configuration in the host system
+
+  ln: failed to create symbolic link '/usr/lib/systemd/system/sockets.target.wants/iscsid.socket': Permission denied
+  ln: failed to create symbolic link '/usr/lib/systemd/system/sockets.target.wants/iscsiuio.socket': Permission denied
+
+No way. Just ensure the links are there in the initramfs image. In fact,
+that is already the case for iscsiuio.socket. Add iscsid.socket too.
+---
+ modules.d/95iscsi/module-setup.sh | 4 +---
+ 1 file changed, 1 insertion(+), 3 deletions(-)
+
+diff --git a/modules.d/95iscsi/module-setup.sh b/modules.d/95iscsi/module-setup.sh
+index d8405fce..04beae4c 100755
+--- a/modules.d/95iscsi/module-setup.sh
++++ b/modules.d/95iscsi/module-setup.sh
+@@ -208,9 +208,6 @@ install() {
+     inst_libdir_file 'libgcc_s.so*'
+     inst_multiple umount hostname iscsi-iname iscsiadm iscsid
+ 
+-    ln -sf $systemdsystemunitdir/iscsid.socket $systemdsystemunitdir/sockets.target.wants/iscsid.socket
+-    ln -sf $systemdsystemunitdir/iscsiuio.socket $systemdsystemunitdir/sockets.target.wants/iscsiuio.socket
+-
+     inst_multiple -o \
+         $systemdsystemunitdir/iscsid.socket \
+         $systemdsystemunitdir/iscsid.service \
+@@ -243,6 +240,7 @@ install() {
+ 
+         mkdir -p "${initdir}/$systemdsystemunitdir/sockets.target.wants"
+         for i in \
++                iscsid.socket \
+                 iscsiuio.socket \
+             ; do
+             ln_r "$systemdsystemunitdir/${i}" "$systemdsystemunitdir/sockets.target.wants/${i}"
+
diff --git a/0093.patch b/0093.patch
new file mode 100644
index 0000000..45f9dce
--- /dev/null
+++ b/0093.patch
@@ -0,0 +1,29 @@
+From 5e615f4eb488e469395e7e30059a22d8225d9a0a Mon Sep 17 00:00:00 2001
+From: Lubomir Rintel <lkundrak@v3.sk>
+Date: Thu, 30 Aug 2018 18:38:34 +0200
+Subject: [PATCH] iscsi: do not install all of /etc/iscsi unless hostonly
+
+/etc/iscsi/initiatorname.iscsi would leak the host initiator name (that
+is host configuration) to the initramfs. Perhaps other files too.
+---
+ modules.d/95iscsi/module-setup.sh | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/modules.d/95iscsi/module-setup.sh b/modules.d/95iscsi/module-setup.sh
+index 04beae4c..5c2073bb 100755
+--- a/modules.d/95iscsi/module-setup.sh
++++ b/modules.d/95iscsi/module-setup.sh
+@@ -216,7 +216,11 @@ install() {
+         $systemdsystemunitdir/sockets.target.wants/iscsid.socket \
+         $systemdsystemunitdir/sockets.target.wants/iscsiuio.socket
+ 
+-    [[ -d /etc/iscsi ]] && inst_dir $(/usr/bin/find /etc/iscsi)
++    if [[ $hostonly ]]; then
++        inst_dir $(/usr/bin/find /etc/iscsi)
++    else
++        inst_simple /etc/iscsi/iscsid.conf
++    fi
+ 
+     # Detect iBFT and perform mandatory steps
+     if [[ $hostonly_cmdline == "yes" ]] ; then
+
diff --git a/0094.patch b/0094.patch
new file mode 100644
index 0000000..5f8dc65
--- /dev/null
+++ b/0094.patch
@@ -0,0 +1,27 @@
+From 0aa2e5f7280a0f88d5f8d69dd9467e7b81d6a231 Mon Sep 17 00:00:00 2001
+From: Lubomir Rintel <lkundrak@v3.sk>
+Date: Thu, 30 Aug 2018 18:41:37 +0200
+Subject: [PATCH] iscsi: start iscsid even w/o systemd
+
+---
+ modules.d/95iscsi/iscsiroot.sh | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+diff --git a/modules.d/95iscsi/iscsiroot.sh b/modules.d/95iscsi/iscsiroot.sh
+index 76c8b3fe..4efc1d12 100755
+--- a/modules.d/95iscsi/iscsiroot.sh
++++ b/modules.d/95iscsi/iscsiroot.sh
+@@ -194,6 +194,12 @@ handle_netroot()
+             sleep 1
+         fi
+     fi
++
++   if [ -z "$DRACUT_SYSTEMD" ]; then
++       iscsid
++       sleep 2
++   fi
++
+ # FIXME $iscsi_protocol??
+ 
+     if [ "$root" = "dhcp" ] || [ "$netroot" = "dhcp" ]; then
+
diff --git a/0095.patch b/0095.patch
new file mode 100644
index 0000000..9ed7f9b
--- /dev/null
+++ b/0095.patch
@@ -0,0 +1,23 @@
+From 1c4a51c39c8ed9908ae8118eff78d3476eaddf61 Mon Sep 17 00:00:00 2001
+From: Lubomir Rintel <lkundrak@v3.sk>
+Date: Fri, 31 Aug 2018 16:51:38 +0200
+Subject: [PATCH] network: fix an error message
+
+---
+ modules.d/40network/netroot.sh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/modules.d/40network/netroot.sh b/modules.d/40network/netroot.sh
+index c80a59fe..207364cd 100755
+--- a/modules.d/40network/netroot.sh
++++ b/modules.d/40network/netroot.sh
+@@ -46,7 +46,7 @@ if [ -z "$2" ]; then
+         # we die. Otherwise we just warn
+         if [ -z "$new_root_path" ] ; then
+             [ -n "$BOOTDEV" ] && die "No dhcp root-path received for '$BOOTDEV'"
+-            warn "No dhcp root-path received for '$BOOTDEV' trying other interfaces if available"
++            warn "No dhcp root-path received for '$netif' trying other interfaces if available"
+             exit 1
+         fi
+ 
+
diff --git a/0096.patch b/0096.patch
new file mode 100644
index 0000000..f67d657
--- /dev/null
+++ b/0096.patch
@@ -0,0 +1,287 @@
+From 734739187bfab24f063904ea18f0bdf03b4a136c Mon Sep 17 00:00:00 2001
+From: Lubomir Rintel <lkundrak@v3.sk>
+Date: Thu, 30 Aug 2018 16:44:22 +0200
+Subject: [PATCH] network-legacy: split off from network module
+
+---
+ dracut.spec                                        |  1 +
+ .../dhclient-script.sh                             |  0
+ .../{40network => 35network-legacy}/dhclient.conf  |  0
+ .../{40network => 35network-legacy}/dhcp-root.sh   |  0
+ modules.d/{40network => 35network-legacy}/ifup.sh  |  0
+ .../kill-dhclient.sh                               |  0
+ modules.d/35network-legacy/module-setup.sh         | 93 ++++++++++++++++++++++
+ .../net-genrules.sh                                |  0
+ .../{40network => 35network-legacy}/parse-bond.sh  |  0
+ .../parse-bridge.sh                                |  0
+ .../{40network => 35network-legacy}/parse-ibft.sh  |  0
+ .../parse-ifname.sh                                |  0
+ .../parse-ip-opts.sh                               |  0
+ .../{40network => 35network-legacy}/parse-team.sh  |  0
+ .../{40network => 35network-legacy}/parse-vlan.sh  |  0
+ modules.d/40network/module-setup.sh                | 76 +-----------------
+ 16 files changed, 95 insertions(+), 75 deletions(-)
+
+diff --git a/dracut.spec b/dracut.spec
+index d9cfdf1c..f6486d50 100644
+--- a/dracut.spec
++++ b/dracut.spec
+@@ -419,6 +419,7 @@ install -m 0755 51-dracut-rescue-postinst.sh $RPM_BUILD_ROOT%{_sysconfdir}/kerne
+ 
+ %files network
+ %{dracutlibdir}/modules.d/02systemd-networkd
++%{dracutlibdir}/modules.d/35network-legacy
+ %{dracutlibdir}/modules.d/40network
+ %{dracutlibdir}/modules.d/45ifcfg
+ %{dracutlibdir}/modules.d/90kernel-network-modules
+diff --git a/modules.d/40network/dhclient-script.sh b/modules.d/35network-legacy/dhclient-script.sh
+similarity index 100%
+rename from modules.d/40network/dhclient-script.sh
+rename to modules.d/35network-legacy/dhclient-script.sh
+diff --git a/modules.d/40network/dhclient.conf b/modules.d/35network-legacy/dhclient.conf
+similarity index 100%
+rename from modules.d/40network/dhclient.conf
+rename to modules.d/35network-legacy/dhclient.conf
+diff --git a/modules.d/40network/dhcp-root.sh b/modules.d/35network-legacy/dhcp-root.sh
+similarity index 100%
+rename from modules.d/40network/dhcp-root.sh
+rename to modules.d/35network-legacy/dhcp-root.sh
+diff --git a/modules.d/40network/ifup.sh b/modules.d/35network-legacy/ifup.sh
+similarity index 100%
+rename from modules.d/40network/ifup.sh
+rename to modules.d/35network-legacy/ifup.sh
+diff --git a/modules.d/40network/kill-dhclient.sh b/modules.d/35network-legacy/kill-dhclient.sh
+similarity index 100%
+rename from modules.d/40network/kill-dhclient.sh
+rename to modules.d/35network-legacy/kill-dhclient.sh
+diff --git a/modules.d/35network-legacy/module-setup.sh b/modules.d/35network-legacy/module-setup.sh
+new file mode 100755
+index 00000000..71abda36
+--- /dev/null
++++ b/modules.d/35network-legacy/module-setup.sh
+@@ -0,0 +1,93 @@
++#!/bin/bash
++
++# called by dracut
++check() {
++    local _program
++
++    require_binaries ip dhclient sed awk grep || return 1
++    require_any_binary arping arping2 || return 1
++
++    return 255
++}
++
++# called by dracut
++depends() {
++    return 0
++}
++
++# called by dracut
++installkernel() {
++    return 0
++}
++
++# called by dracut
++install() {
++    local _arch _i _dir
++    inst_multiple ip dhclient sed awk grep
++
++    inst_multiple -o arping arping2
++    strstr "$(arping 2>&1)" "ARPing 2" && mv "$initdir/bin/arping" "$initdir/bin/arping2"
++
++    inst_multiple -o ping ping6
++    inst_multiple -o teamd teamdctl teamnl
++    inst_simple /etc/libnl/classid
++    inst_script "$moddir/ifup.sh" "/sbin/ifup"
++    inst_script "$moddir/dhclient-script.sh" "/sbin/dhclient-script"
++    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"
++    inst_hook cmdline 96 "$moddir/parse-team.sh"
++    inst_hook cmdline 97 "$moddir/parse-bridge.sh"
++    inst_hook cmdline 98 "$moddir/parse-ip-opts.sh"
++    inst_hook cmdline 99 "$moddir/parse-ifname.sh"
++    inst_hook cleanup 10 "$moddir/kill-dhclient.sh"
++
++    # install all config files for teaming
++    unset TEAM_MASTER
++    unset TEAM_CONFIG
++    unset TEAM_PORT_CONFIG
++    unset HWADDR
++    unset SUBCHANNELS
++    for i in /etc/sysconfig/network-scripts/ifcfg-*; do
++        [ -e "$i" ] || continue
++        case "$i" in
++            *~ | *.bak | *.orig | *.rpmnew | *.rpmorig | *.rpmsave)
++                continue
++                ;;
++        esac
++        (
++            . "$i"
++            if ! [ "${ONBOOT}" = "no" -o "${ONBOOT}" = "NO" ] \
++                    && [ -n "${TEAM_MASTER}${TEAM_CONFIG}${TEAM_PORT_CONFIG}" ]; then
++                if [ -n "$TEAM_CONFIG" ] && [ -n "$DEVICE" ]; then
++                    mkdir -p $initdir/etc/teamd
++                    printf -- "%s" "$TEAM_CONFIG" > "$initdir/etc/teamd/${DEVICE}.conf"
++                elif [ -n "$TEAM_PORT_CONFIG" ]; then
++                    inst_simple "$i"
++
++                    HWADDR="$(echo $HWADDR | sed 'y/ABCDEF/abcdef/')"
++                    if [ -n "$HWADDR" ]; then
++                        ln_r "$i" "/etc/sysconfig/network-scripts/mac-${HWADDR}.conf"
++                    fi
++
++                    SUBCHANNELS="$(echo $SUBCHANNELS | sed 'y/ABCDEF/abcdef/')"
++                    if [ -n "$SUBCHANNELS" ]; then
++                        ln_r "$i" "/etc/sysconfig/network-scripts/ccw-${SUBCHANNELS}.conf"
++                    fi
++                fi
++            fi
++        )
++    done
++
++    _arch=$(uname -m)
++
++    inst_libdir_file {"tls/$_arch/",tls/,"$_arch/",}"libnss_dns.so.*" \
++        {"tls/$_arch/",tls/,"$_arch/",}"libnss_mdns4_minimal.so.*"
++
++    dracut_need_initqueue
++}
++
+diff --git a/modules.d/40network/net-genrules.sh b/modules.d/35network-legacy/net-genrules.sh
+similarity index 100%
+rename from modules.d/40network/net-genrules.sh
+rename to modules.d/35network-legacy/net-genrules.sh
+diff --git a/modules.d/40network/parse-bond.sh b/modules.d/35network-legacy/parse-bond.sh
+similarity index 100%
+rename from modules.d/40network/parse-bond.sh
+rename to modules.d/35network-legacy/parse-bond.sh
+diff --git a/modules.d/40network/parse-bridge.sh b/modules.d/35network-legacy/parse-bridge.sh
+similarity index 100%
+rename from modules.d/40network/parse-bridge.sh
+rename to modules.d/35network-legacy/parse-bridge.sh
+diff --git a/modules.d/40network/parse-ibft.sh b/modules.d/35network-legacy/parse-ibft.sh
+similarity index 100%
+rename from modules.d/40network/parse-ibft.sh
+rename to modules.d/35network-legacy/parse-ibft.sh
+diff --git a/modules.d/40network/parse-ifname.sh b/modules.d/35network-legacy/parse-ifname.sh
+similarity index 100%
+rename from modules.d/40network/parse-ifname.sh
+rename to modules.d/35network-legacy/parse-ifname.sh
+diff --git a/modules.d/40network/parse-ip-opts.sh b/modules.d/35network-legacy/parse-ip-opts.sh
+similarity index 100%
+rename from modules.d/40network/parse-ip-opts.sh
+rename to modules.d/35network-legacy/parse-ip-opts.sh
+diff --git a/modules.d/40network/parse-team.sh b/modules.d/35network-legacy/parse-team.sh
+similarity index 100%
+rename from modules.d/40network/parse-team.sh
+rename to modules.d/35network-legacy/parse-team.sh
+diff --git a/modules.d/40network/parse-vlan.sh b/modules.d/35network-legacy/parse-vlan.sh
+similarity index 100%
+rename from modules.d/40network/parse-vlan.sh
+rename to modules.d/35network-legacy/parse-vlan.sh
+diff --git a/modules.d/40network/module-setup.sh b/modules.d/40network/module-setup.sh
+index a1010911..fbd43925 100755
+--- a/modules.d/40network/module-setup.sh
++++ b/modules.d/40network/module-setup.sh
+@@ -1,18 +1,8 @@
+ #!/bin/bash
+ 
+-# called by dracut
+-check() {
+-    local _program
+-
+-    require_binaries ip dhclient sed awk grep || return 1
+-    require_any_binary arping arping2 || return 1
+-
+-    return 255
+-}
+-
+ # called by dracut
+ depends() {
+-    echo "kernel-network-modules"
++    echo "network-legacy"
+     return 0
+ }
+ 
+@@ -24,74 +14,10 @@ installkernel() {
+ # called by dracut
+ install() {
+     local _arch _i _dir
+-    inst_multiple ip dhclient sed awk grep
+-
+-    inst_multiple -o arping arping2
+-    strstr "$(arping 2>&1)" "ARPing 2" && mv "$initdir/bin/arping" "$initdir/bin/arping2"
+ 
+-    inst_multiple -o ping ping6
+-    inst_multiple -o teamd teamdctl teamnl
+-    inst_simple /etc/libnl/classid
+-    inst_script "$moddir/ifup.sh" "/sbin/ifup"
+     inst_script "$moddir/netroot.sh" "/sbin/netroot"
+-    inst_script "$moddir/dhclient-script.sh" "/sbin/dhclient-script"
+     inst_simple "$moddir/net-lib.sh" "/lib/net-lib.sh"
+-    inst_simple -H "/etc/dhclient.conf"
+-    cat "$moddir/dhclient.conf" >> "${initdir}/etc/dhclient.conf"
+     inst_hook pre-udev 50 "$moddir/ifname-genrules.sh"
+-    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"
+-    inst_hook cmdline 96 "$moddir/parse-team.sh"
+-    inst_hook cmdline 97 "$moddir/parse-bridge.sh"
+-    inst_hook cmdline 98 "$moddir/parse-ip-opts.sh"
+-    inst_hook cmdline 99 "$moddir/parse-ifname.sh"
+-    inst_hook cleanup 10 "$moddir/kill-dhclient.sh"
+-
+-    # install all config files for teaming
+-    unset TEAM_MASTER
+-    unset TEAM_CONFIG
+-    unset TEAM_PORT_CONFIG
+-    unset HWADDR
+-    unset SUBCHANNELS
+-    for i in /etc/sysconfig/network-scripts/ifcfg-*; do
+-        [ -e "$i" ] || continue
+-        case "$i" in
+-            *~ | *.bak | *.orig | *.rpmnew | *.rpmorig | *.rpmsave)
+-                continue
+-                ;;
+-        esac
+-        (
+-            . "$i"
+-            if ! [ "${ONBOOT}" = "no" -o "${ONBOOT}" = "NO" ] \
+-                    && [ -n "${TEAM_MASTER}${TEAM_CONFIG}${TEAM_PORT_CONFIG}" ]; then
+-                if [ -n "$TEAM_CONFIG" ] && [ -n "$DEVICE" ]; then
+-                    mkdir -p $initdir/etc/teamd
+-                    printf -- "%s" "$TEAM_CONFIG" > "$initdir/etc/teamd/${DEVICE}.conf"
+-                elif [ -n "$TEAM_PORT_CONFIG" ]; then
+-                    inst_simple "$i"
+-
+-                    HWADDR="$(echo $HWADDR | sed 'y/ABCDEF/abcdef/')"
+-                    if [ -n "$HWADDR" ]; then
+-                        ln_r "$i" "/etc/sysconfig/network-scripts/mac-${HWADDR}.conf"
+-                    fi
+-
+-                    SUBCHANNELS="$(echo $SUBCHANNELS | sed 'y/ABCDEF/abcdef/')"
+-                    if [ -n "$SUBCHANNELS" ]; then
+-                        ln_r "$i" "/etc/sysconfig/network-scripts/ccw-${SUBCHANNELS}.conf"
+-                    fi
+-                fi
+-            fi
+-        )
+-    done
+-
+-    _arch=$(uname -m)
+-
+-    inst_libdir_file {"tls/$_arch/",tls/,"$_arch/",}"libnss_dns.so.*" \
+-        {"tls/$_arch/",tls/,"$_arch/",}"libnss_mdns4_minimal.so.*"
+ 
+     dracut_need_initqueue
+ }
+-
+
diff --git a/0097.patch b/0097.patch
new file mode 100644
index 0000000..95b0689
--- /dev/null
+++ b/0097.patch
@@ -0,0 +1,133 @@
+From 08bdadbf315cced437385228b2434a02a19090e4 Mon Sep 17 00:00:00 2001
+From: Lubomir Rintel <lkundrak@v3.sk>
+Date: Thu, 30 Aug 2018 16:44:22 +0200
+Subject: [PATCH] network-manager: add module
+
+---
+ dracut.spec                                 |  1 +
+ modules.d/35network-manager/module-setup.sh | 52 +++++++++++++++++++++++++++++
+ modules.d/35network-manager/nm-config.sh    |  3 ++
+ modules.d/35network-manager/nm-run.sh       | 16 +++++++++
+ modules.d/40network/module-setup.sh         |  7 +++-
+ 5 files changed, 78 insertions(+), 1 deletion(-)
+
+diff --git a/dracut.spec b/dracut.spec
+index f6486d50..b6099824 100644
+--- a/dracut.spec
++++ b/dracut.spec
+@@ -419,6 +419,7 @@ install -m 0755 51-dracut-rescue-postinst.sh $RPM_BUILD_ROOT%{_sysconfdir}/kerne
+ 
+ %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
+diff --git a/modules.d/35network-manager/module-setup.sh b/modules.d/35network-manager/module-setup.sh
+new file mode 100755
+index 00000000..62aba3c6
+--- /dev/null
++++ b/modules.d/35network-manager/module-setup.sh
+@@ -0,0 +1,52 @@
++#!/bin/bash
++
++# called by dracut
++check() {
++    local _program
++
++    require_binaries sed grep || return 1
++
++    # do not add this module by default
++    return 255
++}
++
++# called by dracut
++depends() {
++    return 0
++}
++
++# called by dracut
++installkernel() {
++    return 0
++}
++
++# called by dracut
++install() {
++    local _nm_version
++
++    _nm_version=$(NetworkManager --version)
++
++    inst_multiple sed grep
++
++    inst NetworkManager
++    inst /usr/libexec/nm-initrd-generator
++    inst_multiple -o teamd dhclient
++    inst_hook cmdline 99 "$moddir/nm-config.sh"
++    inst_hook initqueue/settled 99 "$moddir/nm-run.sh"
++    inst_rules 85-nm-unmanaged.rules
++    inst_libdir_file "NetworkManager/$_nm_version/libnm-device-plugin-team.so"
++
++    if [[ -x "$initdir/usr/sbin/dhclient" ]]; then
++        inst /usr/libexec/nm-dhcp-helper
++    elif ! [[ -e "$initdir/etc/machine-id" ]]; then
++        # The internal DHCP client silently fails if we
++        # have no machine-id
++        systemd-machine-id-setup --root="$initdir"
++    fi
++
++    # We don't install the ifcfg files from the host automatically.
++    # But if the user chooses to include them, we pull in the machinery to read them.
++    if ! [[ -d "$initdir/etc/sysconfig/network-scripts" ]]; then
++        inst_libdir_file "NetworkManager/$_nm_version/libnm-settings-plugin-ifcfg-rh.so"
++    fi
++}
+diff --git a/modules.d/35network-manager/nm-config.sh b/modules.d/35network-manager/nm-config.sh
+new file mode 100755
+index 00000000..1339ebe7
+--- /dev/null
++++ b/modules.d/35network-manager/nm-config.sh
+@@ -0,0 +1,3 @@
++#!/bin/sh
++
++/usr/libexec/nm-initrd-generator -- $(getcmdline)
+diff --git a/modules.d/35network-manager/nm-run.sh b/modules.d/35network-manager/nm-run.sh
+new file mode 100755
+index 00000000..f6defa99
+--- /dev/null
++++ b/modules.d/35network-manager/nm-run.sh
+@@ -0,0 +1,16 @@
++#!/bin/sh
++
++if getargbool 0 rd.debug -d -y rdinitdebug -d -y rdnetdebug; then
++    /usr/sbin/NetworkManager --configure-and-quit=initrd --debug --log-level=trace
++else
++    /usr/sbin/NetworkManager --configure-and-quit=initrd --no-daemon
++fi
++
++for _i in /sys/class/net/*/
++do
++    state=/run/NetworkManager/devices/$(cat $_i/ifindex)
++    grep -q managed=true $state 2>/dev/null || continue
++    ifname=$(basename $_i)
++    sed -n 's/root-path/new_root_path/p' <$state >/tmp/dhclient.$ifname.dhcpopts
++    /sbin/netroot $ifname
++done
+diff --git a/modules.d/40network/module-setup.sh b/modules.d/40network/module-setup.sh
+index fbd43925..57c0a45e 100755
+--- a/modules.d/40network/module-setup.sh
++++ b/modules.d/40network/module-setup.sh
+@@ -2,7 +2,12 @@
+ 
+ # called by dracut
+ depends() {
+-    echo "network-legacy"
++    echo -n "kernel-network-modules "
++    if ! dracut_module_included "network-legacy" && [ -x "/usr/libexec/nm-initrd-generator" ] ; then
++        echo "network-manager"
++    else
++        echo "network-legacy"
++    fi
+     return 0
+ }
+ 
+
diff --git a/0098.patch b/0098.patch
new file mode 100644
index 0000000..bbf8f16
--- /dev/null
+++ b/0098.patch
@@ -0,0 +1,22 @@
+From 4be697e5c19f18a17ec18368ded0787d6f32baf5 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Fri, 21 Sep 2018 12:41:00 +0200
+Subject: [PATCH] dracut.spec: fixed invalid spec line
+
+---
+ dracut.spec | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/dracut.spec b/dracut.spec
+index b6099824..c6fbdc77 100644
+--- a/dracut.spec
++++ b/dracut.spec
+@@ -49,7 +49,7 @@ BuildRequires: docbook-style-xsl docbook-dtds libxslt
+ %endif
+ 
+ %if 0%{?suse_version}
+--BuildRequires: docbook-xsl-stylesheets libxslt
++BuildRequires: docbook-xsl-stylesheets libxslt
+ %endif
+ 
+ BuildRequires: asciidoc
diff --git a/dracut.spec b/dracut.spec
index 53ca5c7..4690c65 100644
--- a/dracut.spec
+++ b/dracut.spec
@@ -5,7 +5,7 @@
 # strip the automatically generated dep here and instead co-own the
 # directory.
 %global __requires_exclude pkg-config
-%define dist_free_release 14.git20180726
+%define dist_free_release 99.git20180921
 
 Name: dracut
 Version: 048
@@ -41,6 +41,91 @@ 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
+Patch70: 0070.patch
+Patch71: 0071.patch
+Patch72: 0072.patch
+Patch73: 0073.patch
+Patch74: 0074.patch
+Patch75: 0075.patch
+Patch76: 0076.patch
+Patch77: 0077.patch
+Patch78: 0078.patch
+Patch79: 0079.patch
+Patch80: 0080.patch
+Patch81: 0081.patch
+Patch82: 0082.patch
+Patch83: 0083.patch
+Patch84: 0084.patch
+Patch85: 0085.patch
+Patch86: 0086.patch
+Patch87: 0087.patch
+Patch88: 0088.patch
+Patch89: 0089.patch
+Patch90: 0090.patch
+Patch91: 0091.patch
+Patch92: 0092.patch
+Patch93: 0093.patch
+Patch94: 0094.patch
+Patch95: 0095.patch
+Patch96: 0096.patch
+Patch97: 0097.patch
+Patch98: 0098.patch
 
 Source1: https://www.gnu.org/licenses/lgpl-2.1.txt
 
@@ -63,7 +148,7 @@ BuildRequires: docbook-style-xsl docbook-dtds libxslt
 %endif
 
 %if 0%{?suse_version}
--BuildRequires: docbook-xsl-stylesheets libxslt
+BuildRequires: docbook-xsl-stylesheets libxslt
 %endif
 
 BuildRequires: asciidoc
@@ -192,6 +277,16 @@ 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: squash-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} .
@@ -249,6 +344,8 @@ 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
@@ -330,7 +427,12 @@ install -m 0755 51-dracut-rescue-postinst.sh $RPM_BUILD_ROOT%{_sysconfdir}/kerne
 %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
@@ -414,13 +516,10 @@ install -m 0755 51-dracut-rescue-postinst.sh $RPM_BUILD_ROOT%{_sysconfdir}/kerne
 %{_prefix}/lib/kernel/install.d/50-dracut.install
 %endif
 
-%if 0%{?fedora} || 0%{?rhel} || 0%{?suse_version}
-%defattr(-,root,root,0755)
-%{dracutlibdir}/modules.d/01fips
-%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
@@ -447,11 +546,13 @@ install -m 0755 51-dracut-rescue-postinst.sh $RPM_BUILD_ROOT%{_sysconfdir}/kerne
 %{dracutlibdir}/modules.d/90livenet
 
 %files tools
-
 %if %{with doc}
 %doc %{_mandir}/man8/dracut-catimages.8*
 %endif
 
+%files squash
+%{dracutlibdir}/modules.d/99squash
+
 %{_bindir}/dracut-catimages
 %dir /boot/dracut
 %dir /var/lib/dracut
@@ -469,6 +570,9 @@ install -m 0755 51-dracut-rescue-postinst.sh $RPM_BUILD_ROOT%{_sysconfdir}/kerne
 %endif
 
 %changelog
+* Fri Sep 21 2018 Harald Hoyer <harald@redhat.com> - 048-99.git20180921
+- git snapshot
+
 * Thu Jul 26 2018 Harald Hoyer <harald@redhat.com> - 048-14.git20180726
 - bring back 51-dracut-rescue-postinst.sh
 
diff --git a/newdracut.sh b/newdracut.sh
index 382d7b2..c53481d 100644
--- a/newdracut.sh
+++ b/newdracut.sh
@@ -1,6 +1,6 @@
 #!/bin/bash
 
-if [[ -e "$HOME/git/dracut/$1" ]]; then
+if [[ -f "$HOME/git/dracut/$1" ]]; then
     srcrpm="$HOME/git/dracut/$1"
 else
     srcrpm="$1"