summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--0005-add-documentation-for-systemd-services-in-the-initra.patch423
-rw-r--r--0006-kernel-modules-module-setup.sh-fix-modprobe.d-instal.patch27
-rw-r--r--0007-lvm-lvm_scan.sh-udevadm-settle-after-lvm-scan.patch20
-rw-r--r--0008-kernel-modules-module-setup.sh-just-optionally-insta.patch26
-rw-r--r--0009-i18n-10-console.rules-move-console_init-to-the-initq.patch17
-rw-r--r--0010-dracut-functions.sh-small-error-print-correction.patch22
-rw-r--r--0011-get-rid-of-basename.patch86
-rw-r--r--0012-90crypt-recognize-.img-as-loop-key-container.patch28
-rw-r--r--0013-90crypt-enhance-crypt-lib-keydev-mounting.patch46
-rw-r--r--0014-91crypt-loop-open-root-device-with-a-key-inside-encr.patch79
-rw-r--r--0015-91crypt-loop-use-initqueue-for-cleanup-strategy.patch40
-rw-r--r--0016-91crypt-loop-replace-basename-calls-with-string-matc.patch55
-rw-r--r--0017-deprecate-old-command-line-options.patch784
-rw-r--r--0018-require-kpartx-and-partx-for-some-modules.patch79
-rw-r--r--0019-iscsiroot.sh-do-not-source-etc-conf.d.patch23
-rw-r--r--0020-dracut.asc-add-doc-about-journalctl.patch36
-rw-r--r--0021-network-module-setup.sh-instmods-af_packet.patch21
-rw-r--r--0022-Makefile-honor-CFLAGS.patch30
-rw-r--r--0023-TODO-update.patch21
-rw-r--r--0024-qemu-module-setup.sh-provide-alternative-for-systemd.patch70
-rw-r--r--0025-Remove-object-file-from-repo-install-hashmap.o.patch274
-rw-r--r--0026-Makefile-use-implicit-rules-for-install-dracut-insta.patch77
-rw-r--r--0027-95fstab-sys-Skip-mounted-filesystem.patch22
-rw-r--r--0028-90multipath-check-Regexp-fix-to-match-multipath-part.patch30
-rw-r--r--0029-dmsquash-live-do-not-eject-medium-for-live_ram.patch35
-rw-r--r--0030-Remove-obsolete-gentoo-conf-file.patch43
-rw-r--r--0031-Config-file-for-systemd-on-Gentoo.patch21
-rw-r--r--0032-gentoo.conf-set-udevdir.patch22
-rw-r--r--0033-90kernel-modules-remove-unused-variables-in-install.patch25
-rw-r--r--0034-90multipath-added-kpartx.rules-multipath.rules-diffe.patch22
-rw-r--r--0035-Makefile-fixed-dracut-install-make-target.patch77
-rw-r--r--0036-multipath-module-setup.sh-add-dm-dependency.patch21
-rw-r--r--0037-Makefile-use-symlink-for-topsrcdir-dracut-install.patch85
-rw-r--r--0038-systemd-dracut-cmdline.sh-output-dracut-version.patch23
-rw-r--r--0039-95rootfs-block-fix-left-fsck-rel.-checks.patch42
-rw-r--r--0040-98usrmount-use-rw-and-ro-options-instead-of-rd.usrmo.patch78
-rw-r--r--0041-98usrmount-print-mount-options.patch22
-rw-r--r--0042-98usrmount-x-_usr_found-x-removed-redundant-x.patch23
-rw-r--r--0043-dracut-lib-new-functions-listlist-and-are_lists_eq.patch57
-rw-r--r--0044-apply-ro-and-rw-options-from-cmdline-to-mount.patch108
-rw-r--r--0045-modules.d-99base-mount-hook.sh-is-not-used-removed.patch187
-rw-r--r--0046-PATCH-add-support-for-xfs-reiserfs-separate-journal-.patch58
-rw-r--r--0047-dracut-functions.sh-add-find_mp_fstype.patch47
-rw-r--r--0048-rootfs-block-module-setup.sh-add-support-for-xfs-rei.patch68
-rw-r--r--0049-dracut-functions.sh-corrected-usage-comment-of-find_.patch31
-rw-r--r--0050-ro_mnt-option-at-build-time-to-force-ro-mount-of-and.patch100
-rw-r--r--0051-mv-rootfs-block-module-setup.sh-search_option-in-dra.patch82
-rw-r--r--0052-README.testsuite-updated-with-requirements-for-TEST-.patch19
-rw-r--r--0053-base-module-setup.sh-removed-mount-hook.patch21
-rw-r--r--0054-parse-root-opts-first-check-for-ro-later-for-rw.patch24
-rw-r--r--0055-nfs-module-setup.sh-check-for-rpc.rpc-before-running.patch24
-rw-r--r--0056-Added-cifs.patch227
-rw-r--r--0057-plymouth-do-not-start-plymouth-via-dracut-for-system.patch51
-rw-r--r--0058-gentoo.conf-enable-ro_mnt.patch21
-rw-r--r--0059-dracut-functions.sh-inst_rule_programs-fixed-IMPORT-.patch25
-rw-r--r--0060-install-dracut-install.c-convert-destrootdir-to-real.patch40
-rw-r--r--0061-dracut-functions.sh-inst_rule_programs-fix-error-mes.patch40
-rw-r--r--0062-dracut.spec-add-cifs-module.patch21
-rw-r--r--dracut.spec68
59 files changed, 4193 insertions, 1 deletions
diff --git a/0005-add-documentation-for-systemd-services-in-the-initra.patch b/0005-add-documentation-for-systemd-services-in-the-initra.patch
new file mode 100644
index 0000000..344a549
--- /dev/null
+++ b/0005-add-documentation-for-systemd-services-in-the-initra.patch
@@ -0,0 +1,423 @@
+From 13f77e9fd53682202bbd32faf8f9e55e0b99fec2 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Mon, 23 Jul 2012 11:10:13 +0200
+Subject: [PATCH] add documentation for systemd services in the initramfs
+
+---
+ Makefile | 52 +++++++++++++---------
+ dracut.spec | 1 +
+ modules.d/98systemd/dracut-cmdline.service | 1 +
+ modules.d/98systemd/dracut-cmdline.service.8.asc | 26 +++++++++++
+ modules.d/98systemd/dracut-initqueue.service | 1 +
+ modules.d/98systemd/dracut-initqueue.service.8.asc | 25 +++++++++++
+ modules.d/98systemd/dracut-pre-pivot.service | 1 +
+ modules.d/98systemd/dracut-pre-pivot.service.8.asc | 25 +++++++++++
+ modules.d/98systemd/dracut-pre-trigger.service | 1 +
+ .../98systemd/dracut-pre-trigger.service.8.asc | 25 +++++++++++
+ modules.d/98systemd/dracut-pre-udev.service | 1 +
+ modules.d/98systemd/dracut-pre-udev.service.8.asc | 25 +++++++++++
+ modules.d/98systemd/initrd-switch-root.service | 1 +
+ .../98systemd/initrd-switch-root.service.8.asc | 25 +++++++++++
+ modules.d/98systemd/udevadm-cleanup-db.service | 1 +
+ .../98systemd/udevadm-cleanup-db.service.8.asc | 25 +++++++++++
+ 16 files changed, 215 insertions(+), 21 deletions(-)
+ create mode 100644 modules.d/98systemd/dracut-cmdline.service.8.asc
+ create mode 100644 modules.d/98systemd/dracut-initqueue.service.8.asc
+ create mode 100644 modules.d/98systemd/dracut-pre-pivot.service.8.asc
+ create mode 100644 modules.d/98systemd/dracut-pre-trigger.service.8.asc
+ create mode 100644 modules.d/98systemd/dracut-pre-udev.service.8.asc
+ create mode 100644 modules.d/98systemd/initrd-switch-root.service.8.asc
+ create mode 100644 modules.d/98systemd/udevadm-cleanup-db.service.8.asc
+
+diff --git a/Makefile b/Makefile
+index 0b29161..548952d 100644
+--- a/Makefile
++++ b/Makefile
+@@ -9,28 +9,41 @@ sysconfdir ?= ${prefix}/etc
+ bindir ?= ${prefix}/bin
+ mandir ?= ${prefix}/share/man
+
+-manpages = dracut.8 \
+- dracut.cmdline.7 \
+- dracut.conf.5 \
+- dracut-catimages.8 \
+- lsinitrd.1 \
+- mkinitrd.8
++man1pages = lsinitrd.1
++
++man5pages = dracut.conf.5
++
++man7pages = dracut.cmdline.7
++
++man8pages = dracut.8 \
++ dracut-catimages.8 \
++ mkinitrd.8 \
++ modules.d/98systemd/dracut-cmdline.service.8 \
++ modules.d/98systemd/dracut-initqueue.service.8 \
++ modules.d/98systemd/dracut-pre-pivot.service.8 \
++ modules.d/98systemd/dracut-pre-trigger.service.8 \
++ modules.d/98systemd/dracut-pre-udev.service.8 \
++ modules.d/98systemd/initrd-switch-root.service.8 \
++ modules.d/98systemd/udevadm-cleanup-db.service.8
++
++manpages = $(man1pages) $(man5pages) $(man7pages) $(man8pages)
++
+
+ .PHONY: install clean archive rpm testimage test all check AUTHORS doc
+
+ all: syncheck dracut-version.sh dracut-install
+
+ DRACUT_INSTALL_SOURCE = \
+- install/dracut-install.c \
+- install/hashmap.c\
+- install/log.c \
+- install/util.c
++ install/dracut-install.c \
++ install/hashmap.c\
++ install/log.c \
++ install/util.c
+
+ DRACUT_INSTALL_HEADER = \
+- install/hashmap.h \
+- install/log.h \
+- install/macro.h \
+- install/util.h
++ install/hashmap.h \
++ install/log.h \
++ install/macro.h \
++ install/util.h
+
+ dracut-install: $(DRACUT_INSTALL_SOURCE) $(DRACUT_INSTALL_HEADER)
+ gcc -std=gnu99 -O2 -g -Wall -o dracut-install $(DRACUT_INSTALL_SOURCE)
+@@ -73,13 +86,10 @@ install: doc dracut-version.sh
+ install -m 0755 dracut-logger.sh $(DESTDIR)$(pkglibdir)/dracut-logger.sh
+ install -m 0755 dracut-initramfs-restore.sh $(DESTDIR)$(pkglibdir)/dracut-initramfs-restore
+ cp -arx modules.d $(DESTDIR)$(pkglibdir)
+- install -m 0644 lsinitrd.1 $(DESTDIR)$(mandir)/man1/lsinitrd.1
+- install -m 0644 mkinitrd.8 $(DESTDIR)$(mandir)/man8/mkinitrd.8
+- install -m 0644 dracut.8 $(DESTDIR)$(mandir)/man8/dracut.8
+- install -m 0644 dracut-catimages.8 \
+- $(DESTDIR)$(mandir)/man8/dracut-catimages.8
+- install -m 0644 dracut.conf.5 $(DESTDIR)$(mandir)/man5/dracut.conf.5
+- install -m 0644 dracut.cmdline.7 $(DESTDIR)$(mandir)/man7/dracut.cmdline.7
++ for i in $(man1pages); do install -m 0644 $$i $(DESTDIR)$(mandir)/man1/$${i##*/}; done
++ for i in $(man5pages); do install -m 0644 $$i $(DESTDIR)$(mandir)/man5/$${i##*/}; done
++ for i in $(man7pages); do install -m 0644 $$i $(DESTDIR)$(mandir)/man7/$${i##*/}; done
++ for i in $(man8pages); do install -m 0644 $$i $(DESTDIR)$(mandir)/man8/$${i##*/}; done
+ ln -s dracut.cmdline.7 $(DESTDIR)$(mandir)/man7/dracut.kernel.7
+ if [ -n "$(systemdsystemunitdir)" ]; then \
+ mkdir -p $(DESTDIR)$(systemdsystemunitdir); \
+diff --git a/dracut.spec b/dracut.spec
+index 25e48a2..9a93e57 100644
+--- a/dracut.spec
++++ b/dracut.spec
+@@ -258,6 +258,7 @@ rm -rf $RPM_BUILD_ROOT
+ %endif
+ %dir /etc/dracut.conf.d
+ %{_mandir}/man8/dracut.8*
++%{_mandir}/man8/*service.8*
+ %if 0%{?fedora} > 12 || 0%{?rhel} >= 6 || 0%{?suse_version} > 9999
+ %{_mandir}/man8/mkinitrd.8*
+ %{_mandir}/man1/lsinitrd.1*
+diff --git a/modules.d/98systemd/dracut-cmdline.service b/modules.d/98systemd/dracut-cmdline.service
+index 1ed50a9..5073dbd 100644
+--- a/modules.d/98systemd/dracut-cmdline.service
++++ b/modules.d/98systemd/dracut-cmdline.service
+@@ -9,6 +9,7 @@
+
+ [Unit]
+ Description=Dracut cmdline hook
++Documentation=man:dracut-cmdline.service(8)
+ DefaultDependencies=no
+ Before=dracut-pre-udev.service
+ After=systemd-journald.socket
+diff --git a/modules.d/98systemd/dracut-cmdline.service.8.asc b/modules.d/98systemd/dracut-cmdline.service.8.asc
+new file mode 100644
+index 0000000..eaed6aa
+--- /dev/null
++++ b/modules.d/98systemd/dracut-cmdline.service.8.asc
+@@ -0,0 +1,26 @@
++DRACUT-CMDLINE.SERVICE(8)
++=========================
++:doctype: manpage
++:man source: dracut
++:man manual: dracut
++
++NAME
++----
++dracut-cmdline.service - runs the dracut hooks to parse the kernel command line
++
++SYNOPSIS
++--------
++dracut-cmdline.service
++
++DESCRIPTION
++-----------
++This service runs all the dracut hooks to parse the kernel command line in
++the initramfs.
++
++AUTHORS
++-------
++Harald Hoyer
++
++SEE ALSO
++--------
++*dracut*(8)
+diff --git a/modules.d/98systemd/dracut-initqueue.service b/modules.d/98systemd/dracut-initqueue.service
+index e611e93..f43aa21 100644
+--- a/modules.d/98systemd/dracut-initqueue.service
++++ b/modules.d/98systemd/dracut-initqueue.service
+@@ -9,6 +9,7 @@
+
+ [Unit]
+ Description=Dracut initqueue hook
++Documentation=man:dracut-initqueue.service(8)
+ DefaultDependencies=no
+ After=systemd-udev-trigger.service
+ Wants=systemd-udev-trigger.service
+diff --git a/modules.d/98systemd/dracut-initqueue.service.8.asc b/modules.d/98systemd/dracut-initqueue.service.8.asc
+new file mode 100644
+index 0000000..d405d04
+--- /dev/null
++++ b/modules.d/98systemd/dracut-initqueue.service.8.asc
+@@ -0,0 +1,25 @@
++DRACUT-INITQUEUE.SERVICE(8)
++===========================
++:doctype: manpage
++:man source: dracut
++:man manual: dracut
++
++NAME
++----
++dracut-initqueue.service - runs the dracut main loop to find the real root
++
++SYNOPSIS
++--------
++dracut-initqueue.service
++
++DESCRIPTION
++-----------
++This service runs all the main loop of dracut in the initramfs to find the real root.
++
++AUTHORS
++-------
++Harald Hoyer
++
++SEE ALSO
++--------
++*dracut*(8)
+diff --git a/modules.d/98systemd/dracut-pre-pivot.service b/modules.d/98systemd/dracut-pre-pivot.service
+index 317b476..25ef697 100644
+--- a/modules.d/98systemd/dracut-pre-pivot.service
++++ b/modules.d/98systemd/dracut-pre-pivot.service
+@@ -9,6 +9,7 @@
+
+ [Unit]
+ Description=Dracut pre-pivot and cleanup hook
++Documentation=man:dracut-pre-pivot.service(8)
+ DefaultDependencies=no
+ After=dracut-initqueue.service
+ ConditionPathExists=/etc/initrd-release
+diff --git a/modules.d/98systemd/dracut-pre-pivot.service.8.asc b/modules.d/98systemd/dracut-pre-pivot.service.8.asc
+new file mode 100644
+index 0000000..2e19a6e
+--- /dev/null
++++ b/modules.d/98systemd/dracut-pre-pivot.service.8.asc
+@@ -0,0 +1,25 @@
++DRACUT-PRE-PIVOT.SERVICE(8)
++===========================
++:doctype: manpage
++:man source: dracut
++:man manual: dracut
++
++NAME
++----
++dracut-pre-pivot.service - runs the dracut hooks before switching root
++
++SYNOPSIS
++--------
++dracut-pre-pivot.service
++
++DESCRIPTION
++-----------
++This service runs all dracut hooks before the system switched to the real root.
++
++AUTHORS
++-------
++Harald Hoyer
++
++SEE ALSO
++--------
++*dracut*(8)
+diff --git a/modules.d/98systemd/dracut-pre-trigger.service b/modules.d/98systemd/dracut-pre-trigger.service
+index b2dcf68..468249b 100644
+--- a/modules.d/98systemd/dracut-pre-trigger.service
++++ b/modules.d/98systemd/dracut-pre-trigger.service
+@@ -9,6 +9,7 @@
+
+ [Unit]
+ Description=Dracut pre-trigger hook
++Documentation=man:dracut-pre-trigger.service(8)
+ DefaultDependencies=no
+ Before=systemd-udev-trigger.service dracut-initqueue.service
+ After=dracut-pre-udev.service systemd-udevd.service
+diff --git a/modules.d/98systemd/dracut-pre-trigger.service.8.asc b/modules.d/98systemd/dracut-pre-trigger.service.8.asc
+new file mode 100644
+index 0000000..7a856a9
+--- /dev/null
++++ b/modules.d/98systemd/dracut-pre-trigger.service.8.asc
+@@ -0,0 +1,25 @@
++DRACUT-PRE-TRIGGER.SERVICE(8)
++=============================
++:doctype: manpage
++:man source: dracut
++:man manual: dracut
++
++NAME
++----
++dracut-pre-trigger.service - runs the dracut hooks before udevd is triggered
++
++SYNOPSIS
++--------
++dracut-pre-trigger.service
++
++DESCRIPTION
++-----------
++This service runs all dracut hooks before udevd is triggered in the initramfs.
++
++AUTHORS
++-------
++Harald Hoyer
++
++SEE ALSO
++--------
++*dracut*(8)
+diff --git a/modules.d/98systemd/dracut-pre-udev.service b/modules.d/98systemd/dracut-pre-udev.service
+index cc14f88..bedcf84 100644
+--- a/modules.d/98systemd/dracut-pre-udev.service
++++ b/modules.d/98systemd/dracut-pre-udev.service
+@@ -9,6 +9,7 @@
+
+ [Unit]
+ Description=Dracut pre-udev hook
++Documentation=man:dracut-pre-udev.service(8)
+ DefaultDependencies=no
+ Before=systemd-udevd.service dracut-pre-trigger.service
+ After=dracut-cmdline.service
+diff --git a/modules.d/98systemd/dracut-pre-udev.service.8.asc b/modules.d/98systemd/dracut-pre-udev.service.8.asc
+new file mode 100644
+index 0000000..2126d46
+--- /dev/null
++++ b/modules.d/98systemd/dracut-pre-udev.service.8.asc
+@@ -0,0 +1,25 @@
++DRACUT-PRE-UDEV.SERVICE(8)
++==========================
++:doctype: manpage
++:man source: dracut
++:man manual: dracut
++
++NAME
++----
++dracut-pre-udev.service - runs the dracut hooks before udevd is started
++
++SYNOPSIS
++--------
++dracut-pre-udev.service
++
++DESCRIPTION
++-----------
++This service runs all dracut hooks before udevd is started in the initramfs.
++
++AUTHORS
++-------
++Harald Hoyer
++
++SEE ALSO
++--------
++*dracut*(8)
+diff --git a/modules.d/98systemd/initrd-switch-root.service b/modules.d/98systemd/initrd-switch-root.service
+index b443eab..bd9fb31 100644
+--- a/modules.d/98systemd/initrd-switch-root.service
++++ b/modules.d/98systemd/initrd-switch-root.service
+@@ -7,6 +7,7 @@
+
+ [Unit]
+ Description=Switch Root
++Documentation=man:initrd-switch-root.service(8)
+ DefaultDependencies=no
+ ConditionPathExists=/etc/initrd-release
+ OnFailure=emergency.service
+diff --git a/modules.d/98systemd/initrd-switch-root.service.8.asc b/modules.d/98systemd/initrd-switch-root.service.8.asc
+new file mode 100644
+index 0000000..73d5c91
+--- /dev/null
++++ b/modules.d/98systemd/initrd-switch-root.service.8.asc
+@@ -0,0 +1,25 @@
++INITRD-SWITCH-ROOT.SERVICE(8)
++=============================
++:doctype: manpage
++:man source: dracut
++:man manual: dracut
++
++NAME
++----
++initrd-switch-root.service - switches root to the real root
++
++SYNOPSIS
++--------
++initrd-switch-root.service
++
++DESCRIPTION
++-----------
++This service triggers systemd to switch root from the initramfs to the real root.
++
++AUTHORS
++-------
++Harald Hoyer
++
++SEE ALSO
++--------
++*dracut*(8)
+diff --git a/modules.d/98systemd/udevadm-cleanup-db.service b/modules.d/98systemd/udevadm-cleanup-db.service
+index 7e47946..fba032a 100644
+--- a/modules.d/98systemd/udevadm-cleanup-db.service
++++ b/modules.d/98systemd/udevadm-cleanup-db.service
+@@ -7,6 +7,7 @@
+
+ [Unit]
+ Description=Cleanup udevd DB
++Documentation=man:udevadm-cleanup-db.service(8)
+ DefaultDependencies=no
+ ConditionPathExists=/etc/initrd-release
+ Conflicts=systemd-udevd.service systemd-udevd-control.socket systemd-udevd-kernel.socket
+diff --git a/modules.d/98systemd/udevadm-cleanup-db.service.8.asc b/modules.d/98systemd/udevadm-cleanup-db.service.8.asc
+new file mode 100644
+index 0000000..7837127
+--- /dev/null
++++ b/modules.d/98systemd/udevadm-cleanup-db.service.8.asc
+@@ -0,0 +1,25 @@
++UDEVADM-CLEANUP-DB.SERVICE(8)
++=============================
++:doctype: manpage
++:man source: dracut
++:man manual: dracut
++
++NAME
++----
++udevadm-cleanup-db.service - clean up the udev database
++
++SYNOPSIS
++--------
++udevadm-cleanup-db.service
++
++DESCRIPTION
++-----------
++Cleans up the udev database for later import in the real root by calling "udevadm info --cleanup-db".
++
++AUTHORS
++-------
++Harald Hoyer
++
++SEE ALSO
++--------
++*dracut*(8)
diff --git a/0006-kernel-modules-module-setup.sh-fix-modprobe.d-instal.patch b/0006-kernel-modules-module-setup.sh-fix-modprobe.d-instal.patch
new file mode 100644
index 0000000..219c53a
--- /dev/null
+++ b/0006-kernel-modules-module-setup.sh-fix-modprobe.d-instal.patch
@@ -0,0 +1,27 @@
+From b7c8f59fef3a2a36726f5ea988b74ba6bf1da695 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Mon, 23 Jul 2012 11:38:36 +0200
+Subject: [PATCH] kernel-modules/module-setup.sh: fix modprobe.d install
+
+if /lib/modprobe.d does not exist, it errors with:
+find: `/lib/modprobe.d/': No such file or directory
+---
+ modules.d/90kernel-modules/module-setup.sh | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/modules.d/90kernel-modules/module-setup.sh b/modules.d/90kernel-modules/module-setup.sh
+index f309de8..5391ed7 100755
+--- a/modules.d/90kernel-modules/module-setup.sh
++++ b/modules.d/90kernel-modules/module-setup.sh
+@@ -77,7 +77,10 @@ installkernel() {
+ install() {
+ local _f i
+ [ -f /etc/modprobe.conf ] && dracut_install /etc/modprobe.conf
+- dracut_install $(find -L /{etc,lib}/modprobe.d/ -maxdepth 1 -type f -name '*.conf')
++ set -- /{etc,lib}/modprobe.d/*.conf
++ if [[ -f $1 ]]; then
++ dracut_install "$@"
++ fi
+ inst_hook cmdline 01 "$moddir/parse-kernel.sh"
+ inst_simple "$moddir/insmodpost.sh" /sbin/insmodpost.sh
+ }
diff --git a/0007-lvm-lvm_scan.sh-udevadm-settle-after-lvm-scan.patch b/0007-lvm-lvm_scan.sh-udevadm-settle-after-lvm-scan.patch
new file mode 100644
index 0000000..881391c
--- /dev/null
+++ b/0007-lvm-lvm_scan.sh-udevadm-settle-after-lvm-scan.patch
@@ -0,0 +1,20 @@
+From 5297d4f5b2167d26fee368d8014bd72ed93538a4 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Mon, 23 Jul 2012 15:36:58 +0200
+Subject: [PATCH] lvm/lvm_scan.sh: udevadm settle after lvm scan
+
+---
+ modules.d/90lvm/lvm_scan.sh | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/modules.d/90lvm/lvm_scan.sh b/modules.d/90lvm/lvm_scan.sh
+index 17c29bc..d86be9b 100755
+--- a/modules.d/90lvm/lvm_scan.sh
++++ b/modules.d/90lvm/lvm_scan.sh
+@@ -129,4 +129,6 @@ if [ "$lvmwritten" ]; then
+ fi
+ unset lvmwritten
+
++udevadm settle
++
+ need_shutdown
diff --git a/0008-kernel-modules-module-setup.sh-just-optionally-insta.patch b/0008-kernel-modules-module-setup.sh-just-optionally-insta.patch
new file mode 100644
index 0000000..1878dcc
--- /dev/null
+++ b/0008-kernel-modules-module-setup.sh-just-optionally-insta.patch
@@ -0,0 +1,26 @@
+From 3e624cd9dc33f842a33a7152d613866569256df4 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Mon, 23 Jul 2012 15:40:20 +0200
+Subject: [PATCH] kernel-modules/module-setup.sh: just optionally install all
+ modprobe.d
+
+---
+ modules.d/90kernel-modules/module-setup.sh | 5 +----
+ 1 file changed, 1 insertion(+), 4 deletions(-)
+
+diff --git a/modules.d/90kernel-modules/module-setup.sh b/modules.d/90kernel-modules/module-setup.sh
+index 5391ed7..1632367 100755
+--- a/modules.d/90kernel-modules/module-setup.sh
++++ b/modules.d/90kernel-modules/module-setup.sh
+@@ -77,10 +77,7 @@ installkernel() {
+ install() {
+ local _f i
+ [ -f /etc/modprobe.conf ] && dracut_install /etc/modprobe.conf
+- set -- /{etc,lib}/modprobe.d/*.conf
+- if [[ -f $1 ]]; then
+- dracut_install "$@"
+- fi
++ dracut_install -o /{etc,lib}/modprobe.d/*.conf
+ inst_hook cmdline 01 "$moddir/parse-kernel.sh"
+ inst_simple "$moddir/insmodpost.sh" /sbin/insmodpost.sh
+ }
diff --git a/0009-i18n-10-console.rules-move-console_init-to-the-initq.patch b/0009-i18n-10-console.rules-move-console_init-to-the-initq.patch
new file mode 100644
index 0000000..c572509
--- /dev/null
+++ b/0009-i18n-10-console.rules-move-console_init-to-the-initq.patch
@@ -0,0 +1,17 @@
+From cef379bb0391356ecb9dd01a30e7af5bc8f19655 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Tue, 24 Jul 2012 11:52:28 +0200
+Subject: [PATCH] i18n/10-console.rules: move console_init to the initqueue
+
+---
+ modules.d/10i18n/10-console.rules | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/modules.d/10i18n/10-console.rules b/modules.d/10i18n/10-console.rules
+index 80ed090..385dff0 100644
+--- a/modules.d/10i18n/10-console.rules
++++ b/modules.d/10i18n/10-console.rules
+@@ -1,2 +1,2 @@
+ # Console initialization - keyboard, font, etc.
+-KERNEL=="tty0", RUN+="/lib/udev/console_init $root/$name"
++KERNEL=="tty0", RUN+="/sbin/initqueue --unique --name console_init_$name /lib/udev/console_init $root/$name"
diff --git a/0010-dracut-functions.sh-small-error-print-correction.patch b/0010-dracut-functions.sh-small-error-print-correction.patch
new file mode 100644
index 0000000..54ded22
--- /dev/null
+++ b/0010-dracut-functions.sh-small-error-print-correction.patch
@@ -0,0 +1,22 @@
+From f2271428d4760c7026dda9093c14fb1bf9035691 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Tue, 24 Jul 2012 14:08:32 +0200
+Subject: [PATCH] dracut-functions.sh: small error print correction
+
+---
+ dracut-functions.sh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/dracut-functions.sh b/dracut-functions.sh
+index 6358078..7f834f0 100755
+--- a/dracut-functions.sh
++++ b/dracut-functions.sh
+@@ -1135,7 +1135,7 @@ for_each_module_dir() {
+ for _mod in $_modcheck; do
+ strstr "$mods_to_load" "$_mod" && continue
+ strstr "$omit_dracutmodules" "$_mod" && continue
+- derror "Dracut module \"$_mod\" cannot be found or installed."
++ derror "Dracut module '$_mod' cannot be found or installed."
+ done
+ }
+
diff --git a/0011-get-rid-of-basename.patch b/0011-get-rid-of-basename.patch
new file mode 100644
index 0000000..aaf230c
--- /dev/null
+++ b/0011-get-rid-of-basename.patch
@@ -0,0 +1,86 @@
+From c072e131622f41ed90cf0d1510c96dd7cb0aad7a Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Tue, 24 Jul 2012 14:12:36 +0200
+Subject: [PATCH] get rid of "basename"
+
+---
+ dracut-functions.sh | 12 ++++++------
+ lsinitrd.sh | 2 +-
+ modules.d/95udev-rules/module-setup.sh | 2 +-
+ 3 files changed, 8 insertions(+), 8 deletions(-)
+
+diff --git a/dracut-functions.sh b/dracut-functions.sh
+index 7f834f0..14c100d 100755
+--- a/dracut-functions.sh
++++ b/dracut-functions.sh
+@@ -710,12 +710,12 @@ inst_rule_programs() {
+ _bin=${udevdir}/$_prog
+ else
+ _bin=$(find_binary "$_prog") || {
+- dinfo "Skipping program $_prog using in udev rule $(basename $1) as it cannot be found"
++ dinfo "Skipping program $_prog using in udev rule $(${1##*/}) as it cannot be found"
+ continue;
+ }
+ fi
+
+- #dinfo "Installing $_bin due to it's use in the udev rule $(basename $1)"
++ #dinfo "Installing $_bin due to it's use in the udev rule $(${1##*/})"
+ dracut_install "$_bin"
+ done
+ fi
+@@ -725,12 +725,12 @@ inst_rule_programs() {
+ _bin=${udevdir}/$_prog
+ else
+ _bin=$(find_binary "$_prog") || {
+- dinfo "Skipping program $_prog using in udev rule $(basename $1) as it cannot be found"
++ dinfo "Skipping program $_prog using in udev rule $(${1##*/}) as it cannot be found"
+ continue;
+ }
+ fi
+
+- #dinfo "Installing $_bin due to it's use in the udev rule $(basename $1)"
++ #dinfo "Installing $_bin due to it's use in the udev rule $(${1##*/})"
+ dracut_install "$_bin"
+ done
+ fi
+@@ -740,12 +740,12 @@ inst_rule_programs() {
+ _bin=${udevdir}/$_prog
+ else
+ _bin=$(find_binary "$_prog") || {
+- dinfo "Skipping program $_prog using in udev rule $(basename $1) as it cannot be found"
++ dinfo "Skipping program $_prog using in udev rule $(${1##*/}) as it cannot be found"
+ continue;
+ }
+ fi
+
+- #dinfo "Installing $_bin due to it's use in the udev rule $(basename $1)"
++ #dinfo "Installing $_bin due to it's use in the udev rule $(${1##*/})"
+ dracut_install "$_bin"
+ done
+ fi
+diff --git a/lsinitrd.sh b/lsinitrd.sh
+index a844932..3d6084d 100755
+--- a/lsinitrd.sh
++++ b/lsinitrd.sh
+@@ -21,7 +21,7 @@
+
+ usage()
+ {
+- echo "Usage: $(basename $0) [-s] [<initramfs file> [<filename>]]"
++ echo "Usage: $(${0##*/}) [-s] [<initramfs file> [<filename>]]"
+ }
+
+ [[ $# -le 2 ]] || { usage ; exit 1 ; }
+diff --git a/modules.d/95udev-rules/module-setup.sh b/modules.d/95udev-rules/module-setup.sh
+index 90d4336..2e3c955 100755
+--- a/modules.d/95udev-rules/module-setup.sh
++++ b/modules.d/95udev-rules/module-setup.sh
+@@ -8,7 +8,7 @@ install() {
+ # Fixme: would be nice if we didn't have to know which rules to grab....
+ # ultimately, /lib/initramfs/rules.d or somesuch which includes links/copies
+ # of the rules we want so that we just copy those in would be best
+- dracut_install udevadm cat uname basename blkid \
++ dracut_install udevadm cat uname blkid \
+ /etc/udev/udev.conf /etc/group
+
+ [ -d ${initdir}/lib/systemd ] || mkdir -p ${initdir}/lib/systemd
diff --git a/0012-90crypt-recognize-.img-as-loop-key-container.patch b/0012-90crypt-recognize-.img-as-loop-key-container.patch
new file mode 100644
index 0000000..303a0bb
--- /dev/null
+++ b/0012-90crypt-recognize-.img-as-loop-key-container.patch
@@ -0,0 +1,28 @@
+From 3e9b4330a98687fe8b1f50c122bb30c42c4413ae Mon Sep 17 00:00:00 2001
+From: Leho Kraav <leho@kraav.com>
+Date: Tue, 24 Jul 2012 15:08:51 +0300
+Subject: [PATCH] 90crypt: recognize .img as loop key container
+
+---
+ modules.d/90crypt/crypt-lib.sh | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+diff --git a/modules.d/90crypt/crypt-lib.sh b/modules.d/90crypt/crypt-lib.sh
+index 5d0b272..3aed84d 100755
+--- a/modules.d/90crypt/crypt-lib.sh
++++ b/modules.d/90crypt/crypt-lib.sh
+@@ -177,6 +177,14 @@ readkey() {
+ die "No GPG support to decrypt '$keypath' on '$keydev'."
+ fi
+ ;;
++ img)
++ if [ -f /lib/dracut-crypt-loop-lib.sh ]; then
++ . /lib/dracut-crypt-loop-lib.sh
++ loop_decrypt "$mntp" "$keypath" "$keydev" "$device"
++ else
++ die "No loop file support to decrypt '$keypath' on '$keydev'."
++ fi
++ ;;
+ *) cat "$mntp/$keypath" ;;
+ esac
+
diff --git a/0013-90crypt-enhance-crypt-lib-keydev-mounting.patch b/0013-90crypt-enhance-crypt-lib-keydev-mounting.patch
new file mode 100644
index 0000000..af90416
--- /dev/null
+++ b/0013-90crypt-enhance-crypt-lib-keydev-mounting.patch
@@ -0,0 +1,46 @@
+From c5758f20902b37e3232cd6a1b79f914155457ffd Mon Sep 17 00:00:00 2001
+From: Leho Kraav <leho@kraav.com>
+Date: Tue, 24 Jul 2012 15:08:52 +0300
+Subject: [PATCH] 90crypt: enhance crypt-lib keydev mounting
+
+Combining $keydev and $keypath should result in a unique, re-usable keydev
+mountpoint. mkuniqdir doesn't seem to have any an advantage here and lacks
+reusability. Is there ever a use case where these are true:
+
+ * there are more than one rd.luks.key=$keypath:$keydev
+ * one is actually different from the other
+---
+ modules.d/90crypt/crypt-lib.sh | 13 +++++++++++--
+ 1 file changed, 11 insertions(+), 2 deletions(-)
+
+diff --git a/modules.d/90crypt/crypt-lib.sh b/modules.d/90crypt/crypt-lib.sh
+index 3aed84d..5f7567e 100755
+--- a/modules.d/90crypt/crypt-lib.sh
++++ b/modules.d/90crypt/crypt-lib.sh
+@@ -165,8 +165,15 @@ readkey() {
+ local keydev="$2"
+ local device="$3"
+
+- local mntp=$(mkuniqdir /mnt keydev)
+- mount -r "$keydev" "$mntp" || die 'Mounting rem. dev. failed!'
++ # This creates a unique single mountpoint for *, or several for explicitly
++ # given LUKS devices. It accomplishes unlocking multiple LUKS devices with
++ # a single password entry.
++ local mntp="/mnt/$(str_replace "keydev-$keydev-$keypath" '/' '-')"
++
++ if [ ! -d "$mntp" ]; then
++ mkdir "$mntp"
++ mount -r "$keydev" "$mntp" || die 'Mounting rem. dev. failed!'
++ fi
+
+ case "${keypath##*.}" in
+ gpg)
+@@ -188,6 +195,8 @@ readkey() {
+ *) cat "$mntp/$keypath" ;;
+ esac
+
++ # General unmounting mechanism, modules doing custom cleanup should return earlier
++ # and install a pre-pivot cleanup hook
+ umount "$mntp"
+ rmdir "$mntp"
+ }
diff --git a/0014-91crypt-loop-open-root-device-with-a-key-inside-encr.patch b/0014-91crypt-loop-open-root-device-with-a-key-inside-encr.patch
new file mode 100644
index 0000000..4f06254
--- /dev/null
+++ b/0014-91crypt-loop-open-root-device-with-a-key-inside-encr.patch
@@ -0,0 +1,79 @@
+From f855f9daafe8f5f53c5bf78188587a18e9aca142 Mon Sep 17 00:00:00 2001
+From: Leho Kraav <leho@kraav.com>
+Date: Tue, 24 Jul 2012 15:08:53 +0300
+Subject: [PATCH] 91crypt-loop: open root device with a key inside encrypted
+ loop container
+
+---
+ modules.d/91crypt-loop/crypt-loop-lib.sh | 40 ++++++++++++++++++++++++++++++++
+ modules.d/91crypt-loop/module-setup.sh | 14 +++++++++++
+ 2 files changed, 54 insertions(+)
+ create mode 100644 modules.d/91crypt-loop/crypt-loop-lib.sh
+ create mode 100644 modules.d/91crypt-loop/module-setup.sh
+
+diff --git a/modules.d/91crypt-loop/crypt-loop-lib.sh b/modules.d/91crypt-loop/crypt-loop-lib.sh
+new file mode 100644
+index 0000000..63a553c
+--- /dev/null
++++ b/modules.d/91crypt-loop/crypt-loop-lib.sh
+@@ -0,0 +1,40 @@
++#!/bin/sh
++# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
++# ex: ts=4 sw=4 sts=0 et filetype=sh
++
++command -v ask_for_password >/dev/null || . /lib/dracut-crypt-lib.sh
++
++# loop_decrypt mnt_point keypath keydev device
++#
++# Decrypts symmetrically encrypted key to standard output.
++#
++# mnt_point - mount point where <keydev> is already mounted
++# keypath - LUKS encrypted loop file path relative to <mnt_point>
++# keydev - device on which key resides; only to display in prompt
++# device - device to be opened by cryptsetup; only to display in prompt
++loop_decrypt() {
++ local mntp="$1"
++ local keypath="$2"
++ local keydev="$3"
++ local device="$4"
++
++ local key="/dev/mapper/$(basename $mntp)"
++
++ if [ ! -b $key ]; then
++ info "Keyfile has .img suffix, treating it as LUKS-encrypted loop keyfile container to unlock $device"
++
++ local loopdev=$(losetup -f "${mntp}/${keypath}" --show)
++ local opts="-d - luksOpen $loopdev $(basename $key)"
++
++ ask_for_password \
++ --cmd "cryptsetup $opts" \
++ --prompt "Password ($keypath on $keydev for $device)" \
++ --tty-echo-off
++
++ [ -b $key ] || die "Tried setting it up, but keyfile block device was still not found!"
++ else
++ info "Existing keyfile found, re-using it for $device"
++ fi
++
++ cat $key
++}
+diff --git a/modules.d/91crypt-loop/module-setup.sh b/modules.d/91crypt-loop/module-setup.sh
+new file mode 100644
+index 0000000..8170694
+--- /dev/null
++++ b/modules.d/91crypt-loop/module-setup.sh
+@@ -0,0 +1,14 @@
++check() {
++ type -P losetup >/dev/null || return 1
++
++ return 255
++}
++
++depends() {
++ echo crypt
++}
++
++install() {
++ dracut_install losetup
++ inst "$moddir/crypt-loop-lib.sh" "/lib/dracut-crypt-loop-lib.sh"
++}
diff --git a/0015-91crypt-loop-use-initqueue-for-cleanup-strategy.patch b/0015-91crypt-loop-use-initqueue-for-cleanup-strategy.patch
new file mode 100644
index 0000000..0d0a407
--- /dev/null
+++ b/0015-91crypt-loop-use-initqueue-for-cleanup-strategy.patch
@@ -0,0 +1,40 @@
+From df68781fca048de2f880be37ab9e1ede9bea5051 Mon Sep 17 00:00:00 2001
+From: Leho Kraav <leho@kraav.com>
+Date: Tue, 24 Jul 2012 15:08:54 +0300
+Subject: [PATCH] 91crypt-loop: use initqueue for cleanup strategy
+
+---
+ modules.d/90crypt/crypt-lib.sh | 3 +++
+ modules.d/91crypt-loop/crypt-loop-lib.sh | 5 +++++
+ 2 files changed, 8 insertions(+)
+
+diff --git a/modules.d/90crypt/crypt-lib.sh b/modules.d/90crypt/crypt-lib.sh
+index 5f7567e..d5caa85 100755
+--- a/modules.d/90crypt/crypt-lib.sh
++++ b/modules.d/90crypt/crypt-lib.sh
+@@ -188,6 +188,9 @@ readkey() {
+ if [ -f /lib/dracut-crypt-loop-lib.sh ]; then
+ . /lib/dracut-crypt-loop-lib.sh
+ loop_decrypt "$mntp" "$keypath" "$keydev" "$device"
++ initqueue --onetime --finished --unique --name "crypt-loop-cleanup-99-$(basename $mntp)" \
++ $(command -v umount) "$mntp; " $(command -v rmdir) "$mntp"
++ return 0
+ else
+ die "No loop file support to decrypt '$keypath' on '$keydev'."
+ fi
+diff --git a/modules.d/91crypt-loop/crypt-loop-lib.sh b/modules.d/91crypt-loop/crypt-loop-lib.sh
+index 63a553c..6774e7d 100644
+--- a/modules.d/91crypt-loop/crypt-loop-lib.sh
++++ b/modules.d/91crypt-loop/crypt-loop-lib.sh
+@@ -32,6 +32,11 @@ loop_decrypt() {
+ --tty-echo-off
+
+ [ -b $key ] || die "Tried setting it up, but keyfile block device was still not found!"
++
++ initqueue --onetime --finished --unique --name "crypt-loop-cleanup-10-$(basename $key)" \
++ $(command -v cryptsetup) "luksClose $key"
++ initqueue --onetime --finished --unique --name "crypt-loop-cleanup-20-$(basename $loopdev)" \
++ $(command -v losetup) "-d $loopdev"
+ else
+ info "Existing keyfile found, re-using it for $device"
+ fi
diff --git a/0016-91crypt-loop-replace-basename-calls-with-string-matc.patch b/0016-91crypt-loop-replace-basename-calls-with-string-matc.patch
new file mode 100644
index 0000000..a5207d8
--- /dev/null
+++ b/0016-91crypt-loop-replace-basename-calls-with-string-matc.patch
@@ -0,0 +1,55 @@
+From e88e3b279784ca801996c5e32db8c3bc2df1ec29 Mon Sep 17 00:00:00 2001
+From: Leho Kraav <leho@kraav.com>
+Date: Tue, 24 Jul 2012 15:08:55 +0300
+Subject: [PATCH] 91crypt-loop: replace basename calls with string matching
+
+---
+ modules.d/90crypt/crypt-lib.sh | 2 +-
+ modules.d/91crypt-loop/crypt-loop-lib.sh | 8 ++++----
+ 2 files changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/modules.d/90crypt/crypt-lib.sh b/modules.d/90crypt/crypt-lib.sh
+index d5caa85..d66ba88 100755
+--- a/modules.d/90crypt/crypt-lib.sh
++++ b/modules.d/90crypt/crypt-lib.sh
+@@ -188,7 +188,7 @@ readkey() {
+ if [ -f /lib/dracut-crypt-loop-lib.sh ]; then
+ . /lib/dracut-crypt-loop-lib.sh
+ loop_decrypt "$mntp" "$keypath" "$keydev" "$device"
+- initqueue --onetime --finished --unique --name "crypt-loop-cleanup-99-$(basename $mntp)" \
++ initqueue --onetime --finished --unique --name "crypt-loop-cleanup-99-${mntp##*/}" \
+ $(command -v umount) "$mntp; " $(command -v rmdir) "$mntp"
+ return 0
+ else
+diff --git a/modules.d/91crypt-loop/crypt-loop-lib.sh b/modules.d/91crypt-loop/crypt-loop-lib.sh
+index 6774e7d..244b6ce 100644
+--- a/modules.d/91crypt-loop/crypt-loop-lib.sh
++++ b/modules.d/91crypt-loop/crypt-loop-lib.sh
+@@ -18,13 +18,13 @@ loop_decrypt() {
+ local keydev="$3"
+ local device="$4"
+
+- local key="/dev/mapper/$(basename $mntp)"
++ local key="/dev/mapper/${mntp##*/}"
+
+ if [ ! -b $key ]; then
+ info "Keyfile has .img suffix, treating it as LUKS-encrypted loop keyfile container to unlock $device"
+
+ local loopdev=$(losetup -f "${mntp}/${keypath}" --show)
+- local opts="-d - luksOpen $loopdev $(basename $key)"
++ local opts="-d - luksOpen $loopdev ${key##*/}"
+
+ ask_for_password \
+ --cmd "cryptsetup $opts" \
+@@ -33,9 +33,9 @@ loop_decrypt() {
+
+ [ -b $key ] || die "Tried setting it up, but keyfile block device was still not found!"
+
+- initqueue --onetime --finished --unique --name "crypt-loop-cleanup-10-$(basename $key)" \
++ initqueue --onetime --finished --unique --name "crypt-loop-cleanup-10-${key##*/}" \
+ $(command -v cryptsetup) "luksClose $key"
+- initqueue --onetime --finished --unique --name "crypt-loop-cleanup-20-$(basename $loopdev)" \
++ initqueue --onetime --finished --unique --name "crypt-loop-cleanup-20-${loopdev##*/}" \
+ $(command -v losetup) "-d $loopdev"
+ else
+ info "Existing keyfile found, re-using it for $device"
diff --git a/0017-deprecate-old-command-line-options.patch b/0017-deprecate-old-command-line-options.patch
new file mode 100644
index 0000000..c555e36
--- /dev/null
+++ b/0017-deprecate-old-command-line-options.patch
@@ -0,0 +1,784 @@
+From 68e7661ca7625978f3a2b6f906d16a44043c4fbb Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Wed, 25 Jul 2012 10:32:42 +0200
+Subject: [PATCH] deprecate old command line options
+
+---
+ modules.d/10i18n/parse-i18n.sh | 8 ++---
+ modules.d/50gensplash/gensplash-pretrigger.sh | 2 +-
+ modules.d/50plymouth/plymouth-pretrigger.sh | 2 +-
+ modules.d/90crypt/crypt-cleanup.sh | 2 +-
+ modules.d/90crypt/cryptroot-ask.sh | 2 +-
+ modules.d/90crypt/parse-crypt.sh | 4 +--
+ modules.d/90dmraid/dmraid.sh | 2 +-
+ modules.d/90dmraid/parse-dm.sh | 6 ++--
+ modules.d/90dmsquash-live/dmsquash-live-root.sh | 14 ++++----
+ modules.d/90dmsquash-live/parse-dmsquash-live.sh | 2 +-
+ modules.d/90kernel-modules/insmodpost.sh | 2 +-
+ modules.d/90kernel-modules/parse-kernel.sh | 6 ++--
+ modules.d/90lvm/lvm_scan.sh | 8 ++---
+ modules.d/90lvm/parse-lvm.sh | 6 ++--
+ modules.d/90mdraid/parse-md.sh | 12 +++----
+ modules.d/95dasd/parse-dasd.sh | 2 +-
+ modules.d/95dasd_mod/parse-dasd-mod.sh | 2 +-
+ modules.d/95iscsi/iscsiroot.sh | 24 +++++++-------
+ modules.d/95nfs/parse-nfsroot.sh | 2 +-
+ modules.d/95rootfs-block/mount-root.sh | 2 +-
+ modules.d/95zfcp/parse-zfcp.sh | 4 +--
+ modules.d/95znet/parse-ccw.sh | 2 +-
+ modules.d/98syslog/parse-syslog-opts.sh | 6 ++--
+ modules.d/98systemd/dracut-cmdline.sh | 2 +-
+ modules.d/98systemd/dracut-initqueue.sh | 8 ++---
+ modules.d/98systemd/dracut-pre-pivot.sh | 2 +-
+ modules.d/98systemd/dracut-pre-trigger.sh | 4 +--
+ modules.d/99base/dracut-lib.sh | 42 ++++++++++++++++++++----
+ modules.d/99base/init.sh | 24 +++++++-------
+ modules.d/99base/mount-hook.sh | 2 +-
+ 30 files changed, 117 insertions(+), 89 deletions(-)
+
+diff --git a/modules.d/10i18n/parse-i18n.sh b/modules.d/10i18n/parse-i18n.sh
+index b9bd5bb..5530136 100755
+--- a/modules.d/10i18n/parse-i18n.sh
++++ b/modules.d/10i18n/parse-i18n.sh
+@@ -19,10 +19,10 @@ inst_key_val() {
+ unset _value
+ }
+
+-inst_key_val '' /etc/vconsole.conf KEYMAP vconsole.keymap KEYTABLE
+-inst_key_val '' /etc/vconsole.conf FONT vconsole.font SYSFONT
+-inst_key_val '' /etc/vconsole.conf FONT_MAP vconsole.font.map CONTRANS
+-inst_key_val '' /etc/vconsole.conf FONT_UNIMAP vconsole.font.unimap UNIMAP
++inst_key_val '' /etc/vconsole.conf KEYMAP vconsole.keymap -d KEYTABLE
++inst_key_val '' /etc/vconsole.conf FONT vconsole.font -d SYSFONT
++inst_key_val '' /etc/vconsole.conf FONT_MAP vconsole.font.map -d CONTRANS
++inst_key_val '' /etc/vconsole.conf FONT_UNIMAP vconsole.font.unimap -d UNIMAP
+ inst_key_val 1 /etc/vconsole.conf UNICODE vconsole.unicode vconsole.font.unicode
+ inst_key_val '' /etc/vconsole.conf EXT_KEYMAP vconsole.keymap.ext
+
+diff --git a/modules.d/50gensplash/gensplash-pretrigger.sh b/modules.d/50gensplash/gensplash-pretrigger.sh
+index b697438..6b85bbf 100755
+--- a/modules.d/50gensplash/gensplash-pretrigger.sh
++++ b/modules.d/50gensplash/gensplash-pretrigger.sh
+@@ -2,7 +2,7 @@
+ # -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
+ # ex: ts=8 sw=4 sts=4 et filetype=sh
+
+-if getargbool 1 rd.splash -n rd_NO_SPLASH; then
++if getargbool 1 rd.splash -d -n rd_NO_SPLASH; then
+ info "Starting Gentoo Splash"
+
+ [ -x /lib/udev/console_init ] && /lib/udev/console_init /dev/tty0
+diff --git a/modules.d/50plymouth/plymouth-pretrigger.sh b/modules.d/50plymouth/plymouth-pretrigger.sh
+index 5cc9112..ddb8ddb 100755
+--- a/modules.d/50plymouth/plymouth-pretrigger.sh
++++ b/modules.d/50plymouth/plymouth-pretrigger.sh
+@@ -3,7 +3,7 @@
+ # ex: ts=8 sw=4 sts=4 et filetype=sh
+
+ if [ -x /bin/plymouthd ]; then
+- if getargbool 1 plymouth.enable && getargbool 1 rd.plymouth -n rd_NO_PLYMOUTH; then
++ if getargbool 1 plymouth.enable && getargbool 1 rd.plymouth -d -n rd_NO_PLYMOUTH; then
+ # first trigger graphics subsystem
+ udevadm trigger --action=add --attr-match=class=0x030000 >/dev/null 2>&1
+ # first trigger graphics and tty subsystem
+diff --git a/modules.d/90crypt/crypt-cleanup.sh b/modules.d/90crypt/crypt-cleanup.sh
+index e6beb83..04defde 100755
+--- a/modules.d/90crypt/crypt-cleanup.sh
++++ b/modules.d/90crypt/crypt-cleanup.sh
+@@ -4,7 +4,7 @@
+ # close everything which is not busy
+ rm -f /etc/udev/rules.d/70-luks.rules >/dev/null 2>&1
+
+-if ! getarg rd.luks.uuid rd_LUKS_UUID >/dev/null 2>&1 && getargbool 1 rd.luks -n rd_NO_LUKS >/dev/null 2>&1; then
++if ! getarg rd.luks.uuid -d rd_LUKS_UUID >/dev/null 2>&1 && getargbool 1 rd.luks -d -n rd_NO_LUKS >/dev/null 2>&1; then
+ while true; do
+ local do_break="y"
+ for i in /dev/mapper/luks-*; do
+diff --git a/modules.d/90crypt/cryptroot-ask.sh b/modules.d/90crypt/cryptroot-ask.sh
+index d373a90..17955ec 100755
+--- a/modules.d/90crypt/cryptroot-ask.sh
++++ b/modules.d/90crypt/cryptroot-ask.sh
+@@ -36,7 +36,7 @@ fi
+ numtries=${3:-10}
+
+ # TODO: improve to support what cmdline does
+-if [ -f /etc/crypttab ] && getargbool 1 rd.luks.crypttab -n rd_NO_CRYPTTAB; then
++if [ -f /etc/crypttab ] && getargbool 1 rd.luks.crypttab -d -n rd_NO_CRYPTTAB; then
+ while read name dev luksfile luksoptions; do
+ # ignore blank lines and comments
+ if [ -z "$name" -o "${name#\#}" != "$name" ]; then
+diff --git a/modules.d/90crypt/parse-crypt.sh b/modules.d/90crypt/parse-crypt.sh
+index f96b59a..a2b157f 100755
+--- a/modules.d/90crypt/parse-crypt.sh
++++ b/modules.d/90crypt/parse-crypt.sh
+@@ -1,7 +1,7 @@
+ #!/bin/sh
+ # -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
+ # ex: ts=8 sw=4 sts=4 et filetype=sh
+-if ! getargbool 1 rd.luks -n rd_NO_LUKS; then
++if ! getargbool 1 rd.luks -d -n rd_NO_LUKS; then
+ info "rd.luks=0: removing cryptoluks activation"
+ rm -f /etc/udev/rules.d/70-luks.rules
+ else
+@@ -10,7 +10,7 @@ else
+ echo 'ACTION!="add|change", GOTO="luks_end"'
+ } > /etc/udev/rules.d/70-luks.rules.new
+
+- LUKS=$(getargs rd.luks.uuid rd_LUKS_UUID)
++ LUKS=$(getargs rd.luks.uuid -d rd_LUKS_UUID)
+ tout=$(getarg rd.luks.key.tout)
+
+ if [ -n "$LUKS" ]; then
+diff --git a/modules.d/90dmraid/dmraid.sh b/modules.d/90dmraid/dmraid.sh
+index 574dc3b..e4f8799 100755
+--- a/modules.d/90dmraid/dmraid.sh
++++ b/modules.d/90dmraid/dmraid.sh
+@@ -4,7 +4,7 @@
+
+ type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh
+
+-DM_RAIDS=$(getargs rd.dm.uuid rd_DM_UUID=)
++DM_RAIDS=$(getargs rd.dm.uuid -d rd_DM_UUID=)
+
+ DM_CLEANUP="no"
+
+diff --git a/modules.d/90dmraid/parse-dm.sh b/modules.d/90dmraid/parse-dm.sh
+index fe38d35..bc7ed42 100755
+--- a/modules.d/90dmraid/parse-dm.sh
++++ b/modules.d/90dmraid/parse-dm.sh
+@@ -2,17 +2,17 @@
+ # -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
+ # ex: ts=8 sw=4 sts=4 et filetype=sh
+ # nodmraid for anaconda / rc.sysinit compatibility
+-if ! getargbool 1 rd.dm -n rd_NO_DM || getarg nodmraid; then
++if ! getargbool 1 rd.dm -d -n rd_NO_DM || getarg "rd.dm=0" -d nodmraid; then
+ info "rd.dm=0: removing DM RAID activation"
+ udevproperty rd_NO_DM=1
+ fi
+
+-if ! command -v mdadm >/dev/null || ! getargbool 1 rd.md.imsm -n rd_NO_MDIMSM || getarg noiswmd; then
++if ! command -v mdadm >/dev/null || ! getargbool 1 rd.md.imsm -d -n rd_NO_MDIMSM -n noiswmd; then
+ info "rd.md.imsm=0: no MD RAID for imsm/isw raids"
+ udevproperty rd_NO_MDIMSM=1
+ fi
+
+-if ! command -v mdadm >/dev/null || ! getargbool 1 rd.md.ddf -n rd_NO_MDDDF || getarg noddfmd; then
++if ! command -v mdadm >/dev/null || ! getargbool 1 rd.md.ddf -n rd_NO_MDDDF -n noddfmd; then
+ info "rd.md.ddf=0: no MD RAID for SNIA ddf raids"
+ udevproperty rd_NO_MDDDF=1
+ fi
+diff --git a/modules.d/90dmsquash-live/dmsquash-live-root.sh b/modules.d/90dmsquash-live/dmsquash-live-root.sh
+index 08f2381..15f166b 100755
+--- a/modules.d/90dmsquash-live/dmsquash-live-root.sh
++++ b/modules.d/90dmsquash-live/dmsquash-live-root.sh
+@@ -6,7 +6,7 @@ type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh
+
+ PATH=/usr/sbin:/usr/bin:/sbin:/bin
+
+-if getargbool 0 rd.live.debug -y rdlivedebug; then
++if getargbool 0 rd.live.debug -n -y rdlivedebug; then
+ exec > /tmp/liveroot.$$.out
+ exec 2>> /tmp/liveroot.$$.out
+ set -x
+@@ -17,19 +17,19 @@ livedev="$1"
+
+ # parse various live image specific options that make sense to be
+ # specified as their own things
+-live_dir=$(getarg rd.live.dir live_dir)
++live_dir=$(getarg rd.live.dir -d live_dir)
+ [ -z "$live_dir" ] && live_dir="LiveOS"
+-getargbool 0 rd.live.ram -y live_ram && live_ram="yes"
+-getargbool 0 rd.live.overlay.reset -y reset_overlay && reset_overlay="yes"
+-getargbool 0 rd.live.overlay.readonly -y readonly_overlay && readonly_overlay="--readonly" || readonly_overlay=""
+-overlay=$(getarg rd.live.overlay overlay)
++getargbool 0 rd.live.ram -d -y live_ram && live_ram="yes"
++getargbool 0 rd.live.overlay.reset -d -y reset_overlay && reset_overlay="yes"
++getargbool 0 rd.live.overlay.readonly -d -y readonly_overlay && readonly_overlay="--readonly" || readonly_overlay=""
++overlay=$(getarg rd.live.overlay -d overlay)
+
+ # CD/DVD media check
+ [ -b $livedev ] && fs=$(blkid -s TYPE -o value $livedev)
+ if [ "$fs" = "iso9660" -o "$fs" = "udf" ]; then
+ check="yes"
+ fi
+-getarg rd.live.check check || check=""
++getarg rd.live.check -d check || check=""
+ if [ -n "$check" ]; then
+ [ -x /bin/plymouth ] && /bin/plymouth --hide-splash
+ checkisomd5 --verbose $livedev
+diff --git a/modules.d/90dmsquash-live/parse-dmsquash-live.sh b/modules.d/90dmsquash-live/parse-dmsquash-live.sh
+index 5ccc0d0..3e9a347 100755
+--- a/modules.d/90dmsquash-live/parse-dmsquash-live.sh
++++ b/modules.d/90dmsquash-live/parse-dmsquash-live.sh
+@@ -7,7 +7,7 @@
+ [ -z "$root" ] && root=$(getarg root=)
+
+ # support legacy syntax of passing liveimg and then just the base root
+-if getargbool 0 rd.live.image -y liveimg; then
++if getargbool 0 rd.live.image -d -y liveimg; then
+ liveroot="live:$root"
+ fi
+
+diff --git a/modules.d/90kernel-modules/insmodpost.sh b/modules.d/90kernel-modules/insmodpost.sh
+index 168a907..d2b8723 100755
+--- a/modules.d/90kernel-modules/insmodpost.sh
++++ b/modules.d/90kernel-modules/insmodpost.sh
+@@ -4,7 +4,7 @@
+
+ . /lib/dracut-lib.sh
+
+-for modlist in $(getargs rd.driver.post rdinsmodpost=); do
++for modlist in $(getargs rd.driver.post -d rdinsmodpost=); do
+ (
+ IFS=,
+ for m in $modlist; do
+diff --git a/modules.d/90kernel-modules/parse-kernel.sh b/modules.d/90kernel-modules/parse-kernel.sh
+index 285ee90..485528b 100755
+--- a/modules.d/90kernel-modules/parse-kernel.sh
++++ b/modules.d/90kernel-modules/parse-kernel.sh
+@@ -2,7 +2,7 @@
+ # -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
+ # ex: ts=8 sw=4 sts=4 et filetype=sh
+
+-for i in $(getargs rd.driver.pre rdloaddriver=); do
++for i in $(getargs rd.driver.pre -d rdloaddriver=); do
+ (
+ IFS=,
+ for p in $i; do
+@@ -11,7 +11,7 @@ for i in $(getargs rd.driver.pre rdloaddriver=); do
+ )
+ done
+
+-for i in $(getargs rd.driver.blacklist rdblacklist=); do
++for i in $(getargs rd.driver.blacklist -d rdblacklist=); do
+ (
+ IFS=,
+ for p in $i; do
+@@ -20,7 +20,7 @@ for i in $(getargs rd.driver.blacklist rdblacklist=); do
+ )
+ done
+
+-for p in $(getargs rd.driver.post rdinsmodpost=); do
++for p in $(getargs rd.driver.post -d rdinsmodpost=); do
+ echo "blacklist $p" >> /etc/modprobe.d/initramfsblacklist.conf
+ _do_insmodpost=1
+ done
+diff --git a/modules.d/90lvm/lvm_scan.sh b/modules.d/90lvm/lvm_scan.sh
+index d86be9b..f5f5fcd 100755
+--- a/modules.d/90lvm/lvm_scan.sh
++++ b/modules.d/90lvm/lvm_scan.sh
+@@ -7,10 +7,10 @@
+ extraargs="$@"
+ type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh
+
+-VGS=$(getargs rd.lvm.vg rd_LVM_VG=)
+-LVS=$(getargs rd.lvm.lv rd_LVM_LV=)
+-SNAPSHOT=$(getargs rd.lvm.snapshot rd_LVM_SNAPSHOT=)
+-SNAPSIZE=$(getargs rd.lvm.snapsize rd_LVM_SNAPSIZE=)
++VGS=$(getargs rd.lvm.vg -d rd_LVM_VG=)
++LVS=$(getargs rd.lvm.lv -d rd_LVM_LV=)
++SNAPSHOT=$(getargs rd.lvm.snapshot -d rd_LVM_SNAPSHOT=)
++SNAPSIZE=$(getargs rd.lvm.snapsize -d rd_LVM_SNAPSIZE=)
+
+ [ -d /etc/lvm ] || mkdir -m 0755 -p /etc/lvm
+ # build a list of devices to scan
+diff --git a/modules.d/90lvm/parse-lvm.sh b/modules.d/90lvm/parse-lvm.sh
+index c1d00c6..2194abd 100755
+--- a/modules.d/90lvm/parse-lvm.sh
++++ b/modules.d/90lvm/parse-lvm.sh
+@@ -1,15 +1,15 @@
+ #!/bin/sh
+ # -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
+ # ex: ts=8 sw=4 sts=4 et filetype=sh
+-if [ -e /etc/lvm/lvm.conf ] && ! getargbool 1 rd.lvm.conf -n rd_NO_LVMCONF; then
++if [ -e /etc/lvm/lvm.conf ] && ! getargbool 1 rd.lvm.conf -d -n rd_NO_LVMCONF; then
+ rm -f /etc/lvm/lvm.conf
+ fi
+
+-if ! getargbool 1 rd.lvm -n rd_NO_LVM; then
++if ! getargbool 1 rd.lvm -d -n rd_NO_LVM; then
+ info "rd.lvm=0: removing LVM activation"
+ rm -f /etc/udev/rules.d/64-lvm*.rules
+ else
+- for dev in $(getargs rd.lvm.vg rd_LVM_VG=) $(getargs rd.lvm.lv rd_LVM_LV=); do
++ for dev in $(getargs rd.lvm.vg -d rd_LVM_VG=) $(getargs rd.lvm.lv -d rd_LVM_LV=); do
+ wait_for_dev "/dev/$dev"
+ done
+ fi
+diff --git a/modules.d/90mdraid/parse-md.sh b/modules.d/90mdraid/parse-md.sh
+index 1482f2f..6920f40 100755
+--- a/modules.d/90mdraid/parse-md.sh
++++ b/modules.d/90mdraid/parse-md.sh
+@@ -1,11 +1,11 @@
+ #!/bin/sh
+ # -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
+ # ex: ts=8 sw=4 sts=4 et filetype=sh
+-if ! getargbool 1 rd.md -n rd_NO_MD; then
++if ! getargbool 1 rd.md -d -n rd_NO_MD; then
+ info "rd.md=0: removing MD RAID activation"
+ udevproperty rd_NO_MD=1
+ else
+- MD_UUID=$(getargs rd.md.uuid rd_MD_UUID=)
++ MD_UUID=$(getargs rd.md.uuid -d rd_MD_UUID=)
+
+ # rewrite the md rules to only process the specified raid array
+ if [ -n "$MD_UUID" ]; then
+@@ -29,25 +29,25 @@ else
+ fi
+
+
+-if [ -e /etc/mdadm.conf ] && getargbool 1 rd.md.conf -n rd_NO_MDADMCONF; then
++if [ -e /etc/mdadm.conf ] && getargbool 1 rd.md.conf -d -n rd_NO_MDADMCONF; then
+ udevproperty rd_MDADMCONF=1
+ rm -f $hookdir/pre-pivot/*mdraid-cleanup.sh
+ fi
+
+-if ! getargbool 1 rd.md.conf -n rd_NO_MDADMCONF; then
++if ! getargbool 1 rd.md.conf -d -n rd_NO_MDADMCONF; then
+ rm -f /etc/mdadm/mdadm.conf /etc/mdadm.conf
+ ln -s $(command -v mdraid-cleanup) $hookdir/pre-pivot/31-mdraid-cleanup.sh 2>/dev/null
+ fi
+
+ # noiswmd nodmraid for anaconda / rc.sysinit compatibility
+ # note nodmraid really means nobiosraid, so we don't want MDIMSM then either
+-if ! getargbool 1 rd.md.imsm -n rd_NO_MDIMSM || getarg noiswmd || getarg nodmraid; then
++if ! getargbool 1 rd.md.imsm -d -n rd_NO_MDIMSM -n noiswmd -n nodmraid; then
+ info "no MD RAID for imsm/isw raids"
+ udevproperty rd_NO_MDIMSM=1
+ fi
+
+ # same thing with ddf containers
+-if ! getargbool 1 rd.md.ddf -n rd_NO_MDDDF || getarg noddfmd || getarg nodmraid; then
++if ! getargbool 1 rd.md.ddf -n rd_NO_MDDDF -n noddfmd -n nodmraid; then
+ info "no MD RAID for SNIA ddf raids"
+ udevproperty rd_NO_MDDDF=1
+ fi
+diff --git a/modules.d/95dasd/parse-dasd.sh b/modules.d/95dasd/parse-dasd.sh
+index b3d18fa..772ea47 100755
+--- a/modules.d/95dasd/parse-dasd.sh
++++ b/modules.d/95dasd/parse-dasd.sh
+@@ -1,7 +1,7 @@
+ #!/bin/sh
+ # -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
+ # ex: ts=8 sw=4 sts=4 et filetype=sh
+-for dasd_arg in $(getargs rd.dasd= rd_DASD= DASD=); do
++for dasd_arg in $(getargs rd.dasd= -d rd_DASD= DASD=); do
+ (
+ IFS=","
+ set $dasd_arg
+diff --git a/modules.d/95dasd_mod/parse-dasd-mod.sh b/modules.d/95dasd_mod/parse-dasd-mod.sh
+index c37aca8..87c88ed 100755
+--- a/modules.d/95dasd_mod/parse-dasd-mod.sh
++++ b/modules.d/95dasd_mod/parse-dasd-mod.sh
+@@ -3,7 +3,7 @@
+ # ex: ts=8 sw=4 sts=4 et filetype=sh
+ mod_args=""
+
+-for dasd_arg in $(getargs rd.dasd= rd_DASD= DASD=); do
++for dasd_arg in $(getargs rd.dasd= -d rd_DASD= DASD=); do
+ mod_args="$mod_args,$dasd_arg"
+ done
+
+diff --git a/modules.d/95iscsi/iscsiroot.sh b/modules.d/95iscsi/iscsiroot.sh
+index 19c5c1d..87b7fa7 100755
+--- a/modules.d/95iscsi/iscsiroot.sh
++++ b/modules.d/95iscsi/iscsiroot.sh
+@@ -40,14 +40,14 @@ modprobe crc32c 2>/dev/null
+
+ [ -e /sys/module/bnx2i ] && iscsiuio
+
+-if getargbool 0 rd.iscsi.firmware -y iscsi_firmware ; then
++if getargbool 0 rd.iscsi.firmware -d -y iscsi_firmware ; then
+ if [ -z "$root" -o -n "${root%%block:*}" ]; then
+ # if root is not specified try to mount the whole iSCSI LUN
+ printf 'ENV{DEVTYPE}!="partition", SYMLINK=="disk/by-path/*-iscsi-*-*", SYMLINK+="root"\n' >> /etc/udev/rules.d/99-iscsi-root.rules
+ udevadm control --reload
+ fi
+
+- for p in $(getargs rd.iscsi.param iscsi_param); do
++ for p in $(getargs rd.iscsi.param -d iscsi_param); do
+ iscsi_param="$iscsi_param --param $p"
+ done
+
+@@ -66,25 +66,25 @@ handle_netroot()
+ local p
+
+ # override conf settings by command line options
+- arg=$(getargs rd.iscsi.initiator iscsi_initiator=)
++ arg=$(getargs rd.iscsi.initiator -d iscsi_initiator=)
+ [ -n "$arg" ] && iscsi_initiator=$arg
+- arg=$(getargs rd.iscsi.target.name iscsi_target_name=)
++ arg=$(getargs rd.iscsi.target.name -d iscsi_target_name=)
+ [ -n "$arg" ] && iscsi_target_name=$arg
+- arg=$(getargs rd.iscsi.target.ip iscsi_target_ip)
++ arg=$(getargs rd.iscsi.target.ip -d iscsi_target_ip)
+ [ -n "$arg" ] && iscsi_target_ip=$arg
+- arg=$(getargs rd.iscsi.target.port iscsi_target_port=)
++ arg=$(getargs rd.iscsi.target.port -d iscsi_target_port=)
+ [ -n "$arg" ] && iscsi_target_port=$arg
+- arg=$(getargs rd.iscsi.target.group iscsi_target_group=)
++ arg=$(getargs rd.iscsi.target.group -d iscsi_target_group=)
+ [ -n "$arg" ] && iscsi_target_group=$arg
+- arg=$(getargs rd.iscsi.username iscsi_username=)
++ arg=$(getargs rd.iscsi.username -d iscsi_username=)
+ [ -n "$arg" ] && iscsi_username=$arg
+- arg=$(getargs rd.iscsi.password iscsi_password)
++ arg=$(getargs rd.iscsi.password -d iscsi_password)
+ [ -n "$arg" ] && iscsi_password=$arg
+- arg=$(getargs rd.iscsi.in.username iscsi_in_username=)
++ arg=$(getargs rd.iscsi.in.username -d iscsi_in_username=)
+ [ -n "$arg" ] && iscsi_in_username=$arg
+- arg=$(getargs rd.iscsi.in.password iscsi_in_password=)
++ arg=$(getargs rd.iscsi.in.password -d iscsi_in_password=)
+ [ -n "$arg" ] && iscsi_in_password=$arg
+- for p in $(getargs rd.iscsi.param iscsi_param); do
++ for p in $(getargs rd.iscsi.param -d iscsi_param); do
+ iscsi_param="$iscsi_param --param $p"
+ done
+
+diff --git a/modules.d/95nfs/parse-nfsroot.sh b/modules.d/95nfs/parse-nfsroot.sh
+index 769d233..283420a 100755
+--- a/modules.d/95nfs/parse-nfsroot.sh
++++ b/modules.d/95nfs/parse-nfsroot.sh
+@@ -72,7 +72,7 @@ esac
+
+ # Check required arguments
+
+-if nfsdomain=$(getarg rd.nfs.domain rd_NFS_DOMAIN); then
++if nfsdomain=$(getarg rd.nfs.domain -d rd_NFS_DOMAIN); then
+ if [ -f /etc/idmapd.conf ]; then
+ sed -i -e \
+ "s/^[[:space:]#]*Domain[[:space:]]*=.*/Domain = $nfsdomain/g" \
+diff --git a/modules.d/95rootfs-block/mount-root.sh b/modules.d/95rootfs-block/mount-root.sh
+index e61b0e8..670f6e3 100755
+--- a/modules.d/95rootfs-block/mount-root.sh
++++ b/modules.d/95rootfs-block/mount-root.sh
+@@ -76,7 +76,7 @@ mount_root() {
+ fi
+
+ rootopts=
+- if getargbool 1 rd.fstab -n rd_NO_FSTAB \
++ if getargbool 1 rd.fstab -d -n rd_NO_FSTAB \
+ && ! getarg rootflags \
+ && [ -f "$NEWROOT/etc/fstab" ] \
+ && ! [ -L "$NEWROOT/etc/fstab" ]; then
+diff --git a/modules.d/95zfcp/parse-zfcp.sh b/modules.d/95zfcp/parse-zfcp.sh
+index 5af454a..9b22d93 100755
+--- a/modules.d/95zfcp/parse-zfcp.sh
++++ b/modules.d/95zfcp/parse-zfcp.sh
+@@ -2,9 +2,9 @@
+ # -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
+ # ex: ts=8 sw=4 sts=4 et filetype=sh
+
+-getargbool 1 rd.zfcp.conf -n rd_NO_ZFCPCONF || rm /etc/zfcp.conf
++getargbool 1 rd.zfcp.conf -d -n rd_NO_ZFCPCONF || rm /etc/zfcp.conf
+
+-for zfcp_arg in $(getargs rd.zfcp 'rd_ZFCP='); do
++for zfcp_arg in $(getargs rd.zfcp -d 'rd_ZFCP='); do
+ (
+ IFS=","
+ set $zfcp_arg
+diff --git a/modules.d/95znet/parse-ccw.sh b/modules.d/95znet/parse-ccw.sh
+index 876671c..cf1f41d 100755
+--- a/modules.d/95znet/parse-ccw.sh
++++ b/modules.d/95znet/parse-ccw.sh
+@@ -2,7 +2,7 @@
+ # -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
+ # ex: ts=8 sw=4 sts=4 et filetype=sh
+
+-for ccw_arg in $(getargs rd.ccw 'rd_CCW=') $(getargs rd.znet 'rd_ZNET='); do
++for ccw_arg in $(getargs rd.ccw -d 'rd_CCW=') $(getargs rd.znet -d 'rd_ZNET='); do
+ echo $ccw_arg >> /etc/ccw.conf
+ done
+
+diff --git a/modules.d/98syslog/parse-syslog-opts.sh b/modules.d/98syslog/parse-syslog-opts.sh
+index 02788dd..e58c8f5 100755
+--- a/modules.d/98syslog/parse-syslog-opts.sh
++++ b/modules.d/98syslog/parse-syslog-opts.sh
+@@ -11,9 +11,9 @@
+ # Don't auto detect syslog but set it
+ type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh
+
+-syslogserver=$(getarg syslog.server syslog)
+-syslogfilters=$(getargs syslog.filter filter)
+-syslogtype=$(getarg syslog.type syslogtype)
++syslogserver=$(getarg syslog.server -d syslog)
++syslogfilters=$(getargs syslog.filter -d filter)
++syslogtype=$(getarg syslog.type -d syslogtype)
+
+ [ -n "$syslogserver" ] && echo $syslogserver > /tmp/syslog.server
+ [ -n "$syslogfilters" ] && echo "$syslogfilters" > /tmp/syslog.filters
+diff --git a/modules.d/98systemd/dracut-cmdline.sh b/modules.d/98systemd/dracut-cmdline.sh
+index 6a44815..77ad121 100755
+--- a/modules.d/98systemd/dracut-cmdline.sh
++++ b/modules.d/98systemd/dracut-cmdline.sh
+@@ -15,7 +15,7 @@ type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh
+ source_conf /etc/conf.d
+
+ # run scriptlets to parse the command line
+-getarg 'rd.break=cmdline' 'rdbreak=cmdline' && emergency_shell -n cmdline "Break before cmdline"
++getarg 'rd.break=cmdline' -d 'rdbreak=cmdline' && emergency_shell -n cmdline "Break before cmdline"
+ source_hook cmdline
+
+ [ -z "$root" ] && die "No or empty root= argument"
+diff --git a/modules.d/98systemd/dracut-initqueue.sh b/modules.d/98systemd/dracut-initqueue.sh
+index cfdb12d..112d2a8 100755
+--- a/modules.d/98systemd/dracut-initqueue.sh
++++ b/modules.d/98systemd/dracut-initqueue.sh
+@@ -9,9 +9,9 @@ type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh
+
+ source_conf /etc/conf.d
+
+-getarg 'rd.break=initqueue' 'rdbreak=initqueue' && emergency_shell -n initqueue "Break before initqueue"
++getarg 'rd.break=initqueue' -d 'rdbreak=initqueue' && emergency_shell -n initqueue "Break before initqueue"
+
+-RDRETRY=$(getarg rd.retry 'rd_retry=')
++RDRETRY=$(getarg rd.retry -d 'rd_retry=')
+ RDRETRY=${RDRETRY:-20}
+ RDRETRY=$(($RDRETRY*2))
+ export RDRETRY
+@@ -71,11 +71,11 @@ unset RDRETRY
+
+ # pre-mount happens before we try to mount the root filesystem,
+ # and happens once.
+-getarg 'rd.break=pre-mount' 'rdbreak=pre-mount' && emergency_shell -n pre-mount "Break pre-mount"
++getarg 'rd.break=pre-mount' -d 'rdbreak=pre-mount' && emergency_shell -n pre-mount "Break pre-mount"
+ source_hook pre-mount
+
+
+-getarg 'rd.break=mount' 'rdbreak=mount' && emergency_shell -n mount "Break mount"
++getarg 'rd.break=mount' -d 'rdbreak=mount' && emergency_shell -n mount "Break mount"
+ # mount scripts actually try to mount the root filesystem, and may
+ # be sourced any number of times. As soon as one suceeds, no more are sourced.
+ i=0
+diff --git a/modules.d/98systemd/dracut-pre-pivot.sh b/modules.d/98systemd/dracut-pre-pivot.sh
+index 31dded5..3fd7957 100755
+--- a/modules.d/98systemd/dracut-pre-pivot.sh
++++ b/modules.d/98systemd/dracut-pre-pivot.sh
+@@ -37,6 +37,6 @@ echo "NEWROOT=\"$NEWROOT\"" >> /run/initramfs/switch-root.conf
+ # remove helper symlink
+ [ -h /dev/root ] && rm -f /dev/root
+
+-getarg rd.break rdbreak && emergency_shell -n switch_root "Break before switch_root"
++getarg rd.break -d rdbreak && emergency_shell -n switch_root "Break before switch_root"
+
+ exit 0
+diff --git a/modules.d/98systemd/dracut-pre-trigger.sh b/modules.d/98systemd/dracut-pre-trigger.sh
+index 52ecfaf..9850124 100755
+--- a/modules.d/98systemd/dracut-pre-trigger.sh
++++ b/modules.d/98systemd/dracut-pre-trigger.sh
+@@ -9,8 +9,8 @@ type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh
+
+ source_conf /etc/conf.d
+
+-getargbool 0 rd.udev.info -y rdudevinfo && udevadm control --log-priority=info
+-getargbool 0 rd.udev.debug -y rdudevdebug && udevadm control --log-priority=debug
++getargbool 0 rd.udev.info -n -y rdudevinfo && udevadm control --log-priority=info
++getargbool 0 rd.udev.debug -n -y rdudevdebug && udevadm control --log-priority=debug
+ udevproperty "hookdir=$hookdir"
+
+ source_hook pre-trigger
+diff --git a/modules.d/99base/dracut-lib.sh b/modules.d/99base/dracut-lib.sh
+index 1ee671e..786661e 100755
+--- a/modules.d/99base/dracut-lib.sh
++++ b/modules.d/99base/dracut-lib.sh
+@@ -103,24 +103,41 @@ _dogetarg() {
+
+ getarg() {
+ debug_off
++ local _deprecated _newoption
+ while [ $# -gt 0 ]; do
+ case $1 in
++ -d) _deprecated=1; shift;;
+ -y) if _dogetarg $2 >/dev/null; then
++ if [ "$_deprecated" = "1" ]; then
++ [ -n "$_newoption" ] && warn "Option '$2' is deprecated, use '$_newoption' instead." || warn "Option '$2' is deprecated."
++ fi
+ echo 1
+ debug_on
+ return 0
+ fi
++ _deprecated=0
+ shift 2;;
+ -n) if _dogetarg $2 >/dev/null; then
+ echo 0;
++ if [ "$_deprecated" = "1" ]; then
++ [ -n "$_newoption" ] && warn "Option '$2' is deprecated, use '$_newoption=0' instead." || warn "Option '$2' is deprecated."
++ fi
+ debug_on
+ return 1
+ fi
++ _deprecated=0
+ shift 2;;
+- *) if _dogetarg $1; then
++ *) if [ -z "$_newoption" ]; then
++ _newoption=$1
++ fi
++ if _dogetarg $1; then
++ if [ "$_deprecated" = "1" ]; then
++ [ -n "$_newoption" ] && warn "Option '$1' is deprecated, use '$_newoption' instead." || warn "Option '$1' is deprecated."
++ fi
+ debug_on
+ return 0;
+ fi
++ _deprecated=0
+ shift;;
+ esac
+ done
+@@ -168,15 +185,26 @@ _dogetargs() {
+
+ getargs() {
+ debug_off
+- local _val _i _args _gfound
++ local _val _i _args _gfound _deprecated
+ unset _val
+ unset _gfound
++ _newoption="$1"
+ _args="$@"
+ set --
+ for _i in $_args; do
++ if [ "$i" = "-d" ]; then
++ _deprecated=1
++ continue
++ fi
+ _val="$(_dogetargs $_i)"
+- [ $? -eq 0 ] && _gfound=1
++ if [ $? -eq 0 ]; then
++ if [ "$_deprecated" = "1" ]; then
++ [ -n "$_newoption" ] && warn "Option '$_i' is deprecated, use '$_newoption' instead." || warn "Option $_i is deprecated!"
++ fi
++ _gfound=1
++ fi
+ [ -n "$_val" ] && set -- "$@" "$_val"
++ _deprecated=0
+ done
+ if [ -n "$_gfound" ]; then
+ if [ $# -gt 0 ]; then
+@@ -250,7 +278,7 @@ setdebug() {
+ if [ -z "$RD_DEBUG" ]; then
+ if [ -e /proc/cmdline ]; then
+ RD_DEBUG=no
+- if getargbool 0 rd.debug -y rdinitdebug -y rdnetdebug; then
++ if getargbool 0 rd.debug -d -y rdinitdebug -d -y rdnetdebug; then
+ RD_DEBUG=yes
+ [ -n "$BASH" ] && \
+ export PS4='${BASH_SOURCE}@${LINENO}(${FUNCNAME[0]}): ';
+@@ -314,8 +342,8 @@ die() {
+ check_quiet() {
+ if [ -z "$DRACUT_QUIET" ]; then
+ DRACUT_QUIET="yes"
+- getargbool 0 rd.info -y rdinfo && DRACUT_QUIET="no"
+- getargbool 0 rd.debug -y rdinitdebug && DRACUT_QUIET="no"
++ getargbool 0 rd.info -d -y rdinfo && DRACUT_QUIET="no"
++ getargbool 0 rd.debug -d -y rdinitdebug && DRACUT_QUIET="no"
+ getarg quiet || DRACUT_QUIET="yes"
+ a=$(getarg loglevel=)
+ [ -n "$a" ] && [ $a -ge 28 ] && DRACUT_QUIET="yes"
+@@ -831,7 +859,7 @@ emergency_shell()
+ source_hook "$hook"
+ echo
+
+- if getargbool 1 rd.shell -y rdshell || getarg rd.break rdbreak; then
++ if getargbool 1 rd.shell -d -y rdshell || getarg rd.break -d rdbreak; then
+ if [ -x /lib/systemd/systemd ]; then
+ > /.console_lock
+ echo "PS1=\"$_rdshell_name:\${PWD}# \"" >/etc/profile
+diff --git a/modules.d/99base/init.sh b/modules.d/99base/init.sh
+index 3eb6424..c33f182 100755
+--- a/modules.d/99base/init.sh
++++ b/modules.d/99base/init.sh
+@@ -108,7 +108,7 @@ fi
+ source_conf /etc/conf.d
+
+ # run scriptlets to parse the command line
+-getarg 'rd.break=cmdline' 'rdbreak=cmdline' && emergency_shell -n cmdline "Break before cmdline"
++getarg 'rd.break=cmdline' -d 'rdbreak=cmdline' && emergency_shell -n cmdline "Break before cmdline"
+ source_hook cmdline
+
+ [ -z "$root" ] && die "No or empty root= argument"
+@@ -117,7 +117,7 @@ source_hook cmdline
+ export root rflags fstype netroot NEWROOT
+
+ # pre-udev scripts run before udev starts, and are run only once.
+-getarg 'rd.break=pre-udev' 'rdbreak=pre-udev' && emergency_shell -n pre-udev "Break before pre-udev"
++getarg 'rd.break=pre-udev' -d 'rdbreak=pre-udev' && emergency_shell -n pre-udev "Break before pre-udev"
+ source_hook pre-udev
+
+ # start up udev and trigger cold plugs
+@@ -131,11 +131,11 @@ if [ $UDEVVERSION -lt 140 ]; then
+ UDEV_QUEUE_EMPTY="udevadm settle --timeout=1"
+ fi
+
+-getargbool 0 rd.udev.info -y rdudevinfo && udevadm control "$UDEV_LOG_PRIO_ARG=info"
+-getargbool 0 rd.udev.debug -y rdudevdebug && udevadm control "$UDEV_LOG_PRIO_ARG=debug"
++getargbool 0 rd.udev.info -d -y rdudevinfo && udevadm control "$UDEV_LOG_PRIO_ARG=info"
++getargbool 0 rd.udev.debug -d -y rdudevdebug && udevadm control "$UDEV_LOG_PRIO_ARG=debug"
+ udevproperty "hookdir=$hookdir"
+
+-getarg 'rd.break=pre-trigger' 'rdbreak=pre-trigger' && emergency_shell -n pre-trigger "Break before pre-trigger"
++getarg 'rd.break=pre-trigger' -d 'rdbreak=pre-trigger' && emergency_shell -n pre-trigger "Break before pre-trigger"
+ source_hook pre-trigger
+
+ udevadm control --reload >/dev/null 2>&1 || :
+@@ -143,9 +143,9 @@ udevadm control --reload >/dev/null 2>&1 || :
+ udevadm trigger --type=subsystems --action=add >/dev/null 2>&1
+ udevadm trigger --type=devices --action=add >/dev/null 2>&1
+
+-getarg 'rd.break=initqueue' 'rdbreak=initqueue' && emergency_shell -n initqueue "Break before initqueue"
++getarg 'rd.break=initqueue' -d 'rdbreak=initqueue' && emergency_shell -n initqueue "Break before initqueue"
+
+-RDRETRY=$(getarg rd.retry 'rd_retry=')
++RDRETRY=$(getarg rd.retry -d 'rd_retry=')
+ RDRETRY=${RDRETRY:-20}
+ RDRETRY=$(($RDRETRY*2))
+ export RDRETRY
+@@ -202,11 +202,11 @@ unset RDRETRY
+
+ # pre-mount happens before we try to mount the root filesystem,
+ # and happens once.
+-getarg 'rd.break=pre-mount' 'rdbreak=pre-mount' && emergency_shell -n pre-mount "Break pre-mount"
++getarg 'rd.break=pre-mount' -d 'rdbreak=pre-mount' && emergency_shell -n pre-mount "Break pre-mount"
+ source_hook pre-mount
+
+
+-getarg 'rd.break=mount' 'rdbreak=mount' && emergency_shell -n mount "Break mount"
++getarg 'rd.break=mount' -d 'rdbreak=mount' && emergency_shell -n mount "Break mount"
+ # mount scripts actually try to mount the root filesystem, and may
+ # be sourced any number of times. As soon as one suceeds, no more are sourced.
+ i=0
+@@ -237,11 +237,11 @@ done
+
+ # pre pivot scripts are sourced just before we doing cleanup and switch over
+ # to the new root.
+-getarg 'rd.break=pre-pivot' 'rdbreak=pre-pivot' && emergency_shell -n pre-pivot "Break pre-pivot"
++getarg 'rd.break=pre-pivot' -d 'rdbreak=pre-pivot' && emergency_shell -n pre-pivot "Break pre-pivot"
+ source_hook pre-pivot
+
+ # pre pivot cleanup scripts are sourced just before we switch over to the new root.
+-getarg 'rd.break=cleanup' 'rdbreak=cleanup' && emergency_shell -n cleanup "Break cleanup"
++getarg 'rd.break=cleanup' -d 'rdbreak=cleanup' && emergency_shell -n cleanup "Break cleanup"
+ source_hook cleanup
+
+ # By the time we get here, the root filesystem should be mounted.
+@@ -340,7 +340,7 @@ wait_for_loginit
+ # remove helper symlink
+ [ -h /dev/root ] && rm -f /dev/root
+
+-getarg rd.break rdbreak && emergency_shell -n switch_root "Break before switch_root"
++getarg rd.break -d rdbreak && emergency_shell -n switch_root "Break before switch_root"
+ info "Switching root"
+
+
+diff --git a/modules.d/99base/mount-hook.sh b/modules.d/99base/mount-hook.sh
+index db07866..e32ecae 100755
+--- a/modules.d/99base/mount-hook.sh
++++ b/modules.d/99base/mount-hook.sh
+@@ -81,7 +81,7 @@ mount_root() {
+ fi
+
+ rootopts=
+- if getargbool 1 rd.fstab -n rd_NO_FSTAB \
++ if getargbool 1 rd.fstab -d -n rd_NO_FSTAB \
+ && ! getarg rootflags \
+ && [ -f "$NEWROOT/etc/fstab" ] \
+ && ! [ -L "$NEWROOT/etc/fstab" ]; then
diff --git a/0018-require-kpartx-and-partx-for-some-modules.patch b/0018-require-kpartx-and-partx-for-some-modules.patch
new file mode 100644
index 0000000..1090cf6
--- /dev/null
+++ b/0018-require-kpartx-and-partx-for-some-modules.patch
@@ -0,0 +1,79 @@
+From 8a240aca9e295eff3941d53d8d107b44859323b7 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Wed, 25 Jul 2012 13:00:08 +0200
+Subject: [PATCH] require kpartx and partx for some modules
+
+---
+ dracut.spec | 1 +
+ modules.d/90dmraid/module-setup.sh | 3 ++-
+ modules.d/90mdraid/module-setup.sh | 4 ++--
+ modules.d/90multipath/module-setup.sh | 15 ++++++++-------
+ 4 files changed, 13 insertions(+), 10 deletions(-)
+
+diff --git a/dracut.spec b/dracut.spec
+index 9a93e57..0d4062f 100644
+--- a/dracut.spec
++++ b/dracut.spec
+@@ -81,6 +81,7 @@ Requires: gzip xz
+ Requires: module-init-tools >= 3.7-9
+ Requires: sed
+ Requires: file
++Requires: kpartx
+ Requires: udev > 166
+ %if 0%{?fedora} || 0%{?rhel} > 6
+ Requires: util-linux >= 2.21
+diff --git a/modules.d/90dmraid/module-setup.sh b/modules.d/90dmraid/module-setup.sh
+index dad54a4..10c732c 100755
+--- a/modules.d/90dmraid/module-setup.sh
++++ b/modules.d/90dmraid/module-setup.sh
+@@ -51,7 +51,8 @@ depends() {
+
+ install() {
+ local _i
+- dracut_install dmraid partx kpartx
++ dracut_install dmraid
++ dracut_install -o partx kpartx
+
+ inst "$moddir/dmraid.sh" /sbin/dmraid_scan
+
+diff --git a/modules.d/90mdraid/module-setup.sh b/modules.d/90mdraid/module-setup.sh
+index 7b6f0a9..7b3c759 100755
+--- a/modules.d/90mdraid/module-setup.sh
++++ b/modules.d/90mdraid/module-setup.sh
+@@ -43,8 +43,8 @@ installkernel() {
+ }
+
+ install() {
+- dracut_install mdadm partx cat
+- dracut_install -o mdmon
++ dracut_install mdadm cat
++ dracut_install -o mdmon partx
+
+ # XXX: mdmon really needs to run as non-root?
+ # If so, write only the user it needs in the initrd's /etc/passwd (and maybe /etc/group)
+diff --git a/modules.d/90multipath/module-setup.sh b/modules.d/90multipath/module-setup.sh
+index 5944d25..b14f829 100755
+--- a/modules.d/90multipath/module-setup.sh
++++ b/modules.d/90multipath/module-setup.sh
+@@ -70,13 +70,14 @@ installkernel() {
+ install() {
+ local _f
+ dracut_install -o \
+- /sbin/dmsetup \
+- /sbin/kpartx \
+- /sbin/mpath_wait \
+- /sbin/multipath \
+- /sbin/multipathd \
+- /sbin/xdrgetuid \
+- /sbin/xdrgetprio \
++ dmsetup \
++ kpartx \
++ partx \
++ mpath_wait \
++ multipath \
++ multipathd \
++ xdrgetuid \
++ xdrgetprio \
+ /etc/xdrdevices.conf \
+ /etc/multipath.conf \
+ /etc/multipath/*
diff --git a/0019-iscsiroot.sh-do-not-source-etc-conf.d.patch b/0019-iscsiroot.sh-do-not-source-etc-conf.d.patch
new file mode 100644
index 0000000..3bdcad6
--- /dev/null
+++ b/0019-iscsiroot.sh-do-not-source-etc-conf.d.patch
@@ -0,0 +1,23 @@
+From 35022f987cfe680897ab2e83d1897a37c9ff67e0 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Wed, 25 Jul 2012 14:52:25 +0200
+Subject: [PATCH] iscsiroot.sh: do not source /etc/conf.d
+
+this should have been done already.
+---
+ modules.d/95iscsi/iscsiroot.sh | 2 --
+ 1 file changed, 2 deletions(-)
+
+diff --git a/modules.d/95iscsi/iscsiroot.sh b/modules.d/95iscsi/iscsiroot.sh
+index 87b7fa7..92414ee 100755
+--- a/modules.d/95iscsi/iscsiroot.sh
++++ b/modules.d/95iscsi/iscsiroot.sh
+@@ -27,8 +27,6 @@ PATH=/usr/sbin:/usr/bin:/sbin:/bin
+ netif="$1"
+ iroot="$2"
+
+-source_all /etc/conf.d
+-
+ # If it's not iscsi we don't continue
+ [ "${iroot%%:*}" = "iscsi" ] || exit 1
+
diff --git a/0020-dracut.asc-add-doc-about-journalctl.patch b/0020-dracut.asc-add-doc-about-journalctl.patch
new file mode 100644
index 0000000..50f7cdd
--- /dev/null
+++ b/0020-dracut.asc-add-doc-about-journalctl.patch
@@ -0,0 +1,36 @@
+From a844fb1552d7867c77caa027ea38249c26866479 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Wed, 25 Jul 2012 14:53:23 +0200
+Subject: [PATCH] dracut.asc: add doc about journalctl
+
+---
+ dracut.asc | 9 ++++++++-
+ 1 file changed, 8 insertions(+), 1 deletion(-)
+
+diff --git a/dracut.asc b/dracut.asc
+index ca896ee..1791e40 100644
+--- a/dracut.asc
++++ b/dracut.asc
+@@ -459,6 +459,13 @@ dracut shell commands are printed as they are executed
+ # less /run/initramfs/init.log
+ # dmesg | less
+ ----
++. With dracut >= 022 and systemd, you can inspect the rd.debug output with:
++----
++# journalctl -ab
++----
++
++If you want to save that output, simply mount /boot by hand or insert an USB stick and mount that.
++Then you can store the output for later inspection.
+
+ [[information-to-include-in-your-report]]
+ === Information to include in your report
+@@ -472,7 +479,7 @@ configuration file (e.g. _/etc/grub.conf_) or from _/proc/cmdline_.
+ * A copy of your disk partition information from _/etc/fstab_, which might be
+ obtained booting an old working initramfs or a rescue medium.
+ * A device listing from device-mapper. This can be obtained by running the
+-command
++command
+ +
+ ----
+ # dmsetup ls --tree
diff --git a/0021-network-module-setup.sh-instmods-af_packet.patch b/0021-network-module-setup.sh-instmods-af_packet.patch
new file mode 100644
index 0000000..21649e4
--- /dev/null
+++ b/0021-network-module-setup.sh-instmods-af_packet.patch
@@ -0,0 +1,21 @@
+From bf7883ebcaccc0bf95303098e36896cc4872d468 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Wed, 25 Jul 2012 14:56:08 +0200
+Subject: [PATCH] network/module-setup.sh: instmods af_packet
+
+---
+ modules.d/40network/module-setup.sh | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/modules.d/40network/module-setup.sh b/modules.d/40network/module-setup.sh
+index c69d81a..0ffdd07 100755
+--- a/modules.d/40network/module-setup.sh
++++ b/modules.d/40network/module-setup.sh
+@@ -73,6 +73,7 @@ installkernel() {
+ instmods bonding
+ # vlan
+ instmods 8021q
++ instmods af_packet
+ }
+
+ install() {
diff --git a/0022-Makefile-honor-CFLAGS.patch b/0022-Makefile-honor-CFLAGS.patch
new file mode 100644
index 0000000..bd96edc
--- /dev/null
+++ b/0022-Makefile-honor-CFLAGS.patch
@@ -0,0 +1,30 @@
+From e045e1f386b2e44e9be88ea53f45090dfc7e095d Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Wed, 25 Jul 2012 15:20:22 +0200
+Subject: [PATCH] Makefile: honor CFLAGS
+
+---
+ Makefile | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/Makefile b/Makefile
+index 548952d..a109ef0 100644
+--- a/Makefile
++++ b/Makefile
+@@ -8,6 +8,7 @@ pkglibdir ?= ${libdir}/dracut
+ sysconfdir ?= ${prefix}/etc
+ bindir ?= ${prefix}/bin
+ mandir ?= ${prefix}/share/man
++CFLAGS ?= -std=gnu99 -O2 -g -Wall
+
+ man1pages = lsinitrd.1
+
+@@ -46,7 +47,7 @@ DRACUT_INSTALL_HEADER = \
+ install/util.h
+
+ dracut-install: $(DRACUT_INSTALL_SOURCE) $(DRACUT_INSTALL_HEADER)
+- gcc -std=gnu99 -O2 -g -Wall -o dracut-install $(DRACUT_INSTALL_SOURCE)
++ gcc $(CFLAGS) -o dracut-install $(DRACUT_INSTALL_SOURCE)
+
+ indent:
+ indent -i8 -nut -br -linux -l120 install/dracut-install.c
diff --git a/0023-TODO-update.patch b/0023-TODO-update.patch
new file mode 100644
index 0000000..b7a766f
--- /dev/null
+++ b/0023-TODO-update.patch
@@ -0,0 +1,21 @@
+From 585fd00624d0799c2511d9f0f384a2aee9dc8a3b Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Wed, 25 Jul 2012 15:20:37 +0200
+Subject: [PATCH] TODO: update
+
+---
+ TODO | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/TODO b/TODO
+index 4fc7728..61be5d5 100644
+--- a/TODO
++++ b/TODO
+@@ -6,6 +6,7 @@ Items are ordered in priority.
+
+ INITRAMFS TODO
+
++- add sosreport
+ - generate systemd unit dracut-initramfs-restore in /run/systemd dynamically
+ - put "root=" parsing hooks in separate hook dir
+ - call "root=" parsing hooks after getting new rootpath from dhcp
diff --git a/0024-qemu-module-setup.sh-provide-alternative-for-systemd.patch b/0024-qemu-module-setup.sh-provide-alternative-for-systemd.patch
new file mode 100644
index 0000000..f1a6fd0
--- /dev/null
+++ b/0024-qemu-module-setup.sh-provide-alternative-for-systemd.patch
@@ -0,0 +1,70 @@
+From f1040fc4702778b38e6cc9eaf5b4c1ff24a7c26c Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Wed, 25 Jul 2012 16:03:49 +0200
+Subject: [PATCH] qemu*/module-setup.sh: provide alternative for
+ systemd-detect-virt
+
+---
+ modules.d/90qemu-net/module-setup.sh | 19 +++++++++++++++----
+ modules.d/90qemu/module-setup.sh | 18 ++++++++++++++----
+ 2 files changed, 29 insertions(+), 8 deletions(-)
+
+diff --git a/modules.d/90qemu-net/module-setup.sh b/modules.d/90qemu-net/module-setup.sh
+index 35c8f0f..e617230 100755
+--- a/modules.d/90qemu-net/module-setup.sh
++++ b/modules.d/90qemu-net/module-setup.sh
+@@ -3,10 +3,21 @@
+ # ex: ts=8 sw=4 sts=4 et filetype=sh
+
+ check() {
+- vm=$(systemd-detect-virt --vm &>/dev/null)
+- (($? != 0)) && return 255
+- [[ $vm = "qemu" ]] && return 0
+- [[ $vm = "kvm" ]] && return 0
++ if type -P systemd-detect-virt &>/dev/null; then
++ vm=$(systemd-detect-virt --vm &>/dev/null)
++ (($? != 0)) && return 255
++ [[ $vm = "qemu" ]] && return 0
++ [[ $vm = "kvm" ]] && return 0
++ [[ $vm = "bochs" ]] && return 0
++ fi
++
++ for i in /sys/class/dmi/id/*_vendor; do
++ [[ -f $i ]] || continue
++ read vendor < $i
++ [[ "$vendor" == "QEMU" ]] && return 0
++ [[ "$vendor" == "Bochs" ]] && return 0
++ done
++
+ return 255
+ }
+
+diff --git a/modules.d/90qemu/module-setup.sh b/modules.d/90qemu/module-setup.sh
+index 3e55f23..fc258ac 100755
+--- a/modules.d/90qemu/module-setup.sh
++++ b/modules.d/90qemu/module-setup.sh
+@@ -3,10 +3,20 @@
+ # ex: ts=8 sw=4 sts=4 et filetype=sh
+
+ check() {
+- vm=$(systemd-detect-virt --vm &>/dev/null)
+- (($? != 0)) && return 255
+- [[ $vm = "qemu" ]] && return 0
+- [[ $vm = "kvm" ]] && return 0
++ if type -P systemd-detect-virt &>/dev/null; then
++ vm=$(systemd-detect-virt --vm &>/dev/null)
++ (($? != 0)) && return 255
++ [[ $vm = "qemu" ]] && return 0
++ [[ $vm = "kvm" ]] && return 0
++ [[ $vm = "bochs" ]] && return 0
++ fi
++
++ for i in /sys/class/dmi/id/*_vendor; do
++ [[ -f $i ]] || continue
++ read vendor < $i
++ [[ "$vendor" == "QEMU" ]] && return 0
++ [[ "$vendor" == "Bochs" ]] && return 0
++ done
+ return 255
+ }
+
diff --git a/0025-Remove-object-file-from-repo-install-hashmap.o.patch b/0025-Remove-object-file-from-repo-install-hashmap.o.patch
new file mode 100644
index 0000000..3c399f5
--- /dev/null
+++ b/0025-Remove-object-file-from-repo-install-hashmap.o.patch
@@ -0,0 +1,274 @@
+From 386579a45a69c428cddffe30c473dd21213f3ea1 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Amadeusz=20=C5=BBo=C5=82nowski?= <aidecoe@aidecoe.name>
+Date: Wed, 25 Jul 2012 22:08:22 +0200
+Subject: [PATCH] Remove object file from repo: install/hashmap.o
+
+---
+ install/hashmap.o | Bin 46384 -> 0 bytes
+ 1 file changed, 0 insertions(+), 0 deletions(-)
+ delete mode 100644 install/hashmap.o
+
+diff --git a/install/hashmap.o b/install/hashmap.o
+deleted file mode 100644
+index 70262be391ee9c816ebaf9c8601bc60a7bc8a2e3..0000000000000000000000000000000000000000
+GIT binary patch
+literal 0
+HcmV?d00001
+
+literal 46384
+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
+Z;IjWdEpXX?_X}M1-z@5!Xs7JI{|kk}U*7-#
+
diff --git a/0026-Makefile-use-implicit-rules-for-install-dracut-insta.patch b/0026-Makefile-use-implicit-rules-for-install-dracut-insta.patch
new file mode 100644
index 0000000..3ea74d4
--- /dev/null
+++ b/0026-Makefile-use-implicit-rules-for-install-dracut-insta.patch
@@ -0,0 +1,77 @@
+From ab8bfca7949cf18837ead4b3aebd5f2186a6f739 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Amadeusz=20=C5=BBo=C5=82nowski?= <aidecoe@aidecoe.name>
+Date: Wed, 25 Jul 2012 22:08:23 +0200
+Subject: [PATCH] Makefile: use implicit rules for install/dracut-install
+
+Don't fail on install rule if install/dracut-install is not build - just
+skip it. $(strip) is not used by install rule, because it is nowhere
+set.
+---
+ Makefile | 30 ++++++++++++++----------------
+ 1 file changed, 14 insertions(+), 16 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index a109ef0..d013cbc 100644
+--- a/Makefile
++++ b/Makefile
+@@ -8,7 +8,8 @@ pkglibdir ?= ${libdir}/dracut
+ sysconfdir ?= ${prefix}/etc
+ bindir ?= ${prefix}/bin
+ mandir ?= ${prefix}/share/man
+-CFLAGS ?= -std=gnu99 -O2 -g -Wall
++CFLAGS ?= -O2 -g -Wall
++CFLAGS += -std=gnu99
+
+ man1pages = lsinitrd.1
+
+@@ -32,22 +33,17 @@ manpages = $(man1pages) $(man5pages) $(man7pages) $(man8pages)
+
+ .PHONY: install clean archive rpm testimage test all check AUTHORS doc
+
+-all: syncheck dracut-version.sh dracut-install
++DRACUT_INSTALL_BIN = install/dracut-install
+
+-DRACUT_INSTALL_SOURCE = \
+- install/dracut-install.c \
+- install/hashmap.c\
+- install/log.c \
+- install/util.c
++DRACUT_INSTALL_OBJECTS = \
++ install/dracut-install.o \
++ install/hashmap.o\
++ install/log.o \
++ install/util.o
+
+-DRACUT_INSTALL_HEADER = \
+- install/hashmap.h \
+- install/log.h \
+- install/macro.h \
+- install/util.h
++all: syncheck dracut-version.sh $(DRACUT_INSTALL_BIN)
+
+-dracut-install: $(DRACUT_INSTALL_SOURCE) $(DRACUT_INSTALL_HEADER)
+- gcc $(CFLAGS) -o dracut-install $(DRACUT_INSTALL_SOURCE)
++$(DRACUT_INSTALL_BIN): $(DRACUT_INSTALL_OBJECTS)
+
+ indent:
+ indent -i8 -nut -br -linux -l120 install/dracut-install.c
+@@ -99,7 +95,9 @@ install: doc dracut-version.sh
+ ln -s ../dracut-shutdown.service \
+ $(DESTDIR)$(systemdsystemunitdir)/shutdown.target.wants/dracut-shutdown.service; \
+ fi
+- install $(strip) -m 0755 dracut-install $(DESTDIR)$(pkglibdir)/dracut-install
++ if [ -x $(DRACUT_INSTALL_BIN) ]; then \
++ install -m 0755 $(DRACUT_INSTALL_BIN) $(DESTDIR)$(pkglibdir)/dracut-install; \
++ fi
+
+ dracut-version.sh:
+ @echo "DRACUT_VERSION=$(VERSION)-$(GITVERSION)" > dracut-version.sh
+@@ -110,7 +108,7 @@ clean:
+ $(RM) */*/*~
+ $(RM) test-*.img
+ $(RM) dracut-*.rpm dracut-*.tar.bz2
+- $(RM) dracut-install
++ $(RM) $(DRACUT_INSTALL_BIN) $(DRACUT_INSTALL_OBJECTS)
+ $(RM) $(manpages) dracut.html
+ $(MAKE) -C test clean
+
diff --git a/0027-95fstab-sys-Skip-mounted-filesystem.patch b/0027-95fstab-sys-Skip-mounted-filesystem.patch
new file mode 100644
index 0000000..5c1419a
--- /dev/null
+++ b/0027-95fstab-sys-Skip-mounted-filesystem.patch
@@ -0,0 +1,22 @@
+From 06c6ea654f09c9993aaddab137b4af011d9d6c0e Mon Sep 17 00:00:00 2001
+From: Chao Wang <chaowang@redhat.com>
+Date: Thu, 26 Jul 2012 11:24:25 +0800
+Subject: [PATCH] 95fstab-sys: Skip mounted filesystem.
+
+Signed-off-by: Chao Wang <chaowang@redhat.com>
+---
+ modules.d/95fstab-sys/mount-sys.sh | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/modules.d/95fstab-sys/mount-sys.sh b/modules.d/95fstab-sys/mount-sys.sh
+index a1e5ab1..12711a0 100755
+--- a/modules.d/95fstab-sys/mount-sys.sh
++++ b/modules.d/95fstab-sys/mount-sys.sh
+@@ -11,6 +11,7 @@ fstab_mount() {
+ info "Mounting from $1"
+ while read _dev _mp _fs _opts _dump _pass _rest; do
+ [ -z "${_dev%%#*}" ] && continue # Skip comment lines
++ ismounted $_mp && continue # Skip mounted filesystem
+ if [ "$_pass" -gt 0 ] && ! strstr "$_opts" _netdev; then
+ fsck_single "$_dev" "$_fs" "$_opts"
+ fi
diff --git a/0028-90multipath-check-Regexp-fix-to-match-multipath-part.patch b/0028-90multipath-check-Regexp-fix-to-match-multipath-part.patch
new file mode 100644
index 0000000..8c34785
--- /dev/null
+++ b/0028-90multipath-check-Regexp-fix-to-match-multipath-part.patch
@@ -0,0 +1,30 @@
+From 63c65b984a2baddf2a7046e65e8719f6485ec10e Mon Sep 17 00:00:00 2001
+From: Chao Wang <chaowang@redhat.com>
+Date: Thu, 26 Jul 2012 11:24:26 +0800
+Subject: [PATCH] 90multipath: check() - Regexp fix to match multipath
+ partition.
+
+A multipath partition's uuid will be presented like:
+ # cat /sys/dev/block/$_dev/dm/uuid
+ part1-mpath-360060e801047103004f2c4b300000008
+
+So in this case, change the match regexp from '^mpath-' to 'mpath-'.
+
+Signed-off-by: Chao Wang <chaowang@redhat.com>
+---
+ modules.d/90multipath/module-setup.sh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/modules.d/90multipath/module-setup.sh b/modules.d/90multipath/module-setup.sh
+index b14f829..98748d3 100755
+--- a/modules.d/90multipath/module-setup.sh
++++ b/modules.d/90multipath/module-setup.sh
+@@ -11,7 +11,7 @@ check() {
+ local _dev
+ _dev=$(get_maj_min $1)
+ [ -e /sys/dev/block/$_dev/dm/uuid ] || return 1
+- [[ $(cat /sys/dev/block/$_dev/dm/uuid) =~ ^mpath- ]] && return 0
++ [[ $(cat /sys/dev/block/$_dev/dm/uuid) =~ mpath- ]] && return 0
+ return 1
+ }
+
diff --git a/0029-dmsquash-live-do-not-eject-medium-for-live_ram.patch b/0029-dmsquash-live-do-not-eject-medium-for-live_ram.patch
new file mode 100644
index 0000000..84e85fb
--- /dev/null
+++ b/0029-dmsquash-live-do-not-eject-medium-for-live_ram.patch
@@ -0,0 +1,35 @@
+From 372c9b9647f039fa02779ca4fae3118c5f08e6f1 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Thu, 26 Jul 2012 09:25:28 +0200
+Subject: [PATCH] dmsquash-live: do not eject medium for live_ram
+
+---
+ modules.d/90dmsquash-live/dmsquash-live-root.sh | 1 -
+ modules.d/90dmsquash-live/module-setup.sh | 2 +-
+ 2 files changed, 1 insertion(+), 2 deletions(-)
+
+diff --git a/modules.d/90dmsquash-live/dmsquash-live-root.sh b/modules.d/90dmsquash-live/dmsquash-live-root.sh
+index 15f166b..f8bfca6 100755
+--- a/modules.d/90dmsquash-live/dmsquash-live-root.sh
++++ b/modules.d/90dmsquash-live/dmsquash-live-root.sh
+@@ -167,7 +167,6 @@ if [ -e "$SQUASHED" ] ; then
+ dd if=$SQUASHED of=/squashed.img bs=512 2> /dev/null
+ umount -n /run/initramfs/live
+ echo "Done copying live image to RAM."
+- eject -p $livedev || :
+ SQUASHED="/squashed.img"
+ fi
+
+diff --git a/modules.d/90dmsquash-live/module-setup.sh b/modules.d/90dmsquash-live/module-setup.sh
+index 05603a5..3339e1d 100755
+--- a/modules.d/90dmsquash-live/module-setup.sh
++++ b/modules.d/90dmsquash-live/module-setup.sh
+@@ -21,7 +21,7 @@ installkernel() {
+
+ install() {
+ dracut_install umount dmsetup blkid dd losetup grep blockdev
+- dracut_install -o eject checkisomd5
++ dracut_install -o checkisomd5
+ inst_hook cmdline 30 "$moddir/parse-dmsquash-live.sh"
+ inst_hook pre-udev 30 "$moddir/dmsquash-live-genrules.sh"
+ inst_hook pre-udev 30 "$moddir/dmsquash-liveiso-genrules.sh"
diff --git a/0030-Remove-obsolete-gentoo-conf-file.patch b/0030-Remove-obsolete-gentoo-conf-file.patch
new file mode 100644
index 0000000..b210c9d
--- /dev/null
+++ b/0030-Remove-obsolete-gentoo-conf-file.patch
@@ -0,0 +1,43 @@
+From f6297ebe736c832d72a69c8a27b64152eb5559a6 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Amadeusz=20=C5=BBo=C5=82nowski?= <aidecoe@aidecoe.name>
+Date: Thu, 26 Jul 2012 09:35:56 +0200
+Subject: [PATCH] Remove obsolete gentoo conf file.
+
+---
+ dracut.conf.d/gentoo-openrc.conf.example | 9 ---------
+ dracut.conf.d/gentoo.conf.example | 6 +++---
+ 2 files changed, 3 insertions(+), 12 deletions(-)
+ delete mode 100644 dracut.conf.d/gentoo-openrc.conf.example
+
+diff --git a/dracut.conf.d/gentoo-openrc.conf.example b/dracut.conf.d/gentoo-openrc.conf.example
+deleted file mode 100644
+index f5aa8ed..0000000
+--- a/dracut.conf.d/gentoo-openrc.conf.example
++++ /dev/null
+@@ -1,9 +0,0 @@
+-# /etc/dracut.conf.d/gentoo-openrc.conf
+-# Dracut config file customized for Gentoo Base System release 2
+-
+-#
+-# Modules
+-#
+-
+-# i18n
+-i18n_vars="/etc/conf.d/keymaps:keymap-KEYMAP,extended_keymaps-EXT_KEYMAPS /etc/conf.d/consolefont:consolefont-FONT,consoletranslation-FONT_MAP /etc/rc.conf:unicode-UNICODE"
+diff --git a/dracut.conf.d/gentoo.conf.example b/dracut.conf.d/gentoo.conf.example
+index a40b746..f5aa8ed 100644
+--- a/dracut.conf.d/gentoo.conf.example
++++ b/dracut.conf.d/gentoo.conf.example
+@@ -1,9 +1,9 @@
+-# /etc/dracut.conf.d/gentoo.conf
+-# Dracut config file customized for Gentoo Base System release 1
++# /etc/dracut.conf.d/gentoo-openrc.conf
++# Dracut config file customized for Gentoo Base System release 2
+
+ #
+ # Modules
+ #
+
+ # i18n
+-i18n_vars="/etc/conf.d/keymaps:KEYMAP,EXTENDED_KEYMAPS-EXT_KEYMAPS /etc/conf.d/consolefont:CONSOLEFONT-FONT,CONSOLETRANSLATION-FONT_MAP /etc/rc.conf:UNICODE"
++i18n_vars="/etc/conf.d/keymaps:keymap-KEYMAP,extended_keymaps-EXT_KEYMAPS /etc/conf.d/consolefont:consolefont-FONT,consoletranslation-FONT_MAP /etc/rc.conf:unicode-UNICODE"
diff --git a/0031-Config-file-for-systemd-on-Gentoo.patch b/0031-Config-file-for-systemd-on-Gentoo.patch
new file mode 100644
index 0000000..25bbdc6
--- /dev/null
+++ b/0031-Config-file-for-systemd-on-Gentoo.patch
@@ -0,0 +1,21 @@
+From e625eea4f9af15f9de6e840e6db797b5f50b7e1f Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Amadeusz=20=C5=BBo=C5=82nowski?= <aidecoe@aidecoe.name>
+Date: Thu, 26 Jul 2012 09:35:57 +0200
+Subject: [PATCH] Config file for systemd on Gentoo.
+
+---
+ dracut.conf.d/gentoo-systemd.conf.example | 5 +++++
+ 1 file changed, 5 insertions(+)
+ create mode 100644 dracut.conf.d/gentoo-systemd.conf.example
+
+diff --git a/dracut.conf.d/gentoo-systemd.conf.example b/dracut.conf.d/gentoo-systemd.conf.example
+new file mode 100644
+index 0000000..00af70b
+--- /dev/null
++++ b/dracut.conf.d/gentoo-systemd.conf.example
+@@ -0,0 +1,5 @@
++# /etc/dracut.conf.d/gentoo-systemd.conf
++
++# Paths of systemd dirs on Gentoo
++systemdutildir=/usr/lib/systemd
++systemdsystemunitdir=/usr/lib/systemd/system
diff --git a/0032-gentoo.conf-set-udevdir.patch b/0032-gentoo.conf-set-udevdir.patch
new file mode 100644
index 0000000..0f70f27
--- /dev/null
+++ b/0032-gentoo.conf-set-udevdir.patch
@@ -0,0 +1,22 @@
+From f67a1f7f64bbc48edbcf76a09cac0573ea626653 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Amadeusz=20=C5=BBo=C5=82nowski?= <aidecoe@aidecoe.name>
+Date: Thu, 26 Jul 2012 09:35:58 +0200
+Subject: [PATCH] gentoo.conf: set udevdir
+
+---
+ dracut.conf.d/gentoo.conf.example | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/dracut.conf.d/gentoo.conf.example b/dracut.conf.d/gentoo.conf.example
+index f5aa8ed..411f9a0 100644
+--- a/dracut.conf.d/gentoo.conf.example
++++ b/dracut.conf.d/gentoo.conf.example
+@@ -1,6 +1,8 @@
+ # /etc/dracut.conf.d/gentoo-openrc.conf
+ # Dracut config file customized for Gentoo Base System release 2
+
++udevdir=/lib/udev
++
+ #
+ # Modules
+ #
diff --git a/0033-90kernel-modules-remove-unused-variables-in-install.patch b/0033-90kernel-modules-remove-unused-variables-in-install.patch
new file mode 100644
index 0000000..58715b8
--- /dev/null
+++ b/0033-90kernel-modules-remove-unused-variables-in-install.patch
@@ -0,0 +1,25 @@
+From 823311ea3b7bd74570e56a804b7dc166d6b74e27 Mon Sep 17 00:00:00 2001
+From: Cong Wang <xiyou.wangcong@gmail.com>
+Date: Thu, 26 Jul 2012 15:39:13 +0800
+Subject: [PATCH] 90kernel-modules: remove unused variables in install()
+
+The local variables in install() are unused, can be removed.
+
+Cc: Harald Hoyer <harald@redhat.com>
+Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
+---
+ modules.d/90kernel-modules/module-setup.sh | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/modules.d/90kernel-modules/module-setup.sh b/modules.d/90kernel-modules/module-setup.sh
+index 1632367..5018dc1 100755
+--- a/modules.d/90kernel-modules/module-setup.sh
++++ b/modules.d/90kernel-modules/module-setup.sh
+@@ -75,7 +75,6 @@ installkernel() {
+ }
+
+ install() {
+- local _f i
+ [ -f /etc/modprobe.conf ] && dracut_install /etc/modprobe.conf
+ dracut_install -o /{etc,lib}/modprobe.d/*.conf
+ inst_hook cmdline 01 "$moddir/parse-kernel.sh"
diff --git a/0034-90multipath-added-kpartx.rules-multipath.rules-diffe.patch b/0034-90multipath-added-kpartx.rules-multipath.rules-diffe.patch
new file mode 100644
index 0000000..ed935ac
--- /dev/null
+++ b/0034-90multipath-added-kpartx.rules-multipath.rules-diffe.patch
@@ -0,0 +1,22 @@
+From 15f0b1f62446cb1a28166f3d53d63f00557f42a8 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Amadeusz=20=C5=BBo=C5=82nowski?= <aidecoe@aidecoe.name>
+Date: Thu, 26 Jul 2012 11:38:04 +0200
+Subject: [PATCH] 90multipath: added kpartx.rules; multipath.rules - different
+ prefix
+
+---
+ modules.d/90multipath/module-setup.sh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/modules.d/90multipath/module-setup.sh b/modules.d/90multipath/module-setup.sh
+index 98748d3..862a8ed 100755
+--- a/modules.d/90multipath/module-setup.sh
++++ b/modules.d/90multipath/module-setup.sh
+@@ -86,6 +86,6 @@ install() {
+
+ inst_hook pre-trigger 02 "$moddir/multipathd.sh"
+ inst_hook cleanup 02 "$moddir/multipathd-stop.sh"
+- inst_rules 40-multipath.rules
++ inst_rules 40-multipath.rules 65-multipath.rules 66-kpartx.rules
+ }
+
diff --git a/0035-Makefile-fixed-dracut-install-make-target.patch b/0035-Makefile-fixed-dracut-install-make-target.patch
new file mode 100644
index 0000000..0594035
--- /dev/null
+++ b/0035-Makefile-fixed-dracut-install-make-target.patch
@@ -0,0 +1,77 @@
+From 24ba78cb77b3a8ce50902da1795a2d3cdac11691 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Thu, 26 Jul 2012 11:50:50 +0200
+Subject: [PATCH] Makefile: fixed dracut-install make target
+
+---
+ Makefile | 27 +++++++++++++++++----------
+ dracut.spec | 1 +
+ 2 files changed, 18 insertions(+), 10 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index d013cbc..0dbc6eb 100644
+--- a/Makefile
++++ b/Makefile
+@@ -33,17 +33,24 @@ manpages = $(man1pages) $(man5pages) $(man7pages) $(man8pages)
+
+ .PHONY: install clean archive rpm testimage test all check AUTHORS doc
+
+-DRACUT_INSTALL_BIN = install/dracut-install
+-
+-DRACUT_INSTALL_OBJECTS = \
+- install/dracut-install.o \
+- install/hashmap.o\
+- install/log.o \
+- install/util.o
++DRACUT_INSTALL_BIN = dracut-install
+
+ all: syncheck dracut-version.sh $(DRACUT_INSTALL_BIN)
+
+-$(DRACUT_INSTALL_BIN): $(DRACUT_INSTALL_OBJECTS)
++DRACUT_INSTALL_SOURCE = \
++ install/dracut-install.c \
++ install/hashmap.c\
++ install/log.c \
++ install/util.c
++
++DRACUT_INSTALL_HEADER = \
++ install/hashmap.h \
++ install/log.h \
++ install/macro.h \
++ install/util.h
++
++$(DRACUT_INSTALL_BIN): $(DRACUT_INSTALL_SOURCE) $(DRACUT_INSTALL_HEADER)
++ $(CC) $(CFLAGS) $(LDFLAGS) -o $(DRACUT_INSTALL_BIN) $(DRACUT_INSTALL_SOURCE)
+
+ indent:
+ indent -i8 -nut -br -linux -l120 install/dracut-install.c
+@@ -95,7 +102,7 @@ install: doc dracut-version.sh
+ ln -s ../dracut-shutdown.service \
+ $(DESTDIR)$(systemdsystemunitdir)/shutdown.target.wants/dracut-shutdown.service; \
+ fi
+- if [ -x $(DRACUT_INSTALL_BIN) ]; then \
++ if [ -f $(DRACUT_INSTALL_BIN) ]; then \
+ install -m 0755 $(DRACUT_INSTALL_BIN) $(DESTDIR)$(pkglibdir)/dracut-install; \
+ fi
+
+@@ -108,7 +115,7 @@ clean:
+ $(RM) */*/*~
+ $(RM) test-*.img
+ $(RM) dracut-*.rpm dracut-*.tar.bz2
+- $(RM) $(DRACUT_INSTALL_BIN) $(DRACUT_INSTALL_OBJECTS)
++ $(RM) $(DRACUT_INSTALL_BIN)
+ $(RM) $(manpages) dracut.html
+ $(MAKE) -C test clean
+
+diff --git a/dracut.spec b/dracut.spec
+index 0d4062f..d960506 100644
+--- a/dracut.spec
++++ b/dracut.spec
+@@ -286,6 +286,7 @@ rm -rf $RPM_BUILD_ROOT
+ %{dracutlibdir}/modules.d/90multipath
+ %{dracutlibdir}/modules.d/90qemu
+ %{dracutlibdir}/modules.d/91crypt-gpg
++%{dracutlibdir}/modules.d/91crypt-loop
+ %{dracutlibdir}/modules.d/95debug
+ %{dracutlibdir}/modules.d/95resume
+ %{dracutlibdir}/modules.d/95rootfs-block
diff --git a/0036-multipath-module-setup.sh-add-dm-dependency.patch b/0036-multipath-module-setup.sh-add-dm-dependency.patch
new file mode 100644
index 0000000..486723a
--- /dev/null
+++ b/0036-multipath-module-setup.sh-add-dm-dependency.patch
@@ -0,0 +1,21 @@
+From 15976a06701fc565b591e2bbfc36d0f5c3daac2b Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Thu, 26 Jul 2012 12:43:20 +0200
+Subject: [PATCH] multipath/module-setup.sh: add dm dependency
+
+---
+ modules.d/90multipath/module-setup.sh | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/modules.d/90multipath/module-setup.sh b/modules.d/90multipath/module-setup.sh
+index 862a8ed..f9c1f81 100755
+--- a/modules.d/90multipath/module-setup.sh
++++ b/modules.d/90multipath/module-setup.sh
+@@ -24,6 +24,7 @@ check() {
+
+ depends() {
+ echo rootfs-block
++ echo dm
+ return 0
+ }
+
diff --git a/0037-Makefile-use-symlink-for-topsrcdir-dracut-install.patch b/0037-Makefile-use-symlink-for-topsrcdir-dracut-install.patch
new file mode 100644
index 0000000..7f8ba5f
--- /dev/null
+++ b/0037-Makefile-use-symlink-for-topsrcdir-dracut-install.patch
@@ -0,0 +1,85 @@
+From 4a1255bc38937714fb76702780147d0be465131d Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Thu, 26 Jul 2012 12:27:29 +0200
+Subject: [PATCH] Makefile: use symlink for topsrcdir/dracut-install
+
+---
+ Makefile | 34 ++++++++++++++--------------------
+ 1 file changed, 14 insertions(+), 20 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index 0dbc6eb..28381df 100644
+--- a/Makefile
++++ b/Makefile
+@@ -33,24 +33,18 @@ manpages = $(man1pages) $(man5pages) $(man7pages) $(man8pages)
+
+ .PHONY: install clean archive rpm testimage test all check AUTHORS doc
+
+-DRACUT_INSTALL_BIN = dracut-install
++all: syncheck dracut-version.sh dracut-install
+
+-all: syncheck dracut-version.sh $(DRACUT_INSTALL_BIN)
++DRACUT_INSTALL_OBJECTS = \
++ install/dracut-install.o \
++ install/hashmap.o\
++ install/log.o \
++ install/util.o
+
+-DRACUT_INSTALL_SOURCE = \
+- install/dracut-install.c \
+- install/hashmap.c\
+- install/log.c \
+- install/util.c
++install/dracut-install: $(DRACUT_INSTALL_OBJECTS)
+
+-DRACUT_INSTALL_HEADER = \
+- install/hashmap.h \
+- install/log.h \
+- install/macro.h \
+- install/util.h
+-
+-$(DRACUT_INSTALL_BIN): $(DRACUT_INSTALL_SOURCE) $(DRACUT_INSTALL_HEADER)
+- $(CC) $(CFLAGS) $(LDFLAGS) -o $(DRACUT_INSTALL_BIN) $(DRACUT_INSTALL_SOURCE)
++dracut-install: install/dracut-install
++ ln -fs $< $@
+
+ indent:
+ indent -i8 -nut -br -linux -l120 install/dracut-install.c
+@@ -86,7 +80,7 @@ install: doc dracut-version.sh
+ mkdir -p $(DESTDIR)$(sysconfdir)/dracut.conf.d
+ install -m 0755 dracut-functions.sh $(DESTDIR)$(pkglibdir)/dracut-functions.sh
+ install -m 0755 dracut-version.sh $(DESTDIR)$(pkglibdir)/dracut-version.sh
+- ln -s dracut-functions.sh $(DESTDIR)$(pkglibdir)/dracut-functions
++ ln -fs dracut-functions.sh $(DESTDIR)$(pkglibdir)/dracut-functions
+ install -m 0755 dracut-logger.sh $(DESTDIR)$(pkglibdir)/dracut-logger.sh
+ install -m 0755 dracut-initramfs-restore.sh $(DESTDIR)$(pkglibdir)/dracut-initramfs-restore
+ cp -arx modules.d $(DESTDIR)$(pkglibdir)
+@@ -94,7 +88,7 @@ install: doc dracut-version.sh
+ for i in $(man5pages); do install -m 0644 $$i $(DESTDIR)$(mandir)/man5/$${i##*/}; done
+ for i in $(man7pages); do install -m 0644 $$i $(DESTDIR)$(mandir)/man7/$${i##*/}; done
+ for i in $(man8pages); do install -m 0644 $$i $(DESTDIR)$(mandir)/man8/$${i##*/}; done
+- ln -s dracut.cmdline.7 $(DESTDIR)$(mandir)/man7/dracut.kernel.7
++ ln -fs dracut.cmdline.7 $(DESTDIR)$(mandir)/man7/dracut.kernel.7
+ if [ -n "$(systemdsystemunitdir)" ]; then \
+ mkdir -p $(DESTDIR)$(systemdsystemunitdir); \
+ install -m 0644 dracut-shutdown.service $(DESTDIR)$(systemdsystemunitdir); \
+@@ -102,8 +96,8 @@ install: doc dracut-version.sh
+ ln -s ../dracut-shutdown.service \
+ $(DESTDIR)$(systemdsystemunitdir)/shutdown.target.wants/dracut-shutdown.service; \
+ fi
+- if [ -f $(DRACUT_INSTALL_BIN) ]; then \
+- install -m 0755 $(DRACUT_INSTALL_BIN) $(DESTDIR)$(pkglibdir)/dracut-install; \
++ if [ -f install/dracut-install ]; then \
++ install -m 0755 install/dracut-install $(DESTDIR)$(pkglibdir)/dracut-install; \
+ fi
+
+ dracut-version.sh:
+@@ -115,7 +109,7 @@ clean:
+ $(RM) */*/*~
+ $(RM) test-*.img
+ $(RM) dracut-*.rpm dracut-*.tar.bz2
+- $(RM) $(DRACUT_INSTALL_BIN)
++ $(RM) $(DRACUT_INSTALL_BIN) install/dracut-install $(DRACUT_INSTALL_OBJECTS)
+ $(RM) $(manpages) dracut.html
+ $(MAKE) -C test clean
+
diff --git a/0038-systemd-dracut-cmdline.sh-output-dracut-version.patch b/0038-systemd-dracut-cmdline.sh-output-dracut-version.patch
new file mode 100644
index 0000000..6faf2d1
--- /dev/null
+++ b/0038-systemd-dracut-cmdline.sh-output-dracut-version.patch
@@ -0,0 +1,23 @@
+From 93d7b823b43207323ca7a2947103b668e905eb94 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Thu, 26 Jul 2012 14:23:31 +0200
+Subject: [PATCH] systemd/dracut-cmdline.sh: output dracut version
+
+---
+ modules.d/98systemd/dracut-cmdline.sh | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/modules.d/98systemd/dracut-cmdline.sh b/modules.d/98systemd/dracut-cmdline.sh
+index 77ad121..927b99a 100755
+--- a/modules.d/98systemd/dracut-cmdline.sh
++++ b/modules.d/98systemd/dracut-cmdline.sh
+@@ -12,6 +12,9 @@ if [ -f /dracut-state.sh ]; then
+ fi
+ type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh
+
++[ -f /etc/initrd-release ] && . /etc/initrd-release
++[ -n "$VERSION" ] && info "dracut-$VERSION"
++
+ source_conf /etc/conf.d
+
+ # run scriptlets to parse the command line
diff --git a/0039-95rootfs-block-fix-left-fsck-rel.-checks.patch b/0039-95rootfs-block-fix-left-fsck-rel.-checks.patch
new file mode 100644
index 0000000..4ac69df
--- /dev/null
+++ b/0039-95rootfs-block-fix-left-fsck-rel.-checks.patch
@@ -0,0 +1,42 @@
+From af3b67b21308a7b91bb423ae93af54a6a3e41afd Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Amadeusz=20=C5=BBo=C5=82nowski?= <aidecoe@aidecoe.name>
+Date: Thu, 26 Jul 2012 15:05:21 +0200
+Subject: [PATCH] 95rootfs-block: fix left fsck rel. checks
+
+---
+ modules.d/95rootfs-block/mount-root.sh | 14 ++++++++------
+ 1 file changed, 8 insertions(+), 6 deletions(-)
+
+diff --git a/modules.d/95rootfs-block/mount-root.sh b/modules.d/95rootfs-block/mount-root.sh
+index 670f6e3..ef8ca3c 100755
+--- a/modules.d/95rootfs-block/mount-root.sh
++++ b/modules.d/95rootfs-block/mount-root.sh
+@@ -52,11 +52,11 @@ mount_root() {
+ fastboot=yes
+ fi
+
+- if [ -f "$NEWROOT"/fsckoptions ]; then
+- fsckoptions=$(cat "$NEWROOT"/fsckoptions)
+- fi
+-
+ if ! getargbool 0 rd.skipfsck; then
++ if [ -f "$NEWROOT"/fsckoptions ]; then
++ fsckoptions=$(cat "$NEWROOT"/fsckoptions)
++ fi
++
+ if [ -f "$NEWROOT"/forcefsck ] || getargbool 0 forcefsck ; then
+ fsckoptions="-f $fsckoptions"
+ elif [ -f "$NEWROOT"/.autofsck ]; then
+@@ -130,8 +130,10 @@ mount_root() {
+ mount -o remount "$NEWROOT" 2>&1 | vinfo
+ fi
+
+- [ -f "$NEWROOT"/forcefsck ] && rm -f "$NEWROOT"/forcefsck 2>/dev/null
+- [ -f "$NEWROOT"/.autofsck ] && rm -f "$NEWROOT"/.autofsck 2>/dev/null
++ if ! getargbool 0 rd.skipfsck; then
++ [ -f "$NEWROOT"/forcefsck ] && rm -f "$NEWROOT"/forcefsck 2>/dev/null
++ [ -f "$NEWROOT"/.autofsck ] && rm -f "$NEWROOT"/.autofsck 2>/dev/null
++ fi
+ }
+
+ if [ -n "$root" -a -z "${root%%block:*}" ]; then
diff --git a/0040-98usrmount-use-rw-and-ro-options-instead-of-rd.usrmo.patch b/0040-98usrmount-use-rw-and-ro-options-instead-of-rd.usrmo.patch
new file mode 100644
index 0000000..6bb1bd8
--- /dev/null
+++ b/0040-98usrmount-use-rw-and-ro-options-instead-of-rd.usrmo.patch
@@ -0,0 +1,78 @@
+From 5afa95791594383c1f1ef7a757a7482717d6fd5f Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Amadeusz=20=C5=BBo=C5=82nowski?= <aidecoe@aidecoe.name>
+Date: Thu, 26 Jul 2012 15:05:22 +0200
+Subject: [PATCH] 98usrmount: use rw and ro options instead of rd.usrmount.ro
+
+In result /usr is forced to be mounted ro or rw along with /.
+---
+ dracut.cmdline.7.asc | 12 ++++++++----
+ modules.d/98usrmount/mount-usr.sh | 18 +++++++++---------
+ 2 files changed, 17 insertions(+), 13 deletions(-)
+
+diff --git a/dracut.cmdline.7.asc b/dracut.cmdline.7.asc
+index 755d641..8f642f3 100644
+--- a/dracut.cmdline.7.asc
++++ b/dracut.cmdline.7.asc
+@@ -61,6 +61,14 @@ rootfstype=ext3
+ _/etc/fstab_ of the real root will be parsed for special mount options and
+ mounted accordingly.
+
++**ro**::
++ force mounting _/_ and _/usr_ (if it is a separate device) read-only. If
++ none of ro and rw is present, both are mounted according to _/etc/fstab_.
++
++**rw**::
++ force mounting _/_ and _/usr_ (if it is a separate device) read-write.
++ See also ro option.
++
+ **rd.fstab=0**::
+ do not honor special mount options for the root filesystem found in
+ _/etc/fstab_ of the real root.
+@@ -81,10 +89,6 @@ resume=UUID=3f5ad593-4546-4a94-a374-bcfb68aa11f7
+ the init system performs fsck before remount, you might want to use this
+ option to avoid duplication.
+
+-**rd.usrmount.ro**:
+- force mounting _/usr_ read-only. Use this option if your init system
+- performs remount of _/usr_ the same as it does with rootfs.
+-
+
+ Misc
+ ~~~~
+diff --git a/modules.d/98usrmount/mount-usr.sh b/modules.d/98usrmount/mount-usr.sh
+index c277d74..98e08e3 100755
+--- a/modules.d/98usrmount/mount-usr.sh
++++ b/modules.d/98usrmount/mount-usr.sh
+@@ -57,9 +57,12 @@ mount_usr()
+ [ -n "$rflags" ]; then
+ # for btrfs subvolumes we have to mount /usr with the same rflags
+ _opts="${_opts:+${_opts},}${rflags}"
+- elif getarg ro; then
+- # if "ro" is specified, we want /usr to be readonly, too
++ elif getargbool 0 ro; then
++ # if "ro" is specified, we want /usr to be mounted read-only
+ _opts="${_opts:+${_opts},}ro"
++ elif getargbool 0 rw; then
++ # if "rw" is specified, we want /usr to be mounted read-write
++ _opts="${_opts:+${_opts},}rw"
+ fi
+ echo "$_dev ${NEWROOT}${_mp} $_fs ${_opts} $_freq $_passno"
+ _usr_found="1"
+@@ -77,13 +80,10 @@ mount_usr()
+ [ $_fsck_ret -ne 255 ] && echo $_fsck_ret >/run/initramfs/usr-fsck
+ fi
+ fi
+- if getargbool 0 rd.usrmount.ro; then
+- info "Mounting /usr (read-only forced)"
+- mount -r "$NEWROOT/usr" 2>&1 | vinfo
+- else
+- info "Mounting /usr"
+- mount "$NEWROOT/usr" 2>&1 | vinfo
+- fi
++
++ info "Mounting /usr"
++ mount "$NEWROOT/usr" 2>&1 | vinfo
++
+ if ! ismounted "$NEWROOT/usr"; then
+ warn "Mounting /usr to $NEWROOT/usr failed"
+ warn "*** Dropping you to a shell; the system will continue"
diff --git a/0041-98usrmount-print-mount-options.patch b/0041-98usrmount-print-mount-options.patch
new file mode 100644
index 0000000..10976c0
--- /dev/null
+++ b/0041-98usrmount-print-mount-options.patch
@@ -0,0 +1,22 @@
+From b56e174322f9998b86e6272fdcca009d2a2ab7a4 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Amadeusz=20=C5=BBo=C5=82nowski?= <aidecoe@aidecoe.name>
+Date: Thu, 26 Jul 2012 15:05:23 +0200
+Subject: [PATCH] 98usrmount: print mount options
+
+---
+ modules.d/98usrmount/mount-usr.sh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/modules.d/98usrmount/mount-usr.sh b/modules.d/98usrmount/mount-usr.sh
+index 98e08e3..f4d59b3 100755
+--- a/modules.d/98usrmount/mount-usr.sh
++++ b/modules.d/98usrmount/mount-usr.sh
+@@ -81,7 +81,7 @@ mount_usr()
+ fi
+ fi
+
+- info "Mounting /usr"
++ info "Mounting /usr with -o $_opts"
+ mount "$NEWROOT/usr" 2>&1 | vinfo
+
+ if ! ismounted "$NEWROOT/usr"; then
diff --git a/0042-98usrmount-x-_usr_found-x-removed-redundant-x.patch b/0042-98usrmount-x-_usr_found-x-removed-redundant-x.patch
new file mode 100644
index 0000000..e63be3e
--- /dev/null
+++ b/0042-98usrmount-x-_usr_found-x-removed-redundant-x.patch
@@ -0,0 +1,23 @@
+From 221c342d5068c1fa05e38c44b1044a0aacae4a5c Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Amadeusz=20=C5=BBo=C5=82nowski?= <aidecoe@aidecoe.name>
+Date: Thu, 26 Jul 2012 15:05:24 +0200
+Subject: [PATCH] 98usrmount: [ "x$_usr_found" != "x" ] - removed redundant
+ 'x'
+
+---
+ modules.d/98usrmount/mount-usr.sh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/modules.d/98usrmount/mount-usr.sh b/modules.d/98usrmount/mount-usr.sh
+index f4d59b3..cca41c3 100755
+--- a/modules.d/98usrmount/mount-usr.sh
++++ b/modules.d/98usrmount/mount-usr.sh
+@@ -70,7 +70,7 @@ mount_usr()
+ fi
+ done < "$NEWROOT/etc/fstab" >> /etc/fstab
+
+- if [ "x$_usr_found" != "x" ]; then
++ if [ "$_usr_found" != "" ]; then
+ # we have to mount /usr
+ _fsck_ret=0
+ if ! getargbool 0 rd.skipfsck; then
diff --git a/0043-dracut-lib-new-functions-listlist-and-are_lists_eq.patch b/0043-dracut-lib-new-functions-listlist-and-are_lists_eq.patch
new file mode 100644
index 0000000..f0ae8e9
--- /dev/null
+++ b/0043-dracut-lib-new-functions-listlist-and-are_lists_eq.patch
@@ -0,0 +1,57 @@
+From 5767201eaf7d2265066d17cd5b97691cbb191e3b Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Amadeusz=20=C5=BBo=C5=82nowski?= <aidecoe@aidecoe.name>
+Date: Thu, 26 Jul 2012 15:05:25 +0200
+Subject: [PATCH] dracut-lib: new functions: listlist and are_lists_eq
+
+listlist is like strstr for lists with specified separator and
+are_lists_eq uses listlist to check equality of specified lists.
+---
+ modules.d/99base/dracut-lib.sh | 38 ++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 38 insertions(+)
+
+diff --git a/modules.d/99base/dracut-lib.sh b/modules.d/99base/dracut-lib.sh
+index 786661e..2eb1224 100755
+--- a/modules.d/99base/dracut-lib.sh
++++ b/modules.d/99base/dracut-lib.sh
+@@ -906,3 +906,41 @@ export_n()
+ [ -n "$val" ] && eval $var=\"$val\"
+ done
+ }
++
++# returns OK if list1 contains all elements of list2, i.e. checks if list2 is a
++# sublist of list1. An order and a duplication doesn't matter.
++#
++# $1 = separator
++# $2 = list1
++# $3 = list2
++# $4 = ignore values, separated by $1
++listlist() {
++ local _sep="$1"
++ local _list="${_sep}${2}${_sep}"
++ local _sublist="$3"
++ [ -n "$4" ] && local _iglist="${_sep}${4}${_sep}"
++ local IFS="$_sep"
++ local _v
++
++ [ "$_list" = "$_sublist" ] && return 0
++
++ for _v in $_sublist; do
++ if [ -n "$_v" ] && ! ( [ -n "$_iglist" ] && strstr "$_iglist" "$_v" )
++ then
++ strstr "$_list" "$_v" || return 1
++ fi
++ done
++
++ return 0
++}
++
++# returns OK if both lists contain the same values. An order and a duplication
++# doesn't matter.
++#
++# $1 = separator
++# $2 = list1
++# $3 = list2
++# $4 = ignore values, separated by $1
++are_lists_eq() {
++ listlist "$1" "$2" "$3" "$4" && listlist "$1" "$3" "$2" "$4"
++}
diff --git a/0044-apply-ro-and-rw-options-from-cmdline-to-mount.patch b/0044-apply-ro-and-rw-options-from-cmdline-to-mount.patch
new file mode 100644
index 0000000..d60dd2c
--- /dev/null
+++ b/0044-apply-ro-and-rw-options-from-cmdline-to-mount.patch
@@ -0,0 +1,108 @@
+From 79148c2945e4799796b24cadf1769e413841f768 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Amadeusz=20=C5=BBo=C5=82nowski?= <aidecoe@aidecoe.name>
+Date: Thu, 26 Jul 2012 15:05:26 +0200
+Subject: [PATCH] apply "ro" and "rw" options from cmdline to / mount
+
+rflags is no longer guaranteed to be non empty. / is mounted according
+to rootflags parameter but forced ro at first. Later it is remounted
+according to /etc/fstab + rootflags parameter and "ro"/"rw". If
+parameters are still the same as for first mount, / isn't remounted.
+
+Conflicts:
+
+ modules.d/95rootfs-block/mount-root.sh
+ modules.d/99base/parse-root-opts.sh
+---
+ modules.d/95rootfs-block/mount-root.sh | 35 ++++++++--------------------------
+ modules.d/99base/parse-root-opts.sh | 11 ++++-------
+ 2 files changed, 12 insertions(+), 34 deletions(-)
+
+diff --git a/modules.d/95rootfs-block/mount-root.sh b/modules.d/95rootfs-block/mount-root.sh
+index ef8ca3c..de9753a 100755
+--- a/modules.d/95rootfs-block/mount-root.sh
++++ b/modules.d/95rootfs-block/mount-root.sh
+@@ -5,32 +5,13 @@
+ type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh
+ type det_fs >/dev/null 2>&1 || . /lib/fs-lib.sh
+
+-filter_rootopts() {
+- rootopts=$1
+- # strip ro and rw options
+- local OLDIFS="$IFS"
+- IFS=,
+- set -- $rootopts
+- IFS="$OLDIFS"
+- local v
+- while [ $# -gt 0 ]; do
+- case $1 in
+- defaults);;
+- *)
+- v="$v,${1}";;
+- esac
+- shift
+- done
+- rootopts=${v#,}
+- echo $rootopts
+-}
+-
+ mount_root() {
+ local _ret
++ local _rflags_ro="$rflags,ro"
+ # sanity - determine/fix fstype
+ rootfs=$(det_fs "${root#block:}" "$fstype")
+- while ! mount -t ${rootfs} -o "$rflags",ro "${root#block:}" "$NEWROOT"; do
+- warn "Failed to mount -t ${rootfs} -o $rflags,ro ${root#block:} $NEWROOT"
++ while ! mount -t ${rootfs} -o "$_rflags_ro" "${root#block:}" "$NEWROOT"; do
++ warn "Failed to mount -t ${rootfs} -o $_rflags_ro ${root#block:} $NEWROOT"
+ fsck_ask_err
+ done
+
+@@ -96,13 +77,13 @@ mount_root() {
+ break
+ fi
+ done < "$NEWROOT/etc/fstab"
+-
+- rootopts=$(filter_rootopts $rootopts)
+ fi
+
+ # we want rootflags (rflags) to take precedence so prepend rootopts to
+- # them; rflags is guaranteed to not be empty
+- rflags="${rootopts:+${rootopts},}${rflags}"
++ # them
++ rflags="${rootopts},${rflags}"
++ rflags="${rflags#,}"
++ rflags="${rflags%,}"
+
+ # backslashes are treated as escape character in fstab
+ # esc_root=$(echo ${root#block:} | sed 's,\\,\\\\,g')
+@@ -125,7 +106,7 @@ mount_root() {
+ if ! ismounted "$NEWROOT"; then
+ info "Mounting ${root#block:} with -o ${rflags}"
+ mount "$NEWROOT" 2>&1 | vinfo
+- else
++ elif ! are_lists_eq , "$rflags" "$_rflags_ro" defaults; then
+ info "Remounting ${root#block:} with -o ${rflags}"
+ mount -o remount "$NEWROOT" 2>&1 | vinfo
+ fi
+diff --git a/modules.d/99base/parse-root-opts.sh b/modules.d/99base/parse-root-opts.sh
+index 44dcc09..7b0b758 100755
+--- a/modules.d/99base/parse-root-opts.sh
++++ b/modules.d/99base/parse-root-opts.sh
+@@ -4,13 +4,10 @@
+
+ root=$(getarg root=)
+
+-if rflags="$(getarg rootflags=)"; then
+- getarg rw && rflags="${rflags},rw"
+- getarg ro && rflags="${rflags},ro"
+-else
+- getarg rw && rflags=rw
+- getarg ro && rflags=ro
+-fi
++rflags="$(getarg rootflags=)"
++getargbool 0 rw && rflags="${rflags},rw"
++getargbool 0 ro && rflags="${rflags},ro"
++rflags="${rflags#,}"
+
+ fstype="$(getarg rootfstype=)"
+ if [ -z "$fstype" ]; then
diff --git a/0045-modules.d-99base-mount-hook.sh-is-not-used-removed.patch b/0045-modules.d-99base-mount-hook.sh-is-not-used-removed.patch
new file mode 100644
index 0000000..1c2048c
--- /dev/null
+++ b/0045-modules.d-99base-mount-hook.sh-is-not-used-removed.patch
@@ -0,0 +1,187 @@
+From 1f4aaaeb5ea6f083a0130a463bfd60ff91b24ac9 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Amadeusz=20=C5=BBo=C5=82nowski?= <aidecoe@aidecoe.name>
+Date: Thu, 26 Jul 2012 15:05:27 +0200
+Subject: [PATCH] modules.d/99base/mount-hook.sh is not used - removed
+
+---
+ modules.d/99base/mount-hook.sh | 171 -----------------------------------------
+ 1 file changed, 171 deletions(-)
+ delete mode 100755 modules.d/99base/mount-hook.sh
+
+diff --git a/modules.d/99base/mount-hook.sh b/modules.d/99base/mount-hook.sh
+deleted file mode 100755
+index e32ecae..0000000
+--- a/modules.d/99base/mount-hook.sh
++++ /dev/null
+@@ -1,171 +0,0 @@
+-#!/bin/sh
+-# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
+-# ex: ts=8 sw=4 sts=4 et filetype=sh
+-
+-PATH=/usr/sbin:/usr/bin:/sbin:/bin
+-type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh
+-type det_fs >/dev/null 2>&1 || [ -f /lib/fs-lib.sh ] && . /lib/fs-lib.sh
+-# If fs-lib is not included use following det_fs replacement.
+-type det_fs >/dev/null 2>&1 || det_fs() { echo "${2:-auto}"; }
+-
+-mountpoint="$1"
+-ismounted "$mountpoint" && exit 0
+-
+-if [ -f "$NEWROOT"/fastboot ] || getargbool 0 fastboot ; then
+- fastboot=yes
+-fi
+-
+-filter_rootopts() {
+- rootopts=$1
+- # strip ro and rw options
+- local OLDIFS="$IFS"
+- IFS=,
+- set -- $rootopts
+- IFS="$OLDIFS"
+- local v
+- while [ $# -gt 0 ]; do
+- case $1 in
+- rw|ro);;
+- defaults);;
+- *)
+- v="$v,${1}";;
+- esac
+- shift
+- done
+- rootopts=${v#,}
+- echo $rootopts
+-}
+-
+-mount_root() {
+- local _ret
+- # sanity - determine/fix fstype
+- rootfs=$(det_fs "${root#block:}" "$fstype")
+- mount -t ${rootfs} -o "$rflags",ro "${root#block:}" "$NEWROOT"
+-
+- READONLY=
+- fsckoptions=
+- if [ -f "$NEWROOT"/etc/sysconfig/readonly-root ]; then
+- . "$NEWROOT"/etc/sysconfig/readonly-root
+- fi
+-
+- if getargbool 0 "readonlyroot=" -y readonlyroot; then
+- READONLY=yes
+- fi
+-
+- if getarg noreadonlyroot ; then
+- READONLY=no
+- fi
+-
+- if [ -f "$NEWROOT"/fastboot ] || getargbool 0 fastboot ; then
+- fastboot=yes
+- fi
+-
+- if [ -f "$NEWROOT"/fsckoptions ]; then
+- fsckoptions=$(cat "$NEWROOT"/fsckoptions)
+- fi
+-
+- if [ -f "$NEWROOT"/forcefsck ] || getargbool 0 forcefsck ; then
+- fsckoptions="-f $fsckoptions"
+- elif [ -f "$NEWROOT"/.autofsck ]; then
+- [ -f "$NEWROOT"/etc/sysconfig/autofsck ] && . "$NEWROOT"/etc/sysconfig/autofsck
+- if [ "$AUTOFSCK_DEF_CHECK" = "yes" ]; then
+- AUTOFSCK_OPT="$AUTOFSCK_OPT -f"
+- fi
+- if [ -n "$AUTOFSCK_SINGLEUSER" ]; then
+- warn "*** Warning -- the system did not shut down cleanly. "
+- warn "*** Dropping you to a shell; the system will continue"
+- warn "*** when you leave the shell."
+- emergency_shell
+- fi
+- fsckoptions="$AUTOFSCK_OPT $fsckoptions"
+- fi
+-
+- rootopts=
+- if getargbool 1 rd.fstab -d -n rd_NO_FSTAB \
+- && ! getarg rootflags \
+- && [ -f "$NEWROOT/etc/fstab" ] \
+- && ! [ -L "$NEWROOT/etc/fstab" ]; then
+- # if $NEWROOT/etc/fstab contains special mount options for
+- # the root filesystem,
+- # remount it with the proper options
+- rootopts="defaults"
+- while read dev mp fs opts rest; do
+- # skip comments
+- [ "${dev%%#*}" != "$dev" ] && continue
+-
+- if [ "$mp" = "/" ]; then
+- # sanity - determine/fix fstype
+- rootfs=$(det_fs "${root#block:}" "$fs")
+- rootopts=$opts
+- break
+- fi
+- done < "$NEWROOT/etc/fstab"
+-
+- rootopts=$(filter_rootopts $rootopts)
+- fi
+-
+- # we want rootflags (rflags) to take precedence so prepend rootopts to
+- # them; rflags is guaranteed to not be empty
+- rflags="${rootopts:+"${rootopts},"}${rflags}"
+-
+- umount "$NEWROOT"
+-
+- # backslashes are treated as escape character in fstab
+- # esc_root=$(echo ${root#block:} | sed 's,\\,\\\\,g')
+- # printf '%s %s %s %s 1 1 \n' "$esc_root" "$NEWROOT" "$rootfs" "$rflags" >/etc/fstab
+-
+- if [ -z "$fastboot" -a "$READONLY" != "yes" ] && ! strstr "${rflags},${rootopts}" _netdev; then
+- fsck_single "${root#block:}" "$rootfs" "$rflags" "$fsckoptions"
+- _ret=$?
+- [ $_ret -ne 255 ] && echo $_ret >/run/initramfs/root-fsck
+- fi
+-
+- info "Remounting ${root#block:} with -o ${rflags}"
+- mount -t "$rootfs" -o "$rflags" "${root#block:}" "$NEWROOT" 2>&1 | vinfo
+-
+- [ -f "$NEWROOT"/forcefsck ] && rm -f "$NEWROOT"/forcefsck 2>/dev/null
+- [ -f "$NEWROOT"/.autofsck ] && rm -f "$NEWROOT"/.autofsck 2>/dev/null
+-}
+-
+-sub_mount_ready() {
+- local _dev _mp _rest
+- while read _dev _mp _rest; do
+- [ "$1" = "$_mp" ] && continue
+-
+- if [ "${1##$_mp}" != "$1" ]; then
+- ismounted "$_mp" || return 1
+- fi
+- done < "/etc/fstab"
+- return 0
+-}
+-
+-if [ "$mountpoint" = "$NEWROOT" ]; then
+- mount_root
+- exit $?
+-fi
+-
+-while read _dev _mp _fs _opts _rest; do
+- if [ "$_mp" = "$mountpoint" ]; then
+- _found="1"
+- break
+- fi
+-done < "/etc/fstab"
+-
+-[ "$_found" = "1" ] || exit 1
+-
+-sub_mount_ready "$mountpoint" || exit 1
+-
+-if [ -z "$fastboot" ] && ! strstr "${_opts}" _netdev; then
+- # fsck?
+- fsck_single "$_dev" "$_fs" "$_opts"
+- _ret=$?
+- if [ "${mountpoint##$NEWROOT}" != "$mountpoint" ]; then
+- echo $_ret >/run/initramfs/${mountpoint##$NEWROOT}-fsck
+- fi
+-fi
+-
+-info "Mounting $_dev on $mountpoint"
+-mount "$mountpoint" 2>&1 | vinfo
+-
+-ismounted "$mountpoint" || exit 1
+-
diff --git a/0046-PATCH-add-support-for-xfs-reiserfs-separate-journal-.patch b/0046-PATCH-add-support-for-xfs-reiserfs-separate-journal-.patch
new file mode 100644
index 0000000..24ae7d3
--- /dev/null
+++ b/0046-PATCH-add-support-for-xfs-reiserfs-separate-journal-.patch
@@ -0,0 +1,58 @@
+From 6a5170a15f67a72bcec427a252d23ead4f3ae89a Mon Sep 17 00:00:00 2001
+From: Frederic Crozat <fcrozat@suse.com>
+Date: Thu, 26 Jul 2012 15:16:22 +0200
+Subject: [PATCH] PATCH: add support for xfs / reiserfs separate journal
+ device
+
+xfs and reiserfs (among other) supports storing journal data to a
+separate device. Unfortunately, XFS requires this information to boot
+properly (reiserfs can embed the information in its metadata but you
+might want to override it).
+
+Attached patch ensure host information are stored in initramfs and also
+allows to give data over kernel commandline.
+
+--
+Frederic Crozat <fcrozat@suse.com>
+SUSE
+
+>From a7c592b9bb7de0d7874ae51d02944a7eee2ec75b Mon Sep 17 00:00:00 2001
+From: Frederic Crozat <fcrozat@suse.com>
+Date: Tue, 24 Jul 2012 18:52:17 +0200
+Subject: [PATCH] Add support for separate journal on reiserfs and xfs
+---
+ modules.d/95rootfs-block/mount-root.sh | 19 ++++++++++++++++++-
+ 1 file changed, 18 insertions(+), 1 deletion(-)
+
+diff --git a/modules.d/95rootfs-block/mount-root.sh b/modules.d/95rootfs-block/mount-root.sh
+index de9753a..a6cba12 100755
+--- a/modules.d/95rootfs-block/mount-root.sh
++++ b/modules.d/95rootfs-block/mount-root.sh
+@@ -7,9 +7,26 @@ type det_fs >/dev/null 2>&1 || . /lib/fs-lib.sh
+
+ mount_root() {
+ local _ret
+- local _rflags_ro="$rflags,ro"
++ local _rflags_ro
+ # sanity - determine/fix fstype
+ rootfs=$(det_fs "${root#block:}" "$fstype")
++
++ journaldev=$(getarg root.journaldev)
++ if [ -n $journaldev ]; then
++ case "$rootfs" in
++ xfs)
++ rflags="${rflags:+${rflags},}logdev=$journaldev"
++ ;;
++ reiserfs)
++ fsckoptions="-j $journaldev $fsckoptions"
++ rflags="${rflags:+${rflags},}jdev=$journaldev"
++ ;;
++ *);;
++ esac
++ fi
++
++ _rflags_ro="$rflags,ro"
++
+ while ! mount -t ${rootfs} -o "$_rflags_ro" "${root#block:}" "$NEWROOT"; do
+ warn "Failed to mount -t ${rootfs} -o $_rflags_ro ${root#block:} $NEWROOT"
+ fsck_ask_err
diff --git a/0047-dracut-functions.sh-add-find_mp_fstype.patch b/0047-dracut-functions.sh-add-find_mp_fstype.patch
new file mode 100644
index 0000000..95d4ec4
--- /dev/null
+++ b/0047-dracut-functions.sh-add-find_mp_fstype.patch
@@ -0,0 +1,47 @@
+From 81672479afb4806568f1dea7fac9b8d7271c71f6 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Thu, 26 Jul 2012 17:00:07 +0200
+Subject: [PATCH] dracut-functions.sh: add find_mp_fstype()
+
+---
+ dracut-functions.sh | 27 +++++++++++++++++++++++++++
+ 1 file changed, 27 insertions(+)
+
+diff --git a/dracut-functions.sh b/dracut-functions.sh
+index 14c100d..0332351 100755
+--- a/dracut-functions.sh
++++ b/dracut-functions.sh
+@@ -357,6 +357,33 @@ find_dev_fstype() {
+ return 1
+ }
+
++# find_dev_fstype <device>
++# Echo the filesystem type for a given device.
++# /proc/self/mountinfo is taken as the primary source of information
++# and /etc/fstab is used as a fallback.
++# No newline is appended!
++# Example:
++# $ find_dev_fstype /dev/sda2;echo
++# ext4
++find_mp_fstype() {
++ local _x _mpt _majmin _dev _fs _maj _min
++ while read _x _x _majmin _x _mpt _x _x _fs _dev _x; do
++ [[ $_mpt = $1 ]] || continue
++ echo -n $_fs;
++ return 0;
++ done < /proc/self/mountinfo
++
++ # fall back to /etc/fstab
++ while read _dev _mpt _fs _x; do
++ [[ $_mpt = $1 ]] || continue
++ echo -n $_fs;
++ return 0;
++ done < /etc/fstab
++
++ return 1
++}
++
++
+ # finds the major:minor of the block device backing the root filesystem.
+ find_root_block_device() { find_block_device /; }
+
diff --git a/0048-rootfs-block-module-setup.sh-add-support-for-xfs-rei.patch b/0048-rootfs-block-module-setup.sh-add-support-for-xfs-rei.patch
new file mode 100644
index 0000000..2e7116e
--- /dev/null
+++ b/0048-rootfs-block-module-setup.sh-add-support-for-xfs-rei.patch
@@ -0,0 +1,68 @@
+From 3cc4c8ba9b43ff646701d4236c1a70860c16d02c Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Thu, 26 Jul 2012 17:00:47 +0200
+Subject: [PATCH] rootfs-block/module-setup.sh: add support for xfs / reiserfs
+ separate journal device
+
+xfs and reiserfs (among other) supports storing journal data to a
+separate device. Unfortunately, XFS requires this information to boot
+properly (reiserfs can embed the information in its metadata but you
+might want to override it).
+
+Frederic Crozat <fcrozat@suse.com>
+---
+ modules.d/95rootfs-block/module-setup.sh | 41 ++++++++++++++++++++++++++++++++
+ 1 file changed, 41 insertions(+)
+
+diff --git a/modules.d/95rootfs-block/module-setup.sh b/modules.d/95rootfs-block/module-setup.sh
+index 243a174..4d87fab 100755
+--- a/modules.d/95rootfs-block/module-setup.sh
++++ b/modules.d/95rootfs-block/module-setup.sh
+@@ -2,6 +2,47 @@
+ # -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
+ # ex: ts=8 sw=4 sts=4 et filetype=sh
+
++search_option() {
++ rootopts=$1
++ option=$2
++ local OLDIFS="$IFS"
++ IFS=,
++ set -- $rootopts
++ IFS="$OLDIFS"
++ while [ $# -gt 0 ]; do
++ case $1 in
++ $option=*)
++ echo ${1#${option}=}
++ break
++ esac
++ shift
++ done
++}
++
++check() {
++ rootopts="defaults"
++ while read dev mp fs opts dump fsck; do
++ # skip comments
++ [ "${dev%%#*}" != "$dev" ] && continue
++
++ if [ "$mp" = "/" ]; then
++ # sanity - determine/fix fstype
++ rootfs=$(find_mp_fstype /)
++ rootfs=${rootfs:-$fs}
++ rootopts=$opts
++ break
++ fi
++ done < "$NEWROOT/etc/fstab"
++
++ [ "$rootfs" = "reiserfs" ] && journaldev=$(search_option $rootopts "jdev")
++ [ "$rootfs" = "xfs" ] && journaldev=$(search_option $rootopts "logdev")
++ if [ -n "$journaldev" ]; then
++ echo "root.journaldev=$journaldev" >> "${initdir}/etc/cmdline.d/95root-jurnaldev.conf"
++ fi
++ return 0
++
++}
++
+ depends() {
+ echo fs-lib
+ }
diff --git a/0049-dracut-functions.sh-corrected-usage-comment-of-find_.patch b/0049-dracut-functions.sh-corrected-usage-comment-of-find_.patch
new file mode 100644
index 0000000..349bedc
--- /dev/null
+++ b/0049-dracut-functions.sh-corrected-usage-comment-of-find_.patch
@@ -0,0 +1,31 @@
+From ec5e5ae27a986f6bc3d273ba037533b72ab069e9 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Thu, 26 Jul 2012 17:05:24 +0200
+Subject: [PATCH] dracut-functions.sh: corrected usage comment of
+ find_mp_fstype()
+
+---
+ dracut-functions.sh | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/dracut-functions.sh b/dracut-functions.sh
+index 0332351..df450ef 100755
+--- a/dracut-functions.sh
++++ b/dracut-functions.sh
+@@ -357,13 +357,13 @@ find_dev_fstype() {
+ return 1
+ }
+
+-# find_dev_fstype <device>
+-# Echo the filesystem type for a given device.
++# find_mp_fstype <mountpoint>
++# Echo the filesystem type for a given mountpoint.
+ # /proc/self/mountinfo is taken as the primary source of information
+ # and /etc/fstab is used as a fallback.
+ # No newline is appended!
+ # Example:
+-# $ find_dev_fstype /dev/sda2;echo
++# $ find_mp_fstype /;echo
+ # ext4
+ find_mp_fstype() {
+ local _x _mpt _majmin _dev _fs _maj _min
diff --git a/0050-ro_mnt-option-at-build-time-to-force-ro-mount-of-and.patch b/0050-ro_mnt-option-at-build-time-to-force-ro-mount-of-and.patch
new file mode 100644
index 0000000..93f338d
--- /dev/null
+++ b/0050-ro_mnt-option-at-build-time-to-force-ro-mount-of-and.patch
@@ -0,0 +1,100 @@
+From ff3953efe1aec2229273cd59e7d35a540de0e476 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Amadeusz=20=C5=BBo=C5=82nowski?= <aidecoe@aidecoe.name>
+Date: Thu, 26 Jul 2012 16:44:09 +0200
+Subject: [PATCH] ro_mnt - option at build time to force ro mount of / and
+ /usr
+
+---
+ dracut.conf | 3 +++
+ dracut.conf.5.asc | 3 +++
+ dracut.sh | 6 +++++-
+ modules.d/99base/module-setup.sh | 3 +++
+ 4 files changed, 14 insertions(+), 1 deletion(-)
+
+diff --git a/dracut.conf b/dracut.conf
+index f47d571..f912acc 100644
+--- a/dracut.conf
++++ b/dracut.conf
+@@ -43,6 +43,9 @@ lvmconf="yes"
+ # inhibit installation of any fsck tools
+ #nofscks="yes"
+
++# mount / and /usr read-only by default
++#ro_mnt="no"
++
+ # set the directory for temporary files
+ # default: /var/tmp
+ #tmpdir=/tmp
+diff --git a/dracut.conf.5.asc b/dracut.conf.5.asc
+index d17477d..89bbf61 100644
+--- a/dracut.conf.5.asc
++++ b/dracut.conf.5.asc
+@@ -97,6 +97,9 @@ If chrooted to another root other than the real root device, use --fstab and pro
+ *nofscks=*"__{yes|no}__"::
+ If specified, inhibit installation of any fsck tools.
+
++*ro_mnt*
++ Mount _/_ and _/usr_ read-only by default.
++
+ *kernel_only=*"__{yes|no}__"::
+ Only install kernel drivers and firmware files. (default=no)
+
+diff --git a/dracut.sh b/dracut.sh
+index d8b3354..eee829e 100755
+--- a/dracut.sh
++++ b/dracut.sh
+@@ -101,6 +101,7 @@ Creates initial ramdisk images for preloading modules
+ --nolvmconf Do not include local /etc/lvm/lvm.conf
+ --fscks [LIST] Add a space-separated list of fsck helpers.
+ --nofscks Inhibit installation of any fsck helpers.
++ --ro-mnt Mount / and /usr read-only by default.
+ -h, --help This message
+ --debug Output debug information of the build process
+ --profile Output profile information of the build process
+@@ -261,6 +262,7 @@ TEMP=$(unset POSIXLY_CORRECT; getopt \
+ --long add-fstab: \
+ --long mount: \
+ --long nofscks: \
++ --long ro-mnt \
+ --long kmoddir: \
+ --long conf: \
+ --long confdir: \
+@@ -326,6 +328,7 @@ while :; do
+ --add-fstab) push add_fstab_l "$2"; shift;;
+ --mount) push fstab_lines "$2"; shift;;
+ --nofscks) nofscks_l="yes";;
++ --ro-mnt) ro_mnt_l="yes";;
+ -k|--kmoddir) drivers_dir_l="$2"; shift;;
+ -c|--conf) conffile="$2"; shift;;
+ --confdir) confdir="$2"; shift;;
+@@ -558,6 +561,7 @@ stdloglvl=$((stdloglvl + verbosity_mod_l))
+ [[ $compress_l ]] && compress=$compress_l
+ [[ $show_modules_l ]] && show_modules=$show_modules_l
+ [[ $nofscks_l ]] && nofscks="yes"
++[[ $ro_mnt_l ]] && ro_mnt="yes"
+ # eliminate IFS hackery when messing with fw_dir
+ fw_dir=${fw_dir//:/ }
+
+@@ -779,7 +783,7 @@ fi
+ export initdir dracutbasedir dracutmodules drivers \
+ fw_dir drivers_dir debug no_kernel kernel_only \
+ add_drivers omit_drivers mdadmconf lvmconf filesystems \
+- use_fstab fstab_lines libdirs fscks nofscks \
++ use_fstab fstab_lines libdirs fscks nofscks ro_mnt \
+ stdloglvl sysloglvl fileloglvl kmsgloglvl logfile \
+ debug host_fs_types host_devs sshkey add_fstab \
+ DRACUT_VERSION udevdir systemdutildir systemdsystemunitdir \
+diff --git a/modules.d/99base/module-setup.sh b/modules.d/99base/module-setup.sh
+index f20ca1a..dde1285 100755
+--- a/modules.d/99base/module-setup.sh
++++ b/modules.d/99base/module-setup.sh
+@@ -50,6 +50,9 @@ install() {
+ fi
+
+ ln -fs /proc/self/mounts "$initdir/etc/mtab"
++ if [[ $ro_mnt = yes ]]; then
++ echo ro >> "${initdir}/etc/cmdline.d/base.conf"
++ fi
+
+ if [ -e /etc/os-release ]; then
+ . /etc/os-release
diff --git a/0051-mv-rootfs-block-module-setup.sh-search_option-in-dra.patch b/0051-mv-rootfs-block-module-setup.sh-search_option-in-dra.patch
new file mode 100644
index 0000000..6ae64ec
--- /dev/null
+++ b/0051-mv-rootfs-block-module-setup.sh-search_option-in-dra.patch
@@ -0,0 +1,82 @@
+From 8aa9926839dc8ee861a44d21ae71fb33eee04ed1 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Thu, 26 Jul 2012 17:22:14 +0200
+Subject: [PATCH] mv rootfs-block/module-setup.sh:search_option() in
+ dracut-functions.sh
+
+new function fs_get_option()
+---
+ dracut-functions.sh | 20 ++++++++++++++++++++
+ modules.d/95rootfs-block/module-setup.sh | 21 ++-------------------
+ 2 files changed, 22 insertions(+), 19 deletions(-)
+
+diff --git a/dracut-functions.sh b/dracut-functions.sh
+index df450ef..fb28bdc 100755
+--- a/dracut-functions.sh
++++ b/dracut-functions.sh
+@@ -454,6 +454,26 @@ check_vol_slaves() {
+ return 1
+ }
+
++# fs_get_option <filesystem options> <search for option>
++# search for a specific option in a bunch of filesystem options
++# and return the value
++fs_get_option() {
++ local _fsopts=$1
++ local _option=$2
++ local OLDIFS="$IFS"
++ IFS=,
++ set -- $_fsopts
++ IFS="$OLDIFS"
++ while [ $# -gt 0 ]; do
++ case $1 in
++ $_option=*)
++ echo ${1#${_option}=}
++ break
++ esac
++ shift
++ done
++}
++
+ if [[ $DRACUT_INSTALL ]]; then
+ [[ $DRACUT_RESOLVE_LAZY ]] || export DRACUT_RESOLVE_DEPS=1
+ inst_dir() {
+diff --git a/modules.d/95rootfs-block/module-setup.sh b/modules.d/95rootfs-block/module-setup.sh
+index 4d87fab..8254289 100755
+--- a/modules.d/95rootfs-block/module-setup.sh
++++ b/modules.d/95rootfs-block/module-setup.sh
+@@ -2,23 +2,6 @@
+ # -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
+ # ex: ts=8 sw=4 sts=4 et filetype=sh
+
+-search_option() {
+- rootopts=$1
+- option=$2
+- local OLDIFS="$IFS"
+- IFS=,
+- set -- $rootopts
+- IFS="$OLDIFS"
+- while [ $# -gt 0 ]; do
+- case $1 in
+- $option=*)
+- echo ${1#${option}=}
+- break
+- esac
+- shift
+- done
+-}
+-
+ check() {
+ rootopts="defaults"
+ while read dev mp fs opts dump fsck; do
+@@ -34,8 +17,8 @@ check() {
+ fi
+ done < "$NEWROOT/etc/fstab"
+
+- [ "$rootfs" = "reiserfs" ] && journaldev=$(search_option $rootopts "jdev")
+- [ "$rootfs" = "xfs" ] && journaldev=$(search_option $rootopts "logdev")
++ [ "$rootfs" = "reiserfs" ] && journaldev=$(fs_get_option $rootopts "jdev")
++ [ "$rootfs" = "xfs" ] && journaldev=$(fs_get_option $rootopts "logdev")
+ if [ -n "$journaldev" ]; then
+ echo "root.journaldev=$journaldev" >> "${initdir}/etc/cmdline.d/95root-jurnaldev.conf"
+ fi
diff --git a/0052-README.testsuite-updated-with-requirements-for-TEST-.patch b/0052-README.testsuite-updated-with-requirements-for-TEST-.patch
new file mode 100644
index 0000000..7e79ee4
--- /dev/null
+++ b/0052-README.testsuite-updated-with-requirements-for-TEST-.patch
@@ -0,0 +1,19 @@
+From 25706eafacfa284e53ebb3d96b195697fb81041d Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Thu, 26 Jul 2012 17:26:31 +0200
+Subject: [PATCH] README.testsuite updated with requirements for
+ TEST-04-SYSTEMD
+
+---
+ README.testsuite | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/README.testsuite b/README.testsuite
+index 62fe503..cbc2ab7 100644
+--- a/README.testsuite
++++ b/README.testsuite
+@@ -9,3 +9,4 @@ netbsd-iscsi
+ nbd
+ dhcp
+ iscsi-initiator-utils
++TEST-04-FULL-SYSTEMD: systemd >= 187
diff --git a/0053-base-module-setup.sh-removed-mount-hook.patch b/0053-base-module-setup.sh-removed-mount-hook.patch
new file mode 100644
index 0000000..9a77f89
--- /dev/null
+++ b/0053-base-module-setup.sh-removed-mount-hook.patch
@@ -0,0 +1,21 @@
+From 96c6fa920255a3bf4e7cd7c974aa13814d74beb6 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Thu, 26 Jul 2012 17:35:25 +0200
+Subject: [PATCH] base/module-setup.sh: removed mount-hook
+
+---
+ modules.d/99base/module-setup.sh | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/modules.d/99base/module-setup.sh b/modules.d/99base/module-setup.sh
+index dde1285..097607a 100755
+--- a/modules.d/99base/module-setup.sh
++++ b/modules.d/99base/module-setup.sh
+@@ -39,7 +39,6 @@ install() {
+ dracut_install switch_root || dfatal "Failed to install switch_root"
+
+ inst_simple "$moddir/dracut-lib.sh" "/lib/dracut-lib.sh"
+- inst_script "$moddir/mount-hook.sh" "/usr/bin/mount-hook"
+ inst_hook cmdline 10 "$moddir/parse-root-opts.sh"
+ mkdir -p "${initdir}/var"
+ [ -x /lib/systemd/systemd-timestamp ] && inst /lib/systemd/systemd-timestamp
diff --git a/0054-parse-root-opts-first-check-for-ro-later-for-rw.patch b/0054-parse-root-opts-first-check-for-ro-later-for-rw.patch
new file mode 100644
index 0000000..b4073cd
--- /dev/null
+++ b/0054-parse-root-opts-first-check-for-ro-later-for-rw.patch
@@ -0,0 +1,24 @@
+From aa505d588f92c41e4060b75e8fde729a01fe9c6f Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Amadeusz=20=C5=BBo=C5=82nowski?= <aidecoe@aidecoe.name>
+Date: Thu, 26 Jul 2012 15:58:27 +0200
+Subject: [PATCH] parse-root-opts: first check for ro, later for rw
+
+This order is already in 98usrmount.
+---
+ modules.d/99base/parse-root-opts.sh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/modules.d/99base/parse-root-opts.sh b/modules.d/99base/parse-root-opts.sh
+index 7b0b758..b74eeb3 100755
+--- a/modules.d/99base/parse-root-opts.sh
++++ b/modules.d/99base/parse-root-opts.sh
+@@ -5,8 +5,8 @@
+ root=$(getarg root=)
+
+ rflags="$(getarg rootflags=)"
+-getargbool 0 rw && rflags="${rflags},rw"
+ getargbool 0 ro && rflags="${rflags},ro"
++getargbool 0 rw && rflags="${rflags},rw"
+ rflags="${rflags#,}"
+
+ fstype="$(getarg rootfstype=)"
diff --git a/0055-nfs-module-setup.sh-check-for-rpc.rpc-before-running.patch b/0055-nfs-module-setup.sh-check-for-rpc.rpc-before-running.patch
new file mode 100644
index 0000000..e93148d
--- /dev/null
+++ b/0055-nfs-module-setup.sh-check-for-rpc.rpc-before-running.patch
@@ -0,0 +1,24 @@
+From 6ca264a1511eb181fb4ca58e25314b6930c2c2a7 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Thu, 26 Jul 2012 18:12:05 +0200
+Subject: [PATCH] nfs/module-setup.sh: check for "rpc.rpc" before running
+ chown
+
+---
+ modules.d/95nfs/module-setup.sh | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/modules.d/95nfs/module-setup.sh b/modules.d/95nfs/module-setup.sh
+index 0c07725..ecef635 100755
+--- a/modules.d/95nfs/module-setup.sh
++++ b/modules.d/95nfs/module-setup.sh
+@@ -71,6 +71,8 @@ install() {
+ # rpc user needs to be able to write to this directory to save the warmstart
+ # file
+ chmod 770 "$initdir/var/lib/rpcbind"
+- chown rpc.rpc "$initdir/var/lib/rpcbind"
++ egrep -q '^rpc:' /etc/passwd \
++ && egrep -q '^rpc:' /etc/group \
++ && chown rpc.rpc "$initdir/var/lib/rpcbind"
+ }
+
diff --git a/0056-Added-cifs.patch b/0056-Added-cifs.patch
new file mode 100644
index 0000000..1ec5597
--- /dev/null
+++ b/0056-Added-cifs.patch
@@ -0,0 +1,227 @@
+From d580636e97bffdd17124961e2f9db0aa2a645060 Mon Sep 17 00:00:00 2001
+From: Mike Gorse <mgorse@suse.com>
+Date: Thu, 26 Jul 2012 09:17:18 -0500
+Subject: [PATCH] Added cifs
+
+---
+ dracut.cmdline.7.asc | 15 +++++++++++
+ modules.d/95cifs/cifs-lib.sh | 36 ++++++++++++++++++++++++++
+ modules.d/95cifs/cifsroot.sh | 26 +++++++++++++++++++
+ modules.d/95cifs/module-setup.sh | 46 +++++++++++++++++++++++++++++++++
+ modules.d/95cifs/parse-cifsroot.sh | 52 ++++++++++++++++++++++++++++++++++++++
+ 5 files changed, 175 insertions(+)
+ create mode 100755 modules.d/95cifs/cifs-lib.sh
+ create mode 100755 modules.d/95cifs/cifsroot.sh
+ create mode 100755 modules.d/95cifs/module-setup.sh
+ create mode 100755 modules.d/95cifs/parse-cifsroot.sh
+
+diff --git a/dracut.cmdline.7.asc b/dracut.cmdline.7.asc
+index 8f642f3..0b1b8a2 100644
+--- a/dracut.cmdline.7.asc
++++ b/dracut.cmdline.7.asc
+@@ -398,6 +398,21 @@ NFS
+ **rd.nfs.domain=**_<NFSv4 domain name>_::
+ Set the NFSv4 domain name. Will overwrite the settings in _/etc/idmap.conf_.
+
++CIFS
++~~~
++**root=**cifs://[_<username>_[:_<password>_]@]_<server-ip>_:_<root-dir>_::
++ mount cifs 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]. If a username or password are not specified
++as part of the root, then they must be passed on the command line through
++cifsuser/cifspass.
++
++**cifsuser=_<username>_::
++ Set the cifs username, if not specified as part of the root.
++
++**cifspass=_<password>_::
++ Set the cifs password, if not specified as part of the root.
++
+ iSCSI
+ ~~~~~
+ **root=**iscsi:[_<username>_:_<password>_[:_<reverse>_:_<password>_]@][_<servername>_]:[_<protocol>_]:[_<port>_][:[_<iscsi_iface_name>_]:[_<netdev_name>_]]:[_<LUN>_]:_<targetname>_::
+diff --git a/modules.d/95cifs/cifs-lib.sh b/modules.d/95cifs/cifs-lib.sh
+new file mode 100755
+index 0000000..3cbe6dc
+--- /dev/null
++++ b/modules.d/95cifs/cifs-lib.sh
+@@ -0,0 +1,36 @@
++#!/bin/sh
++# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
++# ex: ts=8 sw=4 sts=4 et filetype=sh
++
++# cifs_to_var CIFSROOT
++# use CIFSROOT to set $server, $path, and $options.
++# CIFSROOT is something like: cifs://[<username>[:<password>]]@<host>/<path>
++# NETIF is used to get information from DHCP options, if needed.
++
++type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh
++
++cifs_to_var() {
++ local cifsuser; local cifspass
++ # Check required arguments
++ server=${1##cifs://}
++ cifsuser=${server%@*}
++ cifspass=${cifsuser#*:}
++ if [ "$cifspass" != "$cifsuser" ]; then
++ cifsuser=${cifsuser%:*}
++ else
++ cifspass=$(getarg cifspass)
++ fi
++ if [ "$cifsuser" != "$server" ]; then
++ server="${server#*@}"
++ else
++ cifsuser=$(getarg cifsuser)
++ fi
++
++ path=${server#*/}
++ server=${server%/*}
++
++ if [ ! "$cifsuser" -o ! "$cifspass" ]; then
++ die "For CIFS support you need to specify a cifsuser and cifspass either in the cifsuser and cifspass commandline parameters or in the root= CIFS URL."
++ fi
++ options="user=$cifsuser,pass=$cifspass"
++}
+diff --git a/modules.d/95cifs/cifsroot.sh b/modules.d/95cifs/cifsroot.sh
+new file mode 100755
+index 0000000..7956d6f
+--- /dev/null
++++ b/modules.d/95cifs/cifsroot.sh
+@@ -0,0 +1,26 @@
++#!/bin/sh
++# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
++# ex: ts=8 sw=4 sts=4 et filetype=sh
++
++type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh
++. /lib/cifs-lib.sh
++
++[ "$#" = 3 ] || exit 1
++
++# root is in the form root=cifs://user:pass@[server]/[folder] either from
++# cmdline or dhcp root-path
++netif="$1"
++root="$2"
++NEWROOT="$3"
++
++cifs_to_var $root
++echo server: $server
++echo path: $path
++echo options: $options
++
++mount.cifs //$server/$path $NEWROOT -o $options && { [ -e /dev/root ] || >/dev/root ; }
++
++# inject new exit_if_exists
++echo 'settle_exit_if_exists="--exit-if-exists=/dev/root"; rm "$job"' > $hookdir/initqueue/cifs.sh
++# force udevsettle to break
++> $hookdir/initqueue/work
+diff --git a/modules.d/95cifs/module-setup.sh b/modules.d/95cifs/module-setup.sh
+new file mode 100755
+index 0000000..2f2e78d
+--- /dev/null
++++ b/modules.d/95cifs/module-setup.sh
+@@ -0,0 +1,46 @@
++#!/bin/bash
++# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
++# ex: ts=8 sw=4 sts=4 et filetype=sh
++
++check() {
++ # If our prerequisites are not met, fail anyways.
++ type -P mount.cifs >/dev/null || return 1
++
++ [[ $hostonly ]] || [[ $mount_needs ]] && {
++ for fs in ${host_fs_types[@]}; do
++ strstr "$fs" "\|cifs" && return 0
++ done
++ return 255
++ }
++
++ return 0
++}
++
++depends() {
++ # We depend on network modules being loaded
++ echo network
++}
++
++installkernel() {
++ instmods cifs ipv6
++}
++
++install() {
++ local _i
++ local _nsslibs
++ dracut_install -o mount.cifs
++ dracut_install /etc/services /etc/nsswitch.conf /etc/protocols
++
++ inst_libdir_file 'libcap-ng.so*'
++
++ _nsslibs=$(sed -e '/^#/d' -e 's/^.*://' -e 's/\[NOTFOUND=return\]//' /etc/nsswitch.conf \
++ | tr -s '[:space:]' '\n' | sort -u | tr -s '[:space:]' '|')
++ _nsslibs=${_nsslibs#|}
++ _nsslibs=${_nsslibs%|}
++
++ inst_libdir_file -n "$_nsslibs" 'libnss*.so*'
++
++ inst_hook cmdline 90 "$moddir/parse-cifsroot.sh"
++ inst "$moddir/cifsroot.sh" "/sbin/cifsroot"
++ inst "$moddir/cifs-lib.sh" "/lib/cifs-lib.sh"
++}
+diff --git a/modules.d/95cifs/parse-cifsroot.sh b/modules.d/95cifs/parse-cifsroot.sh
+new file mode 100755
+index 0000000..d5adb98
+--- /dev/null
++++ b/modules.d/95cifs/parse-cifsroot.sh
+@@ -0,0 +1,52 @@
++#!/bin/sh
++# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
++# ex: ts=8 sw=4 sts=4 et filetype=sh
++#
++# root=cifs://[user:pass@]<server>/<folder>
++#
++# This syntax can come from DHCP root-path as well.
++#
++# If a username or password are not specified as part of the root, then they
++# will be pulled from cifsuser and cifspass on the kernel command line,
++# respectively.
++#
++
++type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh
++. /lib/cifs-lib.sh
++
++#Don't continue if root is ok
++[ -n "$rootok" ] && return
++
++# This script is sourced, so root should be set. But let's be paranoid
++[ -z "$root" ] && root=$(getarg root=)
++[ -z "$netroot" ] && netroot=$(getarg netroot=)
++
++# netroot= cmdline argument must be ignored, but must be used if
++# we're inside netroot to parse dhcp root-path
++if [ -n "$netroot" ] ; then
++ if [ "$netroot" = "$(getarg netroot=)" ] ; then
++ warn "Ignoring netroot argument for CIFS"
++ netroot=$root
++ fi
++else
++ netroot=$root;
++fi
++
++# Continue if cifs
++case "${netroot%%:*}" in
++ cifs);;
++ *) unset netroot; return;;
++esac
++
++# Check required arguments
++cifs_to_var $netroot
++
++# If we don't have a server, we need dhcp
++if [ -z "$server" ] ; then
++ DHCPORSERVER="1"
++fi;
++
++# Done, all good!
++rootok=1
++
++echo '[ -e $NEWROOT/proc ]' > $hookdir/initqueue/finished/cifsroot.sh
diff --git a/0057-plymouth-do-not-start-plymouth-via-dracut-for-system.patch b/0057-plymouth-do-not-start-plymouth-via-dracut-for-system.patch
new file mode 100644
index 0000000..9ab08fd
--- /dev/null
+++ b/0057-plymouth-do-not-start-plymouth-via-dracut-for-system.patch
@@ -0,0 +1,51 @@
+From c9a81c1f911792f68ce1921f192e7e930f312535 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Thu, 26 Jul 2012 18:59:36 +0200
+Subject: [PATCH] plymouth: do not start plymouth via dracut for systemd in
+ the initramfs
+
+---
+ modules.d/50plymouth/module-setup.sh | 4 ----
+ modules.d/50plymouth/plymouth-newroot.sh | 2 +-
+ modules.d/50plymouth/plymouth-pretrigger.sh | 2 +-
+ 3 files changed, 2 insertions(+), 6 deletions(-)
+
+diff --git a/modules.d/50plymouth/module-setup.sh b/modules.d/50plymouth/module-setup.sh
+index 14d9e59..10aa0da 100755
+--- a/modules.d/50plymouth/module-setup.sh
++++ b/modules.d/50plymouth/module-setup.sh
+@@ -76,9 +76,5 @@ install() {
+ inst_hook pre-trigger 10 "$moddir"/plymouth-pretrigger.sh
+ inst_hook emergency 50 "$moddir"/plymouth-emergency.sh
+ dracut_install readlink
+-
+- if [[ -x $systemdutildir/systemd ]]; then
+- dracut_install -o $systemdsystemunitdir/plymouth-quit-wait.service
+- fi
+ }
+
+diff --git a/modules.d/50plymouth/plymouth-newroot.sh b/modules.d/50plymouth/plymouth-newroot.sh
+index e03e98d..ffbabf1 100755
+--- a/modules.d/50plymouth/plymouth-newroot.sh
++++ b/modules.d/50plymouth/plymouth-newroot.sh
+@@ -2,6 +2,6 @@
+ # -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
+ # ex: ts=8 sw=4 sts=4 et filetype=sh
+
+-if [ -x /bin/plymouth ]; then
++if [ -x /bin/plymouth ! -x /lib/systemd/systemd ]; then
+ /bin/plymouth --newroot=$NEWROOT
+ fi
+diff --git a/modules.d/50plymouth/plymouth-pretrigger.sh b/modules.d/50plymouth/plymouth-pretrigger.sh
+index ddb8ddb..c52cf83 100755
+--- a/modules.d/50plymouth/plymouth-pretrigger.sh
++++ b/modules.d/50plymouth/plymouth-pretrigger.sh
+@@ -2,7 +2,7 @@
+ # -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
+ # ex: ts=8 sw=4 sts=4 et filetype=sh
+
+-if [ -x /bin/plymouthd ]; then
++if [ -x /bin/plymouthd -a ! -x /lib/systemd/systemd ]; then
+ if getargbool 1 plymouth.enable && getargbool 1 rd.plymouth -d -n rd_NO_PLYMOUTH; then
+ # first trigger graphics subsystem
+ udevadm trigger --action=add --attr-match=class=0x030000 >/dev/null 2>&1
diff --git a/0058-gentoo.conf-enable-ro_mnt.patch b/0058-gentoo.conf-enable-ro_mnt.patch
new file mode 100644
index 0000000..fd8787c
--- /dev/null
+++ b/0058-gentoo.conf-enable-ro_mnt.patch
@@ -0,0 +1,21 @@
+From 187a8e08d57cb33d51c31e2270374b99e2ad3133 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Amadeusz=20=C5=BBo=C5=82nowski?= <aidecoe@aidecoe.name>
+Date: Thu, 26 Jul 2012 19:04:30 +0200
+Subject: [PATCH] gentoo.conf: enable ro_mnt
+
+---
+ dracut.conf.d/gentoo.conf.example | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/dracut.conf.d/gentoo.conf.example b/dracut.conf.d/gentoo.conf.example
+index 411f9a0..6b74954 100644
+--- a/dracut.conf.d/gentoo.conf.example
++++ b/dracut.conf.d/gentoo.conf.example
+@@ -2,6 +2,7 @@
+ # Dracut config file customized for Gentoo Base System release 2
+
+ udevdir=/lib/udev
++ro_mnt=yes
+
+ #
+ # Modules
diff --git a/0059-dracut-functions.sh-inst_rule_programs-fixed-IMPORT-.patch b/0059-dracut-functions.sh-inst_rule_programs-fixed-IMPORT-.patch
new file mode 100644
index 0000000..3b3ada8
--- /dev/null
+++ b/0059-dracut-functions.sh-inst_rule_programs-fixed-IMPORT-.patch
@@ -0,0 +1,25 @@
+From 65d1a8a4aee600f7d5016382dd351bf9b835327f Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Thu, 26 Jul 2012 19:12:40 +0200
+Subject: [PATCH] dracut-functions.sh:inst_rule_programs() fixed
+ IMPORT{program}
+
+---
+ dracut-functions.sh | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/dracut-functions.sh b/dracut-functions.sh
+index fb28bdc..49051fa 100755
+--- a/dracut-functions.sh
++++ b/dracut-functions.sh
+@@ -781,8 +781,8 @@ inst_rule_programs() {
+ dracut_install "$_bin"
+ done
+ fi
+- if grep -qE 'PROGRAM==?"[^ "]+' "$1"; then
+- for _prog in $(grep -E 'IMPORT==?"[^ "]+' "$1" | sed -r 's/.*IMPORT==?"([^ "]+).*/\1/'); do
++ if grep -qE 'IMPORT\{program\}==?"[^ "]+' "$1"; then
++ for _prog in $(grep -E 'IMPORT\{program\}==?"[^ "]+' "$1" | sed -r 's/.*IMPORT\{program\}==?"([^ "]+).*/\1/'); do
+ if [ -x ${udevdir}/$_prog ]; then
+ _bin=${udevdir}/$_prog
+ else
diff --git a/0060-install-dracut-install.c-convert-destrootdir-to-real.patch b/0060-install-dracut-install.c-convert-destrootdir-to-real.patch
new file mode 100644
index 0000000..e0950a1
--- /dev/null
+++ b/0060-install-dracut-install.c-convert-destrootdir-to-real.patch
@@ -0,0 +1,40 @@
+From 78021eace175745792f04345efe2d42218f0bb59 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Thu, 26 Jul 2012 19:21:06 +0200
+Subject: [PATCH] install/dracut-install.c: convert destrootdir to realpath
+
+otherwise we get strange errors if it ends with a slash and does not
+exist.
+---
+ install/dracut-install.c | 9 +++++++++
+ 1 file changed, 9 insertions(+)
+
+diff --git a/install/dracut-install.c b/install/dracut-install.c
+index 9351472..e79065d 100644
+--- a/install/dracut-install.c
++++ b/install/dracut-install.c
+@@ -517,6 +517,7 @@ Install SOURCE to DEST in DESTROOTDIR with all needed dependencies.\n\
+ -h --help Show this help\n\
+ \n\
+ Example:\n\
++# mkdir -p /var/tmp/test-root\n\
+ # %s -D /var/tmp/test-root --ldd -a sh tr\n\
+ # tree /var/tmp/test-root\n\
+ /var/tmp/test-root\n\
+@@ -742,8 +743,16 @@ int main(int argc, char **argv)
+ if (strcmp(destrootdir, "/") == 0) {
+ log_error("Environment DESTROOTDIR or argument -D is set to '/'!");
+ usage(EXIT_FAILURE);
++ }
+
++ i = destrootdir;
++ destrootdir = realpath(destrootdir, NULL);
++ if (!destrootdir) {
++ log_error("Environment DESTROOTDIR or argument -D is set to '%s': %m", i);
++ r = EXIT_FAILURE;
++ goto finish;
+ }
++ free(i);
+
+ items = hashmap_new(string_hash_func, string_compare_func);
+ items_failed = hashmap_new(string_hash_func, string_compare_func);
diff --git a/0061-dracut-functions.sh-inst_rule_programs-fix-error-mes.patch b/0061-dracut-functions.sh-inst_rule_programs-fix-error-mes.patch
new file mode 100644
index 0000000..c545536
--- /dev/null
+++ b/0061-dracut-functions.sh-inst_rule_programs-fix-error-mes.patch
@@ -0,0 +1,40 @@
+From cc2180876488b6e2b49c36317a593cb10e9124a7 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Thu, 26 Jul 2012 19:35:12 +0200
+Subject: [PATCH] dracut-functions.sh:inst_rule_programs() fix error messages
+
+---
+ dracut-functions.sh | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/dracut-functions.sh b/dracut-functions.sh
+index 49051fa..9242204 100755
+--- a/dracut-functions.sh
++++ b/dracut-functions.sh
+@@ -757,7 +757,7 @@ inst_rule_programs() {
+ _bin=${udevdir}/$_prog
+ else
+ _bin=$(find_binary "$_prog") || {
+- dinfo "Skipping program $_prog using in udev rule $(${1##*/}) as it cannot be found"
++ dinfo "Skipping program $_prog using in udev rule ${1##*/} as it cannot be found"
+ continue;
+ }
+ fi
+@@ -772,7 +772,7 @@ inst_rule_programs() {
+ _bin=${udevdir}/$_prog
+ else
+ _bin=$(find_binary "$_prog") || {
+- dinfo "Skipping program $_prog using in udev rule $(${1##*/}) as it cannot be found"
++ dinfo "Skipping program $_prog using in udev rule ${1##*/} as it cannot be found"
+ continue;
+ }
+ fi
+@@ -787,7 +787,7 @@ inst_rule_programs() {
+ _bin=${udevdir}/$_prog
+ else
+ _bin=$(find_binary "$_prog") || {
+- dinfo "Skipping program $_prog using in udev rule $(${1##*/}) as it cannot be found"
++ dinfo "Skipping program $_prog using in udev rule ${1##*/} as it cannot be found"
+ continue;
+ }
+ fi
diff --git a/0062-dracut.spec-add-cifs-module.patch b/0062-dracut.spec-add-cifs-module.patch
new file mode 100644
index 0000000..e3cd171
--- /dev/null
+++ b/0062-dracut.spec-add-cifs-module.patch
@@ -0,0 +1,21 @@
+From 72ee74b9be0935f9421a4987e9de785b74e71a50 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Fri, 27 Jul 2012 06:26:26 +0200
+Subject: [PATCH] dracut.spec: add cifs module
+
+---
+ dracut.spec | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/dracut.spec b/dracut.spec
+index d960506..f225bb6 100644
+--- a/dracut.spec
++++ b/dracut.spec
+@@ -328,6 +328,7 @@ rm -rf $RPM_BUILD_ROOT
+ %{dracutlibdir}/modules.d/95iscsi
+ %{dracutlibdir}/modules.d/90livenet
+ %{dracutlibdir}/modules.d/90qemu-net
++%{dracutlibdir}/modules.d/95cifs
+ %{dracutlibdir}/modules.d/95nbd
+ %{dracutlibdir}/modules.d/95nfs
+ %{dracutlibdir}/modules.d/95ssh-client
diff --git a/dracut.spec b/dracut.spec
index 5a6ad69..5acbca6 100644
--- a/dracut.spec
+++ b/dracut.spec
@@ -10,7 +10,7 @@
Name: dracut
Version: 022
-Release: 5.git20120723%{?dist}
+Release: 63.git20120727%{?dist}
Summary: Initramfs generator using udev
%if 0%{?fedora} || 0%{?rhel}
@@ -33,6 +33,64 @@ Patch1: 0001-resume-move-resume-in-the-initqueue-finished-hook.patch
Patch2: 0002-dracut.8-add-more-description-about-calling-dracut.patch
Patch3: 0003-AUTHORS-update.patch
Patch4: 0004-dracut.sh-add-N-option-for-no-hostonly.patch
+Patch5: 0005-add-documentation-for-systemd-services-in-the-initra.patch
+Patch6: 0006-kernel-modules-module-setup.sh-fix-modprobe.d-instal.patch
+Patch7: 0007-lvm-lvm_scan.sh-udevadm-settle-after-lvm-scan.patch
+Patch8: 0008-kernel-modules-module-setup.sh-just-optionally-insta.patch
+Patch9: 0009-i18n-10-console.rules-move-console_init-to-the-initq.patch
+Patch10: 0010-dracut-functions.sh-small-error-print-correction.patch
+Patch11: 0011-get-rid-of-basename.patch
+Patch12: 0012-90crypt-recognize-.img-as-loop-key-container.patch
+Patch13: 0013-90crypt-enhance-crypt-lib-keydev-mounting.patch
+Patch14: 0014-91crypt-loop-open-root-device-with-a-key-inside-encr.patch
+Patch15: 0015-91crypt-loop-use-initqueue-for-cleanup-strategy.patch
+Patch16: 0016-91crypt-loop-replace-basename-calls-with-string-matc.patch
+Patch17: 0017-deprecate-old-command-line-options.patch
+Patch18: 0018-require-kpartx-and-partx-for-some-modules.patch
+Patch19: 0019-iscsiroot.sh-do-not-source-etc-conf.d.patch
+Patch20: 0020-dracut.asc-add-doc-about-journalctl.patch
+Patch21: 0021-network-module-setup.sh-instmods-af_packet.patch
+Patch22: 0022-Makefile-honor-CFLAGS.patch
+Patch23: 0023-TODO-update.patch
+Patch24: 0024-qemu-module-setup.sh-provide-alternative-for-systemd.patch
+Patch25: 0025-Remove-object-file-from-repo-install-hashmap.o.patch
+Patch26: 0026-Makefile-use-implicit-rules-for-install-dracut-insta.patch
+Patch27: 0027-95fstab-sys-Skip-mounted-filesystem.patch
+Patch28: 0028-90multipath-check-Regexp-fix-to-match-multipath-part.patch
+Patch29: 0029-dmsquash-live-do-not-eject-medium-for-live_ram.patch
+Patch30: 0030-Remove-obsolete-gentoo-conf-file.patch
+Patch31: 0031-Config-file-for-systemd-on-Gentoo.patch
+Patch32: 0032-gentoo.conf-set-udevdir.patch
+Patch33: 0033-90kernel-modules-remove-unused-variables-in-install.patch
+Patch34: 0034-90multipath-added-kpartx.rules-multipath.rules-diffe.patch
+Patch35: 0035-Makefile-fixed-dracut-install-make-target.patch
+Patch36: 0036-multipath-module-setup.sh-add-dm-dependency.patch
+Patch37: 0037-Makefile-use-symlink-for-topsrcdir-dracut-install.patch
+Patch38: 0038-systemd-dracut-cmdline.sh-output-dracut-version.patch
+Patch39: 0039-95rootfs-block-fix-left-fsck-rel.-checks.patch
+Patch40: 0040-98usrmount-use-rw-and-ro-options-instead-of-rd.usrmo.patch
+Patch41: 0041-98usrmount-print-mount-options.patch
+Patch42: 0042-98usrmount-x-_usr_found-x-removed-redundant-x.patch
+Patch43: 0043-dracut-lib-new-functions-listlist-and-are_lists_eq.patch
+Patch44: 0044-apply-ro-and-rw-options-from-cmdline-to-mount.patch
+Patch45: 0045-modules.d-99base-mount-hook.sh-is-not-used-removed.patch
+Patch46: 0046-PATCH-add-support-for-xfs-reiserfs-separate-journal-.patch
+Patch47: 0047-dracut-functions.sh-add-find_mp_fstype.patch
+Patch48: 0048-rootfs-block-module-setup.sh-add-support-for-xfs-rei.patch
+Patch49: 0049-dracut-functions.sh-corrected-usage-comment-of-find_.patch
+Patch50: 0050-ro_mnt-option-at-build-time-to-force-ro-mount-of-and.patch
+Patch51: 0051-mv-rootfs-block-module-setup.sh-search_option-in-dra.patch
+Patch52: 0052-README.testsuite-updated-with-requirements-for-TEST-.patch
+Patch53: 0053-base-module-setup.sh-removed-mount-hook.patch
+Patch54: 0054-parse-root-opts-first-check-for-ro-later-for-rw.patch
+Patch55: 0055-nfs-module-setup.sh-check-for-rpc.rpc-before-running.patch
+Patch56: 0056-Added-cifs.patch
+Patch57: 0057-plymouth-do-not-start-plymouth-via-dracut-for-system.patch
+Patch58: 0058-gentoo.conf-enable-ro_mnt.patch
+Patch59: 0059-dracut-functions.sh-inst_rule_programs-fixed-IMPORT-.patch
+Patch60: 0060-install-dracut-install.c-convert-destrootdir-to-real.patch
+Patch61: 0061-dracut-functions.sh-inst_rule_programs-fix-error-mes.patch
+Patch62: 0062-dracut.spec-add-cifs-module.patch
BuildRequires: dash bash git
@@ -86,6 +144,7 @@ Requires: gzip xz
Requires: module-init-tools >= 3.7-9
Requires: sed
Requires: file
+Requires: kpartx
Requires: udev > 166
%if 0%{?fedora} || 0%{?rhel} > 6
Requires: util-linux >= 2.21
@@ -263,6 +322,7 @@ rm -rf $RPM_BUILD_ROOT
%endif
%dir /etc/dracut.conf.d
%{_mandir}/man8/dracut.8*
+%{_mandir}/man8/*service.8*
%if 0%{?fedora} > 12 || 0%{?rhel} >= 6 || 0%{?suse_version} > 9999
%{_mandir}/man8/mkinitrd.8*
%{_mandir}/man1/lsinitrd.1*
@@ -289,6 +349,7 @@ rm -rf $RPM_BUILD_ROOT
%{dracutlibdir}/modules.d/90multipath
%{dracutlibdir}/modules.d/90qemu
%{dracutlibdir}/modules.d/91crypt-gpg
+%{dracutlibdir}/modules.d/91crypt-loop
%{dracutlibdir}/modules.d/95debug
%{dracutlibdir}/modules.d/95resume
%{dracutlibdir}/modules.d/95rootfs-block
@@ -330,6 +391,7 @@ rm -rf $RPM_BUILD_ROOT
%{dracutlibdir}/modules.d/95iscsi
%{dracutlibdir}/modules.d/90livenet
%{dracutlibdir}/modules.d/90qemu-net
+%{dracutlibdir}/modules.d/95cifs
%{dracutlibdir}/modules.d/95nbd
%{dracutlibdir}/modules.d/95nfs
%{dracutlibdir}/modules.d/95ssh-client
@@ -361,6 +423,10 @@ rm -rf $RPM_BUILD_ROOT
%dir /var/lib/dracut/overlay
%changelog
+* Fri Jul 27 2012 Harald Hoyer <harald@redhat.com> 022-63.git20120727
+- fixed dracut-install bug if /var/tmp contains a symlink
+- fixed some partx issues
+
* Mon Jul 23 2012 Harald Hoyer <harald@redhat.com> 022-5.git20120723
- dracut.8: added more documentation about executing dracut