[dracut/f16] dracut-018-55.git20120606
Harald Hoyer
harald at fedoraproject.org
Wed Jun 6 09:31:06 UTC 2012
commit c3184574febc975cb054a6dcb9d527576005fe8b
Author: Harald Hoyer <harald at redhat.com>
Date: Wed Jun 6 11:30:25 2012 +0200
dracut-018-55.git20120606
- update to F17 version
- support for /usr mounting in the initramfs
- better hostonly support
- faster image creation
...live-dmsquash-live-root-include-fs_lib.sh.patch | 24 --
...-add-str_ends-to-go-along-with-str_starts.patch | 25 ++
0002-fix-live-crash-with-livenet-installed.patch | 24 --
...tup_net-at-start-of-initqueue-online-hook.patch | 55 +++
...tions-s-emergency-shutdown-shutdown-emerg.patch | 22 --
...-save_netinfo-fix-problems-with-nfs-NM-ta.patch | 65 ++++
...ep-work-as-documented-with-less-vars-than.patch | 35 ++
0004-dracut-functions-speed-up-inst_dir.patch | 41 ---
...tions-new-function-inst_any-d-dest-f1-f2-.patch | 49 ---
...tdown-use-emergency_shell-from-dracut-lib.patch | 109 ++++++
...ctions-fix-inst_dir-for-non-absolute-dirs.patch | 22 --
...k-avoid-remount-when-options-don-t-change.patch | 52 +++
...-md-incremental-imsm.rules-incremental-ru.patch | 26 --
0007-Debian-multiarch-support.patch | 279 +++++++++++++++
...ild-initramfs-unclear-_mpargs-in-instmods.patch | 43 ---
...og-installed-modules-to-initdir-lib-dracu.patch | 26 ++
...-save-and-restore-environment-given-from-.patch | 32 --
0009-lvm-disable-lvmetad.patch | 53 +++
...tions-hmac-checksum-files-can-be-symlinks.patch | 32 --
0010-udev-rules-remove-01-ignore.rules.patch | 32 ++
0011-95udev-rules-add-input_id.patch | 21 --
0011-lsinitrd-support-symlinks.patch | 22 ++
...acut.cmdline.7.asc-document-resume-option.patch | 31 ++
...nst_simple-inst_dir-make-fast-case-faster.patch | 50 ---
...-do-not-include-IMA-and-selinux-modules-w.patch | 48 +++
...el_modules-is-a-specialized-filter_kernel.patch | 52 ---
...un-plymouth-hook-if-the-binary-is-missing.patch | 67 ++++
...nstall_kmod_with_fw-make-fast-case-faster.patch | 30 --
...et-filenames-from-stdin-if-no-args-use-it.patch | 239 -------------
0015-man-Fix-add-fstab-option-in-man-page.patch | 22 ++
...base-init.sh-mount-tmpfs-with-strictatime.patch | 37 ++
0016-instmods-sanity-for-_mpargs.patch | 38 --
0017-99shutdown-shutdown.sh-export-PATH.patch | 26 ++
...ctor-out-egrep-of-FATAL-Module-.-not-foun.patch | 67 ----
...-do-not-fail-when-importing-the-original-.patch | 23 --
...-do-not-install-systemd-service-in-reboot.patch | 26 ++
0019-dracut-cp-with-sparse.patch | 36 --
...ule-setup.sh-include-all-kernel-drivers-n.patch | 22 ++
0020-add-pre-pivot-cleanup-hook.patch | 105 ++++++
...ve-root-use-blkid-to-determine-fstype-of-.patch | 27 --
...ve-root-load-filesystem-modules-before-mo.patch | 31 --
...cleanup-scripts-to-pre-pivot-cleanup-hook.patch | 86 +++++
...9base-init-remove-dev-root-helper-symlink.patch | 24 --
...parse-ip-opts.sh-remove-check-for-netroot.patch | 30 ++
...o-not-use-run-udev-rules.d-for-udev-rules.patch | 54 ---
...te-DNS1-.-for-nameserver-args-RHBZ-815369.patch | 31 ++
...-mount-securityfs-with-source-securityfs-.patch | 23 --
...on-t-add-existing-handlers-multiple-times.patch | 27 ++
...nt-securityfs-in-a-seperate-dracut-module.patch | 81 -----
...-t-use-progress-bar-if-TERM-dumb-RHBZ-814.patch | 34 ++
...odule-setup.sh-fix-host-only-mount-checks.patch | 43 +++
...nt-securityfs-in-a-seperate-dracut-module.patch | 21 --
0027-90mdraid-adjust-stock-mdadm-udev-rules.patch | 37 --
...odule-setup.sh-fix-host-only-mount-checks.patch | 39 ++
0028-90mdraid-containers-are-not-runnable.patch | 91 -----
...line-arg-duplicating-bug-with-etc-cmdline.patch | 29 ++
0029-90mdraid-fix-adjust-mdraid-cleanup.patch | 66 ----
0029-ifcfg-fix-resolv.conf.patch | 23 ++
0030-90mdraid-fix-adjust-force-run-script.patch | 136 -------
...FSRAID-add-one-more-partition-to-the-btrf.patch | 55 +++
0031-90-md-dm-raid-recognize-ddf-container.patch | 140 --------
...-ifcfg.sh-use-PREFIX-for-prefix-netmask-f.patch | 27 ++
...ix-adjust-65-md-rules-and-related-scripts.patch | 200 -----------
0032-Fail-to-boot-if-mediacheck-fails-817419.patch | 23 ++
...-relaxed-check-on-ext3-filesystem-options.patch | 58 ---
...-ifcfg.sh-add-s390-specific-configuration.patch | 106 ++++++
...s-lib.sh-fsck-btrfs-via-mounting-like-xfs.patch | 61 ----
0034-Makefile-call-git2spec.pl-with-LANG-C.patch | 22 ++
...re-that-we-get-the-storage-modules-into-t.patch | 24 ++
...tions-inst_rules-do-not-check-std-dirs-fo.patch | 37 --
...he-right-argument-for-dasd-module-options.patch | 42 +++
0036-str_replace-fix.patch | 33 --
...e-dasd-arg-contents-into-proper-dasd.conf.patch | 43 +++
...er-bail-out-early-if-we-don-t-have-to-log.patch | 37 --
...alize-dasd-argument-content-for-dasd.conf.patch | 38 ++
...dracut-create-dev-besides-proc-sys-and-so.patch | 24 --
...fs-lib-export-FSTAB_FILE-before-fsck-call.patch | 26 --
...-ifcfg-write-ifcfg.sh-fixed-IFS-resetting.patch | 34 ++
...ules-for-kdump-we-don-t-specify-netroot-i.patch | 42 +++
0040-dracut-functions-inst_rules-add-missing.patch | 22 --
...d-check-precisely-for-supported-contaiers.patch | 46 ---
...-lib-url-lib.sh-disable-curl-progress-bar.patch | 26 ++
...draid-more-thorough-64-md-raid.rules-edit.patch | 25 --
...p.sh-do-not-default-to-dhcp-for-interface.patch | 35 ++
0043-90mdraid-adjust-dev-md-loops.patch | 53 ---
...do-not-arping-with-qeth-layer3-interfaces.patch | 59 +++
...H-Parameter-expansion-occurs-before-comma.patch | 38 --
...down.service-do-not-unpack-old-initramfs-.patch | 23 ++
...d.luks.allow-discards-and-honor-options-i.patch | 157 +++++++++
0045-order-mdadm-and-lvm-timeout-operations.patch | 36 --
...raid-mdraid_start.sh-fix-path-to-md-sysfs.patch | 22 --
...rse-dasd-mod.sh-fixed-dasd_mod-param-gene.patch | 68 ++++
...draid-module-setup.sh-fixed-sed-arguments.patch | 22 --
...urn-value-of-some-installkernel-functions.patch | 54 +++
0048-convert_abs_rel-fixups.patch | 54 ---
...o-not-rely-on-the-presence-of-lib64-check.patch | 48 +++
...Don-t-set-an-already-set-attribute-826357.patch | 39 ++
...unctions-conv-normalize-minor-corrections.patch | 63 ----
0050-add-filesystem-options-to-fsck_single.patch | 125 +++++++
...lib.sh-fix-dropped-backslashes-in-CMDLINE.patch | 31 --
0051-90livenet-check-for-wget.patch | 21 --
...ange-rd.dasd-to-dasd_mod-kernel-parameter.patch | 85 +++++
0052-dracut-logger-re-set-debugging.patch | 75 ----
...c-remove-typo-from-BuildRequires-for-suse.patch | 22 ++
...nctions-inst_dir-handle-relative-symlinks.patch | 30 --
0053-move-dracut-back-to-usr-share.patch | 192 ++++++++++
...et-module-setup.sh-silence-check-for-wget.patch | 22 --
...ed-setsid-and-util-linux-2.21-requirement.patch | 54 +++
0055-90livenet-do-not-install-by-default.patch | 22 --
...tions-do-not-install-files-from-current-d.patch | 129 -------
...nst_script-should-call-inst_simple-750603.patch | 25 --
...cut.spec-fixed-rhel-fedora-version-checks.patch | 111 ------
0059-dracut.spec-apply-patches-with-git.patch | 88 -----
...kefile-git2spec.pl-use-temporary-builddir.patch | 61 ----
...dules-module-setup.sh-include-usb-mass-st.patch | 30 --
0062-90mdraid-remove-mdadm_auto.sh-completly.patch | 46 ---
...sk.sh-use-key-file-if-specified-in-cryptt.patch | 70 ----
...draid-wait-for-md-devices-to-become-clean.patch | 56 ---
...-only-poll-cdroms-if-the-kernel-does-supp.patch | 63 ----
...ase-init-removed-cdrom-polling-reset-code.patch | 29 --
...base-init-fix-check-for-in-kernel-polling.patch | 22 --
0068-dracut-add-install_items-to-dracut.conf.patch | 67 ----
0069-git2spec.pl-strip-path-from-patches.patch | 21 --
...dules-module-setup.sh-install-modules.ord.patch | 42 ---
...draid-wait-for-md-devices-to-become-clean.patch | 55 ---
0072-add-30convertfs.patch | 260 --------------
0073-90mdraid-add-offroot-support.patch | 143 --------
dracut.spec | 370 ++++++++++----------
128 files changed, 3115 insertions(+), 4155 deletions(-)
---
diff --git a/0001-dracut-lib-add-str_ends-to-go-along-with-str_starts.patch b/0001-dracut-lib-add-str_ends-to-go-along-with-str_starts.patch
new file mode 100644
index 0000000..21fdb61
--- /dev/null
+++ b/0001-dracut-lib-add-str_ends-to-go-along-with-str_starts.patch
@@ -0,0 +1,25 @@
+From d8f0e320c267af0ce373066f524eab618ce931af Mon Sep 17 00:00:00 2001
+From: Will Woods <wwoods at redhat.com>
+Date: Thu, 5 Apr 2012 13:01:35 -0400
+Subject: [PATCH] dracut-lib: add str_ends, to go along with str_starts
+
+---
+ modules.d/99base/dracut-lib.sh | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/modules.d/99base/dracut-lib.sh b/modules.d/99base/dracut-lib.sh
+index cb2e4dc..1ecd286 100755
+--- a/modules.d/99base/dracut-lib.sh
++++ b/modules.d/99base/dracut-lib.sh
+@@ -12,6 +12,11 @@ str_starts() {
+ [ "${1#$2*}" != "$1" ]
+ }
+
++# returns OK if $1 contains $2 at the end
++str_ends() {
++ [ "${1%*$2}" != "$1" ]
++}
++
+ # replaces all occurrences of 'search' in 'str' with 'replacement'
+ #
+ # str_replace str search replacement
diff --git a/0002-run-setup_net-at-start-of-initqueue-online-hook.patch b/0002-run-setup_net-at-start-of-initqueue-online-hook.patch
new file mode 100644
index 0000000..1f0edc6
--- /dev/null
+++ b/0002-run-setup_net-at-start-of-initqueue-online-hook.patch
@@ -0,0 +1,55 @@
+From 1e4a880125ed2d8991d10e8f8a41b37bad898c28 Mon Sep 17 00:00:00 2001
+From: Will Woods <wwoods at redhat.com>
+Date: Thu, 5 Apr 2012 13:01:36 -0400
+Subject: [PATCH] run setup_net at start of initqueue/online hook
+
+This makes sure the network is active and ready to use during the
+initqueue/online hook.
+
+It also makes it so you can run setup_net repeatedly without causing
+error messages.
+---
+ modules.d/40network/net-genrules.sh | 3 +++
+ modules.d/40network/net-lib.sh | 3 +++
+ 2 files changed, 6 insertions(+)
+
+diff --git a/modules.d/40network/net-genrules.sh b/modules.d/40network/net-genrules.sh
+index 84fd3ac..b3d5584 100755
+--- a/modules.d/40network/net-genrules.sh
++++ b/modules.d/40network/net-genrules.sh
+@@ -53,5 +53,8 @@ fix_bootif() {
+
+ # Run the "online" hook
+ printf 'SUBSYSTEM=="net", ACTION=="online", RUN+="/sbin/initqueue --onetime --env netif=$env{INTERFACE} source_hook initqueue/online"\n'
++ # And make sure we run setup_net at the start of the hook
++ echo '. /lib/net-lib.sh; setup_net $netif' > \
++ $hookdir/initqueue/online/05-setup_net.sh
+
+ } > /etc/udev/rules.d/60-net.rules
+diff --git a/modules.d/40network/net-lib.sh b/modules.d/40network/net-lib.sh
+index 467c79f..a7abe81 100644
+--- a/modules.d/40network/net-lib.sh
++++ b/modules.d/40network/net-lib.sh
+@@ -59,12 +59,14 @@ ifdown() {
+ ip link set $netif down
+ ip addr flush dev $netif
+ echo "#empty" > /etc/resolv.conf
++ rm -f /tmp/net.$netif.did-setup
+ # TODO: send "offline" uevent?
+ }
+
+ setup_net() {
+ local netif="$1" f="" gw_ip="" netroot_ip="" iface="" IFACES=""
+ [ -e /tmp/net.$netif.up ] || return 1
++ [ -e /tmp/net.$netif.did-setup ] && return
+ [ -e "/tmp/net.ifaces" ] && read IFACES < /tmp/net.ifaces
+ [ -z "$IFACES" ] && IFACES="$netif"
+ for iface in $IFACES ; do
+@@ -100,6 +102,7 @@ setup_net() {
+ if [ -n "$dest" ] && ! arping -q -f -w 60 -I $netif $dest ; then
+ info "Resolving $dest via ARP on $netif failed"
+ fi
++ > /tmp/net.$netif.did-setup
+ }
+
+ set_ifname() {
diff --git a/0003-network-add-save_netinfo-fix-problems-with-nfs-NM-ta.patch b/0003-network-add-save_netinfo-fix-problems-with-nfs-NM-ta.patch
new file mode 100644
index 0000000..5488f55
--- /dev/null
+++ b/0003-network-add-save_netinfo-fix-problems-with-nfs-NM-ta.patch
@@ -0,0 +1,65 @@
+From e173f0b384f699c2519db879f3f562b1f6676d8d Mon Sep 17 00:00:00 2001
+From: Will Woods <wwoods at redhat.com>
+Date: Thu, 5 Apr 2012 13:01:37 -0400
+Subject: [PATCH] network: add save_netinfo, fix problems with nfs->NM
+ takeover
+
+For NetworkManager to properly take over a NFS-root system, we need to
+have the interface name(s) in /tmp/net.ifaces and save the dhclient
+lease. This lets the ifcfg module do its magic.
+
+save_netinfo should properly write out /tmp/net.ifaces when needed, and
+copies the dhclient files into place.
+---
+ modules.d/40network/net-lib.sh | 16 ++++++++++++++++
+ modules.d/40network/netroot.sh | 10 ++--------
+ 2 files changed, 18 insertions(+), 8 deletions(-)
+
+diff --git a/modules.d/40network/net-lib.sh b/modules.d/40network/net-lib.sh
+index a7abe81..c0f73da 100644
+--- a/modules.d/40network/net-lib.sh
++++ b/modules.d/40network/net-lib.sh
+@@ -105,6 +105,22 @@ setup_net() {
+ > /tmp/net.$netif.did-setup
+ }
+
++save_netinfo() {
++ local netif="$1" IFACES="" f="" i=""
++ [ -e /tmp/net.ifaces ] && read IFACES < /tmp/net.ifaces
++ # Add $netif to the front of IFACES (if it's not there already).
++ set -- "$netif"
++ for i in $IFACES; do [ "$i" != "$netif" ] && set -- "$@" "$i"; done
++ IFACES="$*"
++ for i in $IFACES; do
++ for f in /tmp/dhclient.$i.*; do
++ [ -f $f ] && cp -f $f /tmp/net.${f#/tmp/dhclient.}
++ done
++ done
++ echo $IFACES > /tmp/.net.ifaces.new
++ mv /tmp/.net.ifaces.new /tmp/net.ifaces
++}
++
+ set_ifname() {
+ local name="$1" mac="$2" num=0 n=""
+ # if it's already set, return the existing name
+diff --git a/modules.d/40network/netroot.sh b/modules.d/40network/netroot.sh
+index ac1c215..1bb62bb 100755
+--- a/modules.d/40network/netroot.sh
++++ b/modules.d/40network/netroot.sh
+@@ -84,14 +84,8 @@ source_hook netroot
+ # Run the handler; don't store the root, it may change from device to device
+ # XXX other variables to export?
+ if $handler $netif $netroot $NEWROOT; then
+- # Network rootfs mount successful
+- for iface in $IFACES ; do
+- [ -f /tmp/dhclient.$iface.lease ] && cp /tmp/dhclient.$iface.lease /tmp/net.$iface.lease
+- [ -f /tmp/dhclient.$iface.dhcpopts ] && cp /tmp/dhclient.$iface.dhcpopts /tmp/net.$iface.dhcpopts
+- done
+-
+- # Save used netif for later use
+- [ ! -f /tmp/net.ifaces ] && echo $netif > /tmp/net.ifaces
++ # Network rootfs mount successful - save interface info for ifcfg etc.
++ save_netinfo $netif
+ else
+ warn "Mounting root via '$netif' failed"
+ # If we're trying with multiple interfaces, put that one down.
diff --git a/0004-Make-splitsep-work-as-documented-with-less-vars-than.patch b/0004-Make-splitsep-work-as-documented-with-less-vars-than.patch
new file mode 100644
index 0000000..b6188c0
--- /dev/null
+++ b/0004-Make-splitsep-work-as-documented-with-less-vars-than.patch
@@ -0,0 +1,35 @@
+From f7cadaa843498c4b986f8a030fab39002ad108b6 Mon Sep 17 00:00:00 2001
+From: Will Woods <wwoods at redhat.com>
+Date: Thu, 5 Apr 2012 13:01:38 -0400
+Subject: [PATCH] Make splitsep work as documented with less vars than fields
+
+According to its comment in dracut-lib.sh:
+
+ splitsep ":" "one:all:the:rest" one two
+
+should set two="all:the:rest". But there's no check to see if the
+current field is the last field, so it just gets "all".
+---
+ modules.d/99base/dracut-lib.sh | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/modules.d/99base/dracut-lib.sh b/modules.d/99base/dracut-lib.sh
+index 1ecd286..e10a34d 100755
+--- a/modules.d/99base/dracut-lib.sh
++++ b/modules.d/99base/dracut-lib.sh
+@@ -224,13 +224,14 @@ splitsep() {
+ local sep="$1"; local str="$2"; shift 2
+ local tmp
+
+- while [ -n "$str" -a -n "$*" ]; do
++ while [ -n "$str" -a "$#" -gt 1 ]; do
+ tmp="${str%%$sep*}"
+ eval "$1=${tmp}"
+ str="${str#$tmp}"
+ str="${str#$sep}"
+ shift
+ done
++ [ -n "$str" -a -n "$1" ] && eval "$1=$str"
+
+ return 0
+ }
diff --git a/0005-shutdown-use-emergency_shell-from-dracut-lib.patch b/0005-shutdown-use-emergency_shell-from-dracut-lib.patch
new file mode 100644
index 0000000..adffe75
--- /dev/null
+++ b/0005-shutdown-use-emergency_shell-from-dracut-lib.patch
@@ -0,0 +1,109 @@
+From bd3bf2ce41379459e79b9f48027d457caecce30a Mon Sep 17 00:00:00 2001
+From: Will Woods <wwoods at redhat.com>
+Date: Thu, 5 Apr 2012 13:01:39 -0400
+Subject: [PATCH] shutdown: use emergency_shell from dracut-lib
+
+---
+ modules.d/99base/dracut-lib.sh | 10 ++++----
+ modules.d/99shutdown/shutdown.sh | 47 +++-----------------------------------
+ 2 files changed, 9 insertions(+), 48 deletions(-)
+
+diff --git a/modules.d/99base/dracut-lib.sh b/modules.d/99base/dracut-lib.sh
+index e10a34d..a29d586 100755
+--- a/modules.d/99base/dracut-lib.sh
++++ b/modules.d/99base/dracut-lib.sh
+@@ -767,15 +767,17 @@ emergency_shell()
+ {
+ local _ctty
+ set +e
++ local _rdshell_name="dracut" action="Boot" hook="emergency"
+ if [ "$1" = "-n" ]; then
+ _rdshell_name=$2
+ shift 2
+- else
+- _rdshell_name=dracut
++ elif [ "$1" = "--shutdown" ]; then
++ _rdshell_name=$2; action="Shutdown"; hook="shutdown-emergency"
++ shift 2
+ fi
+ echo ; echo
+ warn $@
+- source_hook emergency
++ source_hook "$hook"
+ echo
+ wait_for_loginit
+ [ -e /run/initramfs/.die ] && exit 1
+@@ -798,7 +800,7 @@ emergency_shell()
+ strstr "$(setsid --help 2>/dev/null)" "ctty" && CTTY="-c"
+ setsid $CTTY /bin/sh -i -l 0<$_ctty 1>$_ctty 2>&1
+ else
+- warn "Boot has failed. To debug this issue add \"rdshell\" to the kernel command line."
++ warn "$action has failed. To debug this issue add \"rd.shell\" to the kernel command line."
+ # cause a kernel panic
+ exit 1
+ fi
+diff --git a/modules.d/99shutdown/shutdown.sh b/modules.d/99shutdown/shutdown.sh
+index 8817a4c..45345a4 100755
+--- a/modules.d/99shutdown/shutdown.sh
++++ b/modules.d/99shutdown/shutdown.sh
+@@ -12,49 +12,8 @@
+ export TERM=linux
+ PATH=/usr/sbin:/usr/bin:/sbin:/bin
+
+-emergency_shell()
+-{
+- local _ctty
+- set +e
+- if [ "$1" = "-n" ]; then
+- _rdshell_name=$2
+- shift 2
+- else
+- _rdshell_name=dracut
+- fi
+- echo ; echo
+- warn $@
+- source_hook shutdown-emergency
+- echo
+- if getargbool 1 rd.shell -y rdshell || getarg rd.break rdbreak; then
+- echo "Dropping to debug shell."
+- echo
+- export PS1="$_rdshell_name:\${PWD}# "
+- [ -e /.profile ] || >/.profile
+-
+- _ctty="$(getarg rd.ctty=)" && _ctty="/dev/${_ctty##*/}"
+- if [ -z "$_ctty" ]; then
+- _ctty=console
+- while [ -f /sys/class/tty/$_ctty/active ]; do
+- _ctty=$(cat /sys/class/tty/$_ctty/active)
+- _ctty=${_ctty##* } # last one in the list
+- done
+- _ctty=/dev/$_ctty
+- fi
+- [ -c "$_ctty" ] || _ctty=/dev/tty1
+- strstr "$(setsid --help)" "control" && CTTY="-c"
+- setsid $CTTY /bin/sh -i -l 0<$_ctty 1>$_ctty 2>&1
+- else
+- exec /lib/systemd/systemd-shutdown "$@"
+- warn "Shutdown has failed. To debug this issue add \"rdshell\" to the kernel command line."
+- # cause a kernel panic
+- exit 1
+- fi
+-}
+-
+-trap "emergency_shell Signal caught!" 0
+-
+-getarg 'rd.break=pre-shutdown' && emergency_shell -n cmdline "Break before pre-shutdown"
++trap "emergency_shell --shutdown shutdown Signal caught!" 0
++getarg 'rd.break=pre-shutdown' && emergency_shell --shutdown pre-shutdown "Break before pre-shutdown"
+
+ umount_a() {
+ local _did_umount="n"
+@@ -97,7 +56,7 @@ while _check_shutdown; do
+ done
+ _check_shutdown final
+
+-getarg 'rd.break=shutdown' && emergency_shell -n cmdline "Break before shutdown"
++getarg 'rd.break=shutdown' && emergency_shell --shutdown shutdown "Break before shutdown"
+ [ "$1" = "reboot" ] && reboot -f -d -n --no-wall
+ [ "$1" = "poweroff" ] && poweroff -f -d -n --no-wall
+ [ "$1" = "halt" ] && halt -f -d -n --no-wall
diff --git a/0006-rootfs-block-avoid-remount-when-options-don-t-change.patch b/0006-rootfs-block-avoid-remount-when-options-don-t-change.patch
new file mode 100644
index 0000000..189a976
--- /dev/null
+++ b/0006-rootfs-block-avoid-remount-when-options-don-t-change.patch
@@ -0,0 +1,52 @@
+From 6625b74e90a0b6918c90c408215e76719e459883 Mon Sep 17 00:00:00 2001
+From: Daniel Drake <dsd at laptop.org>
+Date: Wed, 11 Apr 2012 23:00:43 +0100
+Subject: [PATCH] rootfs-block: avoid remount when options don't change
+
+Mounting, unmounting and then mounting a disk partition takes some
+time.
+
+On embedded systems such as OLPC XO where we disable fsck and fstab
+reading, the root options are not going to change throughout the
+mount_root() function, so remounting is time consuming and without
+change.
+
+Detect and optimize for this case so that the filesystem is only
+mounted once.
+---
+ modules.d/95rootfs-block/mount-root.sh | 12 ++++++++----
+ 1 file changed, 8 insertions(+), 4 deletions(-)
+
+diff --git a/modules.d/95rootfs-block/mount-root.sh b/modules.d/95rootfs-block/mount-root.sh
+index 2c89431..aef99ae 100755
+--- a/modules.d/95rootfs-block/mount-root.sh
++++ b/modules.d/95rootfs-block/mount-root.sh
+@@ -98,20 +98,24 @@ mount_root() {
+ # 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
+
++ ran_fsck=0
+ if [ -z "$fastboot" -a "$READONLY" != "yes" ] && ! strstr "${rflags},${rootopts}" _netdev; then
++ umount "$NEWROOT"
+ fsck_single "${root#block:}" "$rootfs" "$fsckoptions"
+ _ret=$?
+ [ $_ret -ne 255 ] && echo $_ret >/run/initramfs/root-fsck
++ ran_fsck=1
+ fi
+
+- info "Remounting ${root#block:} with -o ${rflags}"
+- mount -t "$rootfs" -o "$rflags" "${root#block:}" "$NEWROOT" 2>&1 | vinfo
++ if [ -n "$rootopts" -o "$ran_fsck" = "1" ]; then
++ info "Remounting ${root#block:} with -o ${rflags}"
++ umount "$NEWROOT" &>/dev/null
++ mount -t "$rootfs" -o "$rflags" "${root#block:}" "$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
diff --git a/0007-Debian-multiarch-support.patch b/0007-Debian-multiarch-support.patch
new file mode 100644
index 0000000..bcc733d
--- /dev/null
+++ b/0007-Debian-multiarch-support.patch
@@ -0,0 +1,279 @@
+From c9143a63fef0d6f2dfd7cc37b09fc68d744d900f Mon Sep 17 00:00:00 2001
+From: Jon Ander Hernandez <jonan.h at gmail.com>
+Date: Tue, 10 Apr 2012 15:14:38 +0200
+Subject: [PATCH] Debian multiarch support
+
+Another solution could be searching in directories found at
+/etc/ld.so.conf.d/*.conf or adding a new parameter. Here is a patch
+which adds a new --libdirs parameter, and also a new inst_libdir_file
+function which will try to expand metacharacters on each lib
+directory:
+
+ inst_libdir_file "libdevmapper-event-lvm*.so"
+---
+ dracut-functions.sh | 28 ++++++++++++++++++++++++++++
+ dracut.sh | 12 ++++++++++--
+ modules.d/01fips/module-setup.sh | 11 +++++------
+ modules.d/40network/module-setup.sh | 9 ++-------
+ modules.d/80cms/module-setup.sh | 4 +---
+ modules.d/90dm/module-setup.sh | 4 +---
+ modules.d/90dmraid/module-setup.sh | 4 +---
+ modules.d/90lvm/module-setup.sh | 4 +---
+ modules.d/90multipath/module-setup.sh | 6 ++++--
+ modules.d/95nfs/module-setup.sh | 6 +-----
+ modules.d/95udev-rules/module-setup.sh | 4 +---
+ modules.d/98syslog/module-setup.sh | 8 +++-----
+ 12 files changed, 58 insertions(+), 42 deletions(-)
+
+diff --git a/dracut-functions.sh b/dracut-functions.sh
+index 910f2d8..f5611dc 100755
+--- a/dracut-functions.sh
++++ b/dracut-functions.sh
+@@ -677,6 +677,34 @@ dracut_install() {
+ done
+ }
+
++
++# inst_libdir_file [-n <pattern>] <file> [<file>...]
++# Install a <file> located on a lib directory to the initramfs image
++# -n <pattern> install non-matching files
++inst_libdir_file() {
++ if [[ "$1" == "-n" ]]; then
++ local _pattern=$1
++ shift 2
++ for _dir in $libdirs; do
++ for _i in "$@"; do
++ for _f in "$_dir"/$_i; do
++ [[ "$_i" =~ $_pattern ]] || continue
++ [[ -e "$_i" ]] && dracut_install "$_i"
++ done
++ done
++ done
++ else
++ for _dir in $libdirs; do
++ for _i in "$@"; do
++ for _f in "$_dir"/$_i; do
++ [[ -e "$_f" ]] && dracut_install "$_f"
++ done
++ done
++ done
++ fi
++}
++
++
+ # install function decompressing the target and handling symlinks
+ # $@ = list of compressed (gz or bz2) files or symlinks pointing to such files
+ #
+diff --git a/dracut.sh b/dracut.sh
+index 0418c78..7f61143 100755
+--- a/dracut.sh
++++ b/dracut.sh
+@@ -221,6 +221,7 @@ while (($# > 0)); do
+ --filesystems) push_arg filesystems_l "$@" || shift;;
+ -I|--install) push_arg install_items_l "$@" || shift;;
+ --fwdir) push_arg fw_dir_l "$@" || shift;;
++ --libdirs) push_arg libdirs_l "$@" || shift;;
+ --fscks) push_arg fscks_l "$@" || shift;;
+ --add-fstab) push_arg add_fstab_l "$@" || shift;;
+ --mount) push_arg fstab_lines "$@" || shift;;
+@@ -400,6 +401,13 @@ if (( ${#fw_dir_l[@]} )); then
+ done
+ fi
+
++if (( ${#libdirs_l[@]} )); then
++ libdirs=''
++ while pop libdirs_l val; do
++ libdirs+="$val "
++ done
++fi
++
+ [[ $stdloglvl_l ]] && stdloglvl=$stdloglvl_l
+ [[ ! $stdloglvl ]] && stdloglvl=4
+ stdloglvl=$((stdloglvl + verbosity_mod_l))
+@@ -505,14 +513,14 @@ ddebug "Executing $0 $dracut_args"
+
+ # Detect lib paths
+ [[ $libdir ]] || for libdir in /lib64 /lib; do
+- [[ -d $libdir ]] && break
++ [[ -d $libdir ]] && libdirs+=" $libdir" && break
+ done || {
+ dfatal 'No lib directory?!!!'
+ exit 1
+ }
+
+ [[ $usrlibdir ]] || for usrlibdir in /usr/lib64 /usr/lib; do
+- [[ -d $usrlibdir ]] && break
++ [[ -d $usrlibdir ]] && libdirs+=" $usrlibdir" && break
+ done || dwarn 'No usr/lib directory!'
+
+ # This is kinda legacy -- eventually it should go away.
+diff --git a/modules.d/01fips/module-setup.sh b/modules.d/01fips/module-setup.sh
+index a490827..6bfe31e 100755
+--- a/modules.d/01fips/module-setup.sh
++++ b/modules.d/01fips/module-setup.sh
+@@ -34,12 +34,11 @@ install() {
+
+ dracut_install sha512hmac rmmod insmod mount uname umount
+
+- for _dir in "$usrlibdir" "$libdir"; do
+- [[ -e $_dir/libsoftokn3.so ]] && \
+- dracut_install $_dir/libsoftokn3.so $_dir/libsoftokn3.chk \
+- $_dir/libfreebl3.so $_dir/libfreebl3.chk && \
+- break
+- done
++ inst_libdir_file libsoftokn3.so
++ inst_libdir_file libsoftokn3.so
++ inst_libdir_file libsoftokn3.chk
++ inst_libdir_file libfreebl3.so
++ inst_libdir_file libfreebl3.chk
+
+ dracut_install $usrlibdir/hmaccalc/sha512hmac.hmac
+ if command -v prelink >/dev/null; then
+diff --git a/modules.d/40network/module-setup.sh b/modules.d/40network/module-setup.sh
+index c91f164..97fc5cb 100755
+--- a/modules.d/40network/module-setup.sh
++++ b/modules.d/40network/module-setup.sh
+@@ -89,12 +89,7 @@ install() {
+
+ _arch=$(uname -m)
+
+- for _dir in "$usrlibdir/tls/$_arch" "$usrlibdir/tls" "$usrlibdir/$_arch" \
+- "$usrlibdir" "$libdir"; do
+- for _i in "$_dir"/libnss_dns.so.* "$_dir"/libnss_mdns4_minimal.so.*; do
+- [ -e "$_i" ] && dracut_install "$_i"
+- done
+- done
+-
++ inst_libdir_file {"tls/$_arch/",tls/,"$_arch/",}"libnss_dns.so.*"
++ inst_libdir_file {"tls/$_arch/",tls/,"$_arch/",}"libnss_mdns4_minimal.so.*"
+ }
+
+diff --git a/modules.d/80cms/module-setup.sh b/modules.d/80cms/module-setup.sh
+index 5cb5413..5cce1b4 100755
+--- a/modules.d/80cms/module-setup.sh
++++ b/modules.d/80cms/module-setup.sh
+@@ -31,9 +31,7 @@ install() {
+ [[ -f $file ]] && inst $file
+ done
+
+- for file in {"$usrlibdir","$libdir"}/gconv/*; do
+- [[ -f $file ]] && inst $file
+- done
++ inst_libdir_file "gconv/*"
+ #inst /usr/lib/locale/locale-archive
+
+ dracut_install cmsfs-fuse fusermount ulockmgr_server bash tr insmod rmmod cat
+diff --git a/modules.d/90dm/module-setup.sh b/modules.d/90dm/module-setup.sh
+index a55d591..bac854a 100755
+--- a/modules.d/90dm/module-setup.sh
++++ b/modules.d/90dm/module-setup.sh
+@@ -22,9 +22,7 @@ install() {
+
+ type -P dmeventd >/dev/null && dracut_install dmeventd
+
+- for _i in {"$libdir","$usrlibdir"}/libdevmapper-event.so*; do
+- [ -e "$_i" ] && dracut_install "$_i"
+- done
++ inst_libdir_file "libdevmapper-event.so*"
+
+ inst_rules 10-dm.rules 13-dm-disk.rules 95-dm-notify.rules
+ # Gentoo ebuild for LVM2 prior to 2.02.63-r1 doesn't install above rules
+diff --git a/modules.d/90dmraid/module-setup.sh b/modules.d/90dmraid/module-setup.sh
+index 786cf25..0a8ed7f 100755
+--- a/modules.d/90dmraid/module-setup.sh
++++ b/modules.d/90dmraid/module-setup.sh
+@@ -62,9 +62,7 @@ install() {
+ inst_rules 64-md-raid.rules
+ fi
+
+- for _i in {"$libdir","$usrlibdir"}/libdmraid-events*.so*; do
+- [ -e "$_i" ] && dracut_install "$_i"
+- done
++ inst_libdir_file "libdmraid-events*.so*"
+
+ inst_rules "$moddir/61-dmraid-imsm.rules"
+ #inst "$moddir/dmraid-cleanup.sh" /sbin/dmraid-cleanup
+diff --git a/modules.d/90lvm/module-setup.sh b/modules.d/90lvm/module-setup.sh
+index cf46372..15c824d 100755
+--- a/modules.d/90lvm/module-setup.sh
++++ b/modules.d/90lvm/module-setup.sh
+@@ -60,8 +60,6 @@ install() {
+ inst "$moddir/lvm_scan.sh" /sbin/lvm_scan
+ inst_hook cmdline 30 "$moddir/parse-lvm.sh"
+
+- for _i in {"$libdir","$usrlibdir"}/libdevmapper-event-lvm*.so; do
+- [ -e "$_i" ] && dracut_install "$_i"
+- done
++ inst_libdir_file "libdevmapper-event-lvm*.so"
+ }
+
+diff --git a/modules.d/90multipath/module-setup.sh b/modules.d/90multipath/module-setup.sh
+index b78c005..8a193c4 100755
+--- a/modules.d/90multipath/module-setup.sh
++++ b/modules.d/90multipath/module-setup.sh
+@@ -62,11 +62,13 @@ install() {
+ /sbin/xdrgetprio \
+ /etc/xdrdevices.conf \
+ /etc/multipath.conf \
+- /etc/multipath/* \
+- "$libdir"/libmultipath* "$libdir"/multipath/*; do
++ /etc/multipath/*; do
+ [ -e "$_f" ] && inst "$_f"
+ done
+
++ inst_libdir_file "libmultipath*"
++ inst_libdir_file "multipath/*"
++
+ inst_hook pre-trigger 02 "$moddir/multipathd.sh"
+ inst_hook pre-pivot 02 "$moddir/multipathd-stop.sh"
+ inst_rules 40-multipath.rules
+diff --git a/modules.d/95nfs/module-setup.sh b/modules.d/95nfs/module-setup.sh
+index 7853783..455f52f 100755
+--- a/modules.d/95nfs/module-setup.sh
++++ b/modules.d/95nfs/module-setup.sh
+@@ -54,11 +54,7 @@ install() {
+ _nsslibs=${_nsslibs#|}
+ _nsslibs=${_nsslibs%|}
+
+- for _i in {/usr,}$libdir/libnss*.so; do
+- [[ -e $_i ]] || continue
+- [[ "$_i" =~ $_nsslibs ]] || continue
+- dracut_install "$_i"
+- done
++ inst_libdir_file -n "$_nsslibs" "libnss*.so"
+
+ inst_hook cmdline 90 "$moddir/parse-nfsroot.sh"
+ inst_hook pre-udev 99 "$moddir/nfs-start-rpc.sh"
+diff --git a/modules.d/95udev-rules/module-setup.sh b/modules.d/95udev-rules/module-setup.sh
+index 5f8bae8..1c71336 100755
+--- a/modules.d/95udev-rules/module-setup.sh
++++ b/modules.d/95udev-rules/module-setup.sh
+@@ -74,8 +74,6 @@ install() {
+ [ -f /etc/arch-release ] && \
+ inst "$moddir/load-modules.sh" /lib/udev/load-modules.sh
+
+- for _i in {"$libdir","$usrlibdir"}/libnss_files*; do
+- [ -e "$_i" ] && dracut_install "$_i"
+- done
++ inst_libdir_file "libnss_files*"
+ }
+
+diff --git a/modules.d/98syslog/module-setup.sh b/modules.d/98syslog/module-setup.sh
+index 5579c5a..bd6e92c 100755
+--- a/modules.d/98syslog/module-setup.sh
++++ b/modules.d/98syslog/module-setup.sh
+@@ -16,11 +16,9 @@ install() {
+ local _installs
+ if type -P rsyslogd >/dev/null; then
+ _installs="rsyslogd"
+- for _i in {"$libdir","$usrlibdir"}/rsyslog/lmnet.so \
+- {"$libdir","$usrlibdir"}/rsyslog/imklog.so \
+- {"$libdir","$usrlibdir"}/rsyslog/imuxsock.so ; do
+- [ -e "$_i" ] && _installs="$_installs $_i"
+- done
++ inst_libdir_file rsyslog/lmnet.so
++ inst_libdir_file rsyslog/imklog.so
++ inst_libdir_file rsyslog/imuxsock.so
+ elif type -P syslogd >/dev/null; then
+ _installs="syslogd"
+ elif type -P syslog-ng >/dev/null; then
diff --git a/0008-dracut.sh-log-installed-modules-to-initdir-lib-dracu.patch b/0008-dracut.sh-log-installed-modules-to-initdir-lib-dracu.patch
new file mode 100644
index 0000000..b7f7224
--- /dev/null
+++ b/0008-dracut.sh-log-installed-modules-to-initdir-lib-dracu.patch
@@ -0,0 +1,26 @@
+From 0a35a80b934a0a5a34e3c23244aca0caa440e5d4 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald at redhat.com>
+Date: Mon, 16 Apr 2012 13:10:22 +0200
+Subject: [PATCH] dracut.sh: log installed modules to
+ $initdir/lib/dracut/modules.txt
+
+---
+ dracut.sh | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/dracut.sh b/dracut.sh
+index 7f61143..1048e75 100755
+--- a/dracut.sh
++++ b/dracut.sh
+@@ -720,6 +720,11 @@ for moddir in "$dracutbasedir/modules.d"/[0-9][0-9]*; do
+ fi
+ done
+ unset moddir
++
++for i in $modules_loaded; do
++ echo "$i" >> $initdir/lib/dracut/modules.txt
++done
++
+ dinfo "*** Including modules done ***"
+
+ ## final stuff that has to happen
diff --git a/0009-lvm-disable-lvmetad.patch b/0009-lvm-disable-lvmetad.patch
new file mode 100644
index 0000000..492b151
--- /dev/null
+++ b/0009-lvm-disable-lvmetad.patch
@@ -0,0 +1,53 @@
+From b8a81fb885c981d795a664ae8665e68d7359231a Mon Sep 17 00:00:00 2001
+From: Peter Rajnoha <prajnoha at redhat.com>
+Date: Tue, 10 Apr 2012 04:40:53 -0400
+Subject: [PATCH] lvm: disable lvmetad
+
+Currently dracut uses lvm.conf as found in the system and modifies only
+global/locking_type setting. As there's a new feature introduced - the lvmetad
+daemon, dracut should disable its use as well by setting "global/use_lvmetad=0"
+(patch attached).
+
+Otherwise, there's a warning message issued:
+
+dracut: WARNING: Failed to connect to lvmetad: No such file or directory.
+Falling back to internal scanning.
+
+@@ -, +, @@
+ modules.d/90lvm/lvm_scan.sh | 2 ++
+ modules.d/90lvm/module-setup.sh | 1 +
+ 2 files changed, 3 insertions(+), 0 deletions(-)
+---
+ modules.d/90lvm/lvm_scan.sh | 2 ++
+ modules.d/90lvm/module-setup.sh | 1 +
+ 2 files changed, 3 insertions(+)
+
+diff --git a/modules.d/90lvm/lvm_scan.sh b/modules.d/90lvm/lvm_scan.sh
+index 104565f..17c29bc 100755
+--- a/modules.d/90lvm/lvm_scan.sh
++++ b/modules.d/90lvm/lvm_scan.sh
+@@ -35,10 +35,12 @@ if [ ! -e /etc/lvm/lvm.conf ]; then
+ if [ -n $SNAPSHOT ]; then
+ echo 'global {';
+ echo ' locking_type = 1';
++ echo ' use_lvmetad = 0';
+ echo '}';
+ else
+ echo 'global {';
+ echo ' locking_type = 4';
++ echo ' use_lvmetad = 0';
+ echo '}';
+ fi
+ } > /etc/lvm/lvm.conf
+diff --git a/modules.d/90lvm/module-setup.sh b/modules.d/90lvm/module-setup.sh
+index 15c824d..2ce5c50 100755
+--- a/modules.d/90lvm/module-setup.sh
++++ b/modules.d/90lvm/module-setup.sh
+@@ -49,6 +49,7 @@ install() {
+ # FIXME: near-term hack to establish read-only locking;
+ # use command-line lvm.conf editor once it is available
+ sed -i -e 's/\(^[[:space:]]*\)locking_type[[:space:]]*=[[:space:]]*[[:digit:]]/\1locking_type = 4/' ${initdir}/etc/lvm/lvm.conf
++ sed -i -e 's/\(^[[:space:]]*\)use_lvmetad[[:space:]]*=[[:space:]]*[[:digit:]]/\1use_lvmetad = 0/' ${initdir}/etc/lvm/lvm.conf
+ fi
+ fi
+
diff --git a/0010-udev-rules-remove-01-ignore.rules.patch b/0010-udev-rules-remove-01-ignore.rules.patch
new file mode 100644
index 0000000..ee21461
--- /dev/null
+++ b/0010-udev-rules-remove-01-ignore.rules.patch
@@ -0,0 +1,32 @@
+From 324be70f8070105c106c5901dd0575cb116cebc9 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald at redhat.com>
+Date: Mon, 16 Apr 2012 14:50:35 +0200
+Subject: [PATCH] udev-rules: remove 01-ignore.rules
+
+---
+ modules.d/95udev-rules/01-ignore.rules | 1 -
+ modules.d/95udev-rules/module-setup.sh | 3 ---
+ 2 files changed, 4 deletions(-)
+ delete mode 100644 modules.d/95udev-rules/01-ignore.rules
+
+diff --git a/modules.d/95udev-rules/01-ignore.rules b/modules.d/95udev-rules/01-ignore.rules
+deleted file mode 100644
+index b32f22e..0000000
+--- a/modules.d/95udev-rules/01-ignore.rules
++++ /dev/null
+@@ -1 +0,0 @@
+-KERNEL=="ram[0-9]*", OPTIONS+="ignore_device", OPTIONS+="last_rule"
+diff --git a/modules.d/95udev-rules/module-setup.sh b/modules.d/95udev-rules/module-setup.sh
+index 1c71336..b17232f 100755
+--- a/modules.d/95udev-rules/module-setup.sh
++++ b/modules.d/95udev-rules/module-setup.sh
+@@ -20,9 +20,6 @@ install() {
+ #Some debian udev rules are named differently
+ inst_rules 50-udev.rules 95-late.rules
+
+- # ignore some devices in the initrd
+- inst_rules "$moddir/01-ignore.rules"
+-
+ # for firmware loading
+ inst_rules 50-firmware.rules
+ dracut_install cat uname
diff --git a/0011-lsinitrd-support-symlinks.patch b/0011-lsinitrd-support-symlinks.patch
new file mode 100644
index 0000000..683558e
--- /dev/null
+++ b/0011-lsinitrd-support-symlinks.patch
@@ -0,0 +1,22 @@
+From 25ff71b0c756bf2036bec78557398946d45bcbd3 Mon Sep 17 00:00:00 2001
+From: Nikoli <nikoli at lavabit.com>
+Date: Tue, 17 Apr 2012 11:31:27 +0200
+Subject: [PATCH] lsinitrd: support symlinks
+
+---
+ lsinitrd.sh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/lsinitrd.sh b/lsinitrd.sh
+index 1eaa37d..e6767dc 100755
+--- a/lsinitrd.sh
++++ b/lsinitrd.sh
+@@ -34,7 +34,7 @@ image="${1:-/boot/initramfs-$(uname -r).img}"
+ [[ -f "$image" ]] || { echo "$image does not exist" ; exit 1 ; }
+
+ CAT=zcat
+-FILE_T=$(file "$image")
++FILE_T=$(file --dereference "$image")
+
+ if echo "test"|xz|xz -dc --single-stream >/dev/null 2>&1; then
+ XZ_SINGLE_STREAM="--single-stream"
diff --git a/0012-dracut.cmdline.7.asc-document-resume-option.patch b/0012-dracut.cmdline.7.asc-document-resume-option.patch
new file mode 100644
index 0000000..b64e907
--- /dev/null
+++ b/0012-dracut.cmdline.7.asc-document-resume-option.patch
@@ -0,0 +1,31 @@
+From 97903dfc476ae0c5ccaa4ddef294e2da43411355 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald at redhat.com>
+Date: Tue, 17 Apr 2012 12:06:51 +0200
+Subject: [PATCH] dracut.cmdline.7.asc: document "resume=" option
+
+---
+ dracut.cmdline.7.asc | 11 +++++++++++
+ 1 file changed, 11 insertions(+)
+
+diff --git a/dracut.cmdline.7.asc b/dracut.cmdline.7.asc
+index a1e06dd..c77fee5 100644
+--- a/dracut.cmdline.7.asc
++++ b/dracut.cmdline.7.asc
+@@ -64,6 +64,17 @@ rootfstype=ext3
+ do not honor special mount options for the root filesystem found in
+ _/etc/fstab_ of the real root.
+
++**resume=**_<path to resume partition>_
+++
++E.g.:
+++
++----
++resume=/dev/disk/by-path/pci-0000:00:1f.1-scsi-0:0:1:0-part1
++resume=/dev/disk/by-uuid/3f5ad593-4546-4a94-a374-bcfb68aa11f7
++resume=UUID=3f5ad593-4546-4a94-a374-bcfb68aa11f7
++----
++
++
+ Misc
+ ~~~~
+ **rd.driver.blacklist=**_<drivername>[,<drivername>,...]_::
diff --git a/0013-dracut.spec-do-not-include-IMA-and-selinux-modules-w.patch b/0013-dracut.spec-do-not-include-IMA-and-selinux-modules-w.patch
new file mode 100644
index 0000000..c142928
--- /dev/null
+++ b/0013-dracut.spec-do-not-include-IMA-and-selinux-modules-w.patch
@@ -0,0 +1,48 @@
+From d7d7822529fef60a1620ea3d6c43865b6cf44e1f Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald at redhat.com>
+Date: Tue, 17 Apr 2012 12:12:56 +0200
+Subject: [PATCH] dracut.spec: do not include IMA and selinux modules with
+ systemd
+
+---
+ dracut.spec | 16 +++++++++++++---
+ 1 file changed, 13 insertions(+), 3 deletions(-)
+
+diff --git a/dracut.spec b/dracut.spec
+index 074cb10..b5218d9 100644
+--- a/dracut.spec
++++ b/dracut.spec
+@@ -187,6 +187,14 @@ rm -fr $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/02fips-aesni
+ # remove gentoo specific modules
+ rm -fr $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/50gensplash
+
++%if %{defined _unitdir}
++# with systemd IMA and selinux modules do not make sense
++rm -fr $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/96securityfs
++rm -fr $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/97masterkey
++rm -fr $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/98integrity
++rm -fr $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/98selinux
++%endif
++
+ mkdir -p $RPM_BUILD_ROOT/boot/dracut
+ mkdir -p $RPM_BUILD_ROOT/var/lib/dracut/overlay
+ mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/log
+@@ -270,13 +278,15 @@ rm -rf $RPM_BUILD_ROOT
+ %{dracutlibdir}/modules.d/95zfcp
+ %{dracutlibdir}/modules.d/95terminfo
+ %{dracutlibdir}/modules.d/95udev-rules
++%if %{undefined _unitdir}
+ %{dracutlibdir}/modules.d/96securityfs
+-%{dracutlibdir}/modules.d/97biosdevname
+ %{dracutlibdir}/modules.d/97masterkey
+-%{dracutlibdir}/modules.d/98ecryptfs
++%{dracutlibdir}/modules.d/98selinux
+ %{dracutlibdir}/modules.d/98integrity
++%endif
++%{dracutlibdir}/modules.d/97biosdevname
++%{dracutlibdir}/modules.d/98ecryptfs
+ %{dracutlibdir}/modules.d/98pollcdrom
+-%{dracutlibdir}/modules.d/98selinux
+ %{dracutlibdir}/modules.d/98syslog
+ %{dracutlibdir}/modules.d/98usrmount
+ %{dracutlibdir}/modules.d/99base
diff --git a/0014-Do-not-run-plymouth-hook-if-the-binary-is-missing.patch b/0014-Do-not-run-plymouth-hook-if-the-binary-is-missing.patch
new file mode 100644
index 0000000..edcb728
--- /dev/null
+++ b/0014-Do-not-run-plymouth-hook-if-the-binary-is-missing.patch
@@ -0,0 +1,67 @@
+From 8b0e6b11b6456397d602c7f687ec3d9c80bbdd9c Mon Sep 17 00:00:00 2001
+From: Colin Guthrie <colin at mageia.org>
+Date: Sat, 14 Apr 2012 16:03:34 +0100
+Subject: [PATCH] Do not run plymouth hook if the binary is missing.
+
+There is a remove-boot-splash script in Mageia that can
+strip plymouth from an initrd. Make this script a noop
+if that has happened.
+---
+ modules.d/50plymouth/plymouth-pretrigger.sh | 44 ++++++++++++++-------------
+ 1 file changed, 23 insertions(+), 21 deletions(-)
+
+diff --git a/modules.d/50plymouth/plymouth-pretrigger.sh b/modules.d/50plymouth/plymouth-pretrigger.sh
+index 57955e7..50828af 100755
+--- a/modules.d/50plymouth/plymouth-pretrigger.sh
++++ b/modules.d/50plymouth/plymouth-pretrigger.sh
+@@ -2,27 +2,29 @@
+ # -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
+ # ex: ts=8 sw=4 sts=4 et filetype=sh
+
+-if getargbool 1 plymouth.enable && getargbool 1 rd.plymouth -n rd_NO_PLYMOUTH; then
+- [ -c /dev/null ] || mknod -m 0666 /dev/null c 1 3
+- # first trigger graphics subsystem
+- udevadm trigger --action=add --attr-match=class=0x030000 >/dev/null 2>&1
+- # first trigger graphics and tty subsystem
+- udevadm trigger --action=add --subsystem-match=graphics --subsystem-match=drm --subsystem-match=tty >/dev/null 2>&1
++if [ -x /bin/plymouthd ]; then
++ if getargbool 1 plymouth.enable && getargbool 1 rd.plymouth -n rd_NO_PLYMOUTH; then
++ [ -c /dev/null ] || mknod -m 0666 /dev/null c 1 3
++ # first trigger graphics subsystem
++ udevadm trigger --action=add --attr-match=class=0x030000 >/dev/null 2>&1
++ # first trigger graphics and tty subsystem
++ udevadm trigger --action=add --subsystem-match=graphics --subsystem-match=drm --subsystem-match=tty >/dev/null 2>&1
+
+- udevadm settle --timeout=30 2>&1 | vinfo
+- [ -c /dev/zero ] || mknod -m 0666 /dev/zero c 1 5
+- [ -c /dev/tty0 ] || mknod -m 0620 /dev/tty0 c 4 0
+- [ -e /dev/systty ] || ln -s tty0 /dev/systty
+- [ -c /dev/fb0 ] || mknod -m 0660 /dev/fb0 c 29 0
+- [ -e /dev/fb ] || ln -s fb0 /dev/fb
++ udevadm settle --timeout=30 2>&1 | vinfo
++ [ -c /dev/zero ] || mknod -m 0666 /dev/zero c 1 5
++ [ -c /dev/tty0 ] || mknod -m 0620 /dev/tty0 c 4 0
++ [ -e /dev/systty ] || ln -s tty0 /dev/systty
++ [ -c /dev/fb0 ] || mknod -m 0660 /dev/fb0 c 29 0
++ [ -e /dev/fb ] || ln -s fb0 /dev/fb
+
+- info "Starting plymouth daemon"
+- mkdir -m 0755 /run/plymouth
+- consoledev=$(getarg console= | sed -e 's/,.*//')
+- consoledev=${consoledev:-tty0}
+- [ -x /lib/udev/console_init ] && /lib/udev/console_init "/dev/$consoledev"
+- [ -x /bin/plymouthd ] && /bin/plymouthd --attach-to-session --pid-file /run/plymouth/pid
+- /bin/plymouth --show-splash 2>&1 | vinfo
+- # reset tty after plymouth messed with it
+- [ -x /lib/udev/console_init ] && /lib/udev/console_init /dev/tty0
++ info "Starting plymouth daemon"
++ mkdir -m 0755 /run/plymouth
++ consoledev=$(getarg console= | sed -e 's/,.*//')
++ consoledev=${consoledev:-tty0}
++ [ -x /lib/udev/console_init ] && /lib/udev/console_init "/dev/$consoledev"
++ [ -x /bin/plymouthd ] && /bin/plymouthd --attach-to-session --pid-file /run/plymouth/pid
++ /bin/plymouth --show-splash 2>&1 | vinfo
++ # reset tty after plymouth messed with it
++ [ -x /lib/udev/console_init ] && /lib/udev/console_init /dev/tty0
++ fi
+ fi
diff --git a/0015-man-Fix-add-fstab-option-in-man-page.patch b/0015-man-Fix-add-fstab-option-in-man-page.patch
new file mode 100644
index 0000000..5fc2460
--- /dev/null
+++ b/0015-man-Fix-add-fstab-option-in-man-page.patch
@@ -0,0 +1,22 @@
+From 4cbb00e93fdc809df130e83041967aa87138d9e5 Mon Sep 17 00:00:00 2001
+From: Colin Guthrie <colin at mageia.org>
+Date: Sat, 14 Apr 2012 18:14:29 +0100
+Subject: [PATCH] man: Fix --add-fstab option in man page
+
+---
+ dracut.8.asc | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/dracut.8.asc b/dracut.8.asc
+index 24b7a8c..cadd740 100644
+--- a/dracut.8.asc
++++ b/dracut.8.asc
+@@ -247,7 +247,7 @@ provide a valid _/etc/fstab_.
+ **--fstab**::
+ Use _/etc/fstab_ instead of _/proc/self/mountinfo_.
+
+-**--add_fstab** _<filename>_ ::
++**--add-fstab** _<filename>_ ::
+ Add entries of _<filename>_ to the initramfs /etc/fstab.
+
+ **--mount** "_<device>_ _<mountpoint>_ _<filesystem type>_ _<filesystem options>_"::
diff --git a/0016-base-init.sh-mount-tmpfs-with-strictatime.patch b/0016-base-init.sh-mount-tmpfs-with-strictatime.patch
new file mode 100644
index 0000000..bd22ed7
--- /dev/null
+++ b/0016-base-init.sh-mount-tmpfs-with-strictatime.patch
@@ -0,0 +1,37 @@
+From c66c2c271fff338ef26ff3ca73d3a9c62e6bc184 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald at redhat.com>
+Date: Wed, 18 Apr 2012 12:44:00 +0200
+Subject: [PATCH] base/init.sh: mount tmpfs with strictatime
+
+---
+ modules.d/99base/init.sh | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/modules.d/99base/init.sh b/modules.d/99base/init.sh
+index 2f87a20..b5adcad 100755
+--- a/modules.d/99base/init.sh
++++ b/modules.d/99base/init.sh
+@@ -46,7 +46,7 @@ if [ "$RD_DEBUG" = "yes" ]; then
+ fi
+
+ if ! ismounted /dev; then
+- mount -t devtmpfs -o mode=0755,nosuid devtmpfs /dev >/dev/null
++ mount -t devtmpfs -o mode=0755,nosuid,strictatime devtmpfs /dev >/dev/null
+ fi
+
+ # prepare the /dev directory
+@@ -62,12 +62,12 @@ fi
+
+ if ! ismounted /dev/shm; then
+ mkdir -m 0755 /dev/shm
+- mount -t tmpfs -o mode=1777,nosuid,nodev tmpfs /dev/shm >/dev/null
++ mount -t tmpfs -o mode=1777,nosuid,nodev,strictatime tmpfs /dev/shm >/dev/null
+ fi
+
+ if ! ismounted /run; then
+ mkdir -m 0755 /newrun
+- mount -t tmpfs -o mode=0755,nosuid,nodev tmpfs /newrun >/dev/null
++ mount -t tmpfs -o mode=0755,nosuid,nodev,strictatime tmpfs /newrun >/dev/null
+ cp -a /run/* /newrun >/dev/null 2>&1
+ mount --move /newrun /run
+ rm -fr /newrun
diff --git a/0017-99shutdown-shutdown.sh-export-PATH.patch b/0017-99shutdown-shutdown.sh-export-PATH.patch
new file mode 100644
index 0000000..c162520
--- /dev/null
+++ b/0017-99shutdown-shutdown.sh-export-PATH.patch
@@ -0,0 +1,26 @@
+From a62a521510d3278aa8794a9d90b09b9325ab1ae1 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald at redhat.com>
+Date: Wed, 18 Apr 2012 13:08:12 +0200
+Subject: [PATCH] 99shutdown/shutdown.sh: export PATH
+
+---
+ modules.d/99shutdown/shutdown.sh | 5 ++---
+ 1 file changed, 2 insertions(+), 3 deletions(-)
+
+diff --git a/modules.d/99shutdown/shutdown.sh b/modules.d/99shutdown/shutdown.sh
+index 45345a4..aa0a81f 100755
+--- a/modules.d/99shutdown/shutdown.sh
++++ b/modules.d/99shutdown/shutdown.sh
+@@ -7,10 +7,9 @@
+ # Copyright 2011, Red Hat, Inc.
+ # Harald Hoyer <harald at redhat.com>
+
+-#!/bin/sh
+-. /lib/dracut-lib.sh
+ export TERM=linux
+-PATH=/usr/sbin:/usr/bin:/sbin:/bin
++export PATH=/usr/sbin:/usr/bin:/sbin:/bin
++. /lib/dracut-lib.sh
+
+ trap "emergency_shell --shutdown shutdown Signal caught!" 0
+ getarg 'rd.break=pre-shutdown' && emergency_shell --shutdown pre-shutdown "Break before pre-shutdown"
diff --git a/0018-Makefile-do-not-install-systemd-service-in-reboot.patch b/0018-Makefile-do-not-install-systemd-service-in-reboot.patch
new file mode 100644
index 0000000..5259d79
--- /dev/null
+++ b/0018-Makefile-do-not-install-systemd-service-in-reboot.patch
@@ -0,0 +1,26 @@
+From 619a2ff48d400dc4fda0034ea30d6d2add903c55 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald at redhat.com>
+Date: Wed, 18 Apr 2012 13:14:55 +0200
+Subject: [PATCH] Makefile: do not install systemd service in reboot
+
+shutdown is enough. It is pulled in on reboot.
+---
+ Makefile | 3 ---
+ 1 file changed, 3 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index c62aae1..5ce1778 100644
+--- a/Makefile
++++ b/Makefile
+@@ -57,11 +57,8 @@ install: doc
+ if [ -n "$(systemdsystemunitdir)" ]; then \
+ mkdir -p $(DESTDIR)$(systemdsystemunitdir); \
+ install -m 0644 dracut-shutdown.service $(DESTDIR)$(systemdsystemunitdir); \
+- mkdir -p $(DESTDIR)$(systemdsystemunitdir)/reboot.target.wants; \
+ mkdir -p $(DESTDIR)$(systemdsystemunitdir)/shutdown.target.wants; \
+ ln -s ../dracut-shutdown.service \
+- $(DESTDIR)$(systemdsystemunitdir)/reboot.target.wants/dracut-shutdown.service; \
+- ln -s ../dracut-shutdown.service \
+ $(DESTDIR)$(systemdsystemunitdir)/shutdown.target.wants/dracut-shutdown.service; \
+ fi
+
diff --git a/0019-network-module-setup.sh-include-all-kernel-drivers-n.patch b/0019-network-module-setup.sh-include-all-kernel-drivers-n.patch
new file mode 100644
index 0000000..c011821
--- /dev/null
+++ b/0019-network-module-setup.sh-include-all-kernel-drivers-n.patch
@@ -0,0 +1,22 @@
+From 2683d0e4651f3c83c8d3d8636cb573345e32398b Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald at redhat.com>
+Date: Wed, 18 Apr 2012 13:49:48 +0200
+Subject: [PATCH] network/module-setup.sh: include all kernel/drivers/net/phy
+ drivers
+
+---
+ 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 97fc5cb..253a87e 100755
+--- a/modules.d/40network/module-setup.sh
++++ b/modules.d/40network/module-setup.sh
+@@ -61,6 +61,7 @@ installkernel() {
+ { find_kernel_modules_by_path drivers/net; find_kernel_modules_by_path drivers/s390/net; } \
+ | net_module_filter | instmods
+
++ instmods =drivers/net/phy
+ instmods ecb arc4
+ # bridge modules
+ instmods bridge stp llc
diff --git a/0020-add-pre-pivot-cleanup-hook.patch b/0020-add-pre-pivot-cleanup-hook.patch
new file mode 100644
index 0000000..e686e23
--- /dev/null
+++ b/0020-add-pre-pivot-cleanup-hook.patch
@@ -0,0 +1,105 @@
+From 3d474e40662d2d8caed0cef3555bb72dc04d2b35 Mon Sep 17 00:00:00 2001
+From: Dave Young <dyoung at redhat.com>
+Date: Thu, 19 Apr 2012 12:01:36 +0800
+Subject: [PATCH] add pre-pivot-cleanup hook
+
+Sometimes some hook script will need to be before the cleanup hook scripts
+For example dhclient killing, nfs cleanup, etc. must not happen before kdump
+because it will use their fuctionalities.
+
+So here introduce a new hook pre-pivot-cleanup, all cleanup scripts will go there.
+that means pre-pivot hook is splited to two hooks pre-pivot and pre-pivot-cleanup
+
+Signed-off-by: Dave Young <dyoung at redhat.com>
+---
+ README.modules | 3 +++
+ dracut-functions.sh | 2 +-
+ dracut.asc | 7 ++++++-
+ dracut.cmdline.7.asc | 2 +-
+ modules.d/99base/init.sh | 7 ++++++-
+ 5 files changed, 17 insertions(+), 4 deletions(-)
+
+diff --git a/README.modules b/README.modules
+index 21461de..188d011 100644
+--- a/README.modules
++++ b/README.modules
+@@ -103,6 +103,9 @@ init has the following hook points to inject scripts:
+ a timeout.
+
+ /lib/dracut/hooks/pre-pivot/*.sh
++ scripts to run before latter initramfs cleanups
++
++/lib/dracut/hooks/pre-pivot-cleanup/*.sh
+ scripts to run before the real init is executed and the initramfs
+ disappears
+ All processes started before should be killed here.
+diff --git a/dracut-functions.sh b/dracut-functions.sh
+index f5611dc..ccf3ba6 100755
+--- a/dracut-functions.sh
++++ b/dracut-functions.sh
+@@ -36,7 +36,7 @@ fi
+ [[ $hookdirs ]] || {
+ hookdirs="cmdline pre-udev pre-trigger netroot "
+ hookdirs+="initqueue initqueue/settled initqueue/online initqueue/finished initqueue/timeout "
+- hookdirs+="pre-mount pre-pivot mount "
++ hookdirs+="pre-mount pre-pivot pre-pivot-cleanup mount "
+ hookdirs+="emergency shutdown-emergency shutdown cleanup "
+ export hookdirs
+ }
+diff --git a/dracut.asc b/dracut.asc
+index 1a0e3d2..9621db2 100644
+--- a/dracut.asc
++++ b/dracut.asc
+@@ -854,12 +854,17 @@ This hook is mainly to mount the real root device.
+
+ === Hook: pre-pivot
+
++This hook is called before pre-pivot-cleanup hook, This is a good place for
++actions other than cleanups which need to be called before pivot.
++
++
++=== Hook: pre-pivot-cleanup
++
+ This hook is the last hook and is called before init finally switches root to
+ the real root device. This is a good place to clean up and kill processes not
+ needed anymore.
+
+
+-
+ === Cleanup and switch_root
+
+ Init kills all udev processes, cleans up the environment, sets up the arguments
+diff --git a/dracut.cmdline.7.asc b/dracut.cmdline.7.asc
+index c77fee5..76db651 100644
+--- a/dracut.cmdline.7.asc
++++ b/dracut.cmdline.7.asc
+@@ -105,7 +105,7 @@ Debug
+ **rd.break**::
+ drop to a shell at the end
+
+-**rd.break=**_{cmdline|pre-udev|pre-trigger|initqueue|pre-mount|mount|pre-pivot}_::
++**rd.break=**_{cmdline|pre-udev|pre-trigger|initqueue|pre-mount|mount|pre-pivot|pre-pivot-cleanup}_::
+ drop to a shell on defined breakpoint
+
+ **rd.udev.info**::
+diff --git a/modules.d/99base/init.sh b/modules.d/99base/init.sh
+index b5adcad..544bbb0 100755
+--- a/modules.d/99base/init.sh
++++ b/modules.d/99base/init.sh
+@@ -224,10 +224,15 @@ done
+ while read dev mp rest; do [ "$mp" = "$NEWROOT" ] && echo $dev; done < /proc/mounts
+ } | vinfo
+
+-# pre pivot scripts are sourced just before we switch over to the new root.
++# 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"
+ source_hook pre-pivot
+
++# pre pivot cleanup scripts are sourced just before we switch over to the new root.
++getarg 'rd.break=pre-pivot-cleanup' 'rdbreak=pre-pivot-cleanup' && emergency_shell -n pre-pivot-cleanup "Break pre-pivot-cleanup"
++source_hook pre-pivot-cleanup
++
+ # By the time we get here, the root filesystem should be mounted.
+ # Try to find init.
+ for i in "$(getarg real_init=)" "$(getarg init=)" $(getargs rd.distroinit=) /sbin/init; do
diff --git a/0021-move-cleanup-scripts-to-pre-pivot-cleanup-hook.patch b/0021-move-cleanup-scripts-to-pre-pivot-cleanup-hook.patch
new file mode 100644
index 0000000..33c0294
--- /dev/null
+++ b/0021-move-cleanup-scripts-to-pre-pivot-cleanup-hook.patch
@@ -0,0 +1,86 @@
+From 337ae7414751ce995e06321e23bd322c955d0a67 Mon Sep 17 00:00:00 2001
+From: Dave Young <dyoung at redhat.com>
+Date: Thu, 19 Apr 2012 12:01:43 +0800
+Subject: [PATCH] move cleanup scripts to pre-pivot-cleanup hook
+
+below cleanup scripts is moved:
+40network: kill-dhclient.sh
+90crypt: crypt-cleanup.sh
+90multipath: multipathd-stop.sh
+95iscsi: cleanup-iscsi.sh
+95nfs: nfsroot-cleanup.sh
+
+Signed-off-by: Dave Young <dyoung at redhat.com>
+---
+ modules.d/40network/module-setup.sh | 2 +-
+ modules.d/90crypt/module-setup.sh | 2 +-
+ modules.d/90multipath/module-setup.sh | 2 +-
+ modules.d/95iscsi/module-setup.sh | 2 +-
+ modules.d/95nfs/module-setup.sh | 2 +-
+ 5 files changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/modules.d/40network/module-setup.sh b/modules.d/40network/module-setup.sh
+index 253a87e..c2ad815 100755
+--- a/modules.d/40network/module-setup.sh
++++ b/modules.d/40network/module-setup.sh
+@@ -86,7 +86,7 @@ install() {
+ inst_hook cmdline 97 "$moddir/parse-bridge.sh"
+ inst_hook cmdline 98 "$moddir/parse-ip-opts.sh"
+ inst_hook cmdline 99 "$moddir/parse-ifname.sh"
+- inst_hook pre-pivot 10 "$moddir/kill-dhclient.sh"
++ inst_hook pre-pivot-cleanup 10 "$moddir/kill-dhclient.sh"
+
+ _arch=$(uname -m)
+
+diff --git a/modules.d/90crypt/module-setup.sh b/modules.d/90crypt/module-setup.sh
+index 8fdf32b..4a66516 100755
+--- a/modules.d/90crypt/module-setup.sh
++++ b/modules.d/90crypt/module-setup.sh
+@@ -48,7 +48,7 @@ install() {
+ inst "$moddir"/probe-keydev.sh /sbin/probe-keydev
+ inst_hook cmdline 10 "$moddir/parse-keydev.sh"
+ inst_hook cmdline 30 "$moddir/parse-crypt.sh"
+- inst_hook pre-pivot 30 "$moddir/crypt-cleanup.sh"
++ inst_hook pre-pivot-cleanup 30 "$moddir/crypt-cleanup.sh"
+ inst_simple /etc/crypttab
+ inst "$moddir/crypt-lib.sh" "/lib/dracut-crypt-lib.sh"
+ }
+diff --git a/modules.d/90multipath/module-setup.sh b/modules.d/90multipath/module-setup.sh
+index 8a193c4..f044f33 100755
+--- a/modules.d/90multipath/module-setup.sh
++++ b/modules.d/90multipath/module-setup.sh
+@@ -70,7 +70,7 @@ install() {
+ inst_libdir_file "multipath/*"
+
+ inst_hook pre-trigger 02 "$moddir/multipathd.sh"
+- inst_hook pre-pivot 02 "$moddir/multipathd-stop.sh"
++ inst_hook pre-pivot-cleanup 02 "$moddir/multipathd-stop.sh"
+ inst_rules 40-multipath.rules
+ }
+
+diff --git a/modules.d/95iscsi/module-setup.sh b/modules.d/95iscsi/module-setup.sh
+index b6c1c1f..a001a28 100755
+--- a/modules.d/95iscsi/module-setup.sh
++++ b/modules.d/95iscsi/module-setup.sh
+@@ -63,7 +63,7 @@ install() {
+ inst hostname
+ inst iscsi-iname
+ inst_hook cmdline 90 "$moddir/parse-iscsiroot.sh"
+- inst_hook pre-pivot 90 "$moddir/cleanup-iscsi.sh"
++ inst_hook pre-pivot-cleanup 90 "$moddir/cleanup-iscsi.sh"
+ inst "$moddir/iscsiroot.sh" "/sbin/iscsiroot"
+ inst "$moddir/mount-lun.sh" "/bin/mount-lun.sh"
+ }
+diff --git a/modules.d/95nfs/module-setup.sh b/modules.d/95nfs/module-setup.sh
+index 455f52f..3587bdd 100755
+--- a/modules.d/95nfs/module-setup.sh
++++ b/modules.d/95nfs/module-setup.sh
+@@ -58,7 +58,7 @@ install() {
+
+ inst_hook cmdline 90 "$moddir/parse-nfsroot.sh"
+ inst_hook pre-udev 99 "$moddir/nfs-start-rpc.sh"
+- inst_hook pre-pivot 99 "$moddir/nfsroot-cleanup.sh"
++ inst_hook pre-pivot-cleanup 99 "$moddir/nfsroot-cleanup.sh"
+ inst "$moddir/nfsroot.sh" "/sbin/nfsroot"
+ inst "$moddir/nfs-lib.sh" "/lib/nfs-lib.sh"
+ mkdir -m 0755 -p "$initdir/var/lib/nfs/rpc_pipefs"
diff --git a/0022-network-parse-ip-opts.sh-remove-check-for-netroot.patch b/0022-network-parse-ip-opts.sh-remove-check-for-netroot.patch
new file mode 100644
index 0000000..88aefc3
--- /dev/null
+++ b/0022-network-parse-ip-opts.sh-remove-check-for-netroot.patch
@@ -0,0 +1,30 @@
+From 7af99168387dd3fec3408835b40bd84a9b191271 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald at redhat.com>
+Date: Thu, 19 Apr 2012 16:41:04 +0200
+Subject: [PATCH] network/parse-ip-opts.sh: remove check for netroot
+
+with anaconda and all other kind of stuff, we might want network, even
+for root not on the network
+---
+ modules.d/40network/parse-ip-opts.sh | 8 --------
+ 1 file changed, 8 deletions(-)
+
+diff --git a/modules.d/40network/parse-ip-opts.sh b/modules.d/40network/parse-ip-opts.sh
+index 97702a2..5637a9a 100755
+--- a/modules.d/40network/parse-ip-opts.sh
++++ b/modules.d/40network/parse-ip-opts.sh
+@@ -17,14 +17,6 @@
+ command -v getarg >/dev/null || . /lib/dracut-lib.sh
+ command -v ibft_to_cmdline >/dev/null || . /lib/net-lib.sh
+
+-# Check if ip= lines should be used
+-if getarg ip= >/dev/null ; then
+- if [ -z "$netroot" ] ; then
+- echo "Warning: No netboot configured, ignoring ip= lines"
+- return;
+- fi
+-fi
+-
+ # Don't mix BOOTIF=macaddr from pxelinux and ip= lines
+ getarg ip= >/dev/null && getarg BOOTIF= >/dev/null && \
+ die "Mixing BOOTIF and ip= lines is dangerous"
diff --git a/0023-ifcfg-write-DNS1-.-for-nameserver-args-RHBZ-815369.patch b/0023-ifcfg-write-DNS1-.-for-nameserver-args-RHBZ-815369.patch
new file mode 100644
index 0000000..e803f06
--- /dev/null
+++ b/0023-ifcfg-write-DNS1-.-for-nameserver-args-RHBZ-815369.patch
@@ -0,0 +1,31 @@
+From 1d506b0319ef69d605d4bce0082b982f8a2f877c Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald at redhat.com>
+Date: Tue, 24 Apr 2012 13:08:57 +0200
+Subject: [PATCH] ifcfg: write DNS1=... for nameserver= args (RHBZ#815369)
+
+If you're using a static network config, you'll want to keep your
+nameservers around when NM starts. Write DNS1 (and DNS2, DNS3, etc..)
+into the ifcfg file.
+
+Thanks to Mark Hamzy <hamzy at us.ibm.com>
+and Will Woods <wwoods at redhat.com> for the patch.
+---
+ modules.d/45ifcfg/write-ifcfg.sh | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/modules.d/45ifcfg/write-ifcfg.sh b/modules.d/45ifcfg/write-ifcfg.sh
+index c072a13..b81ac39 100755
+--- a/modules.d/45ifcfg/write-ifcfg.sh
++++ b/modules.d/45ifcfg/write-ifcfg.sh
+@@ -138,6 +138,11 @@ for netif in $IFACES ; do
+ } >> /tmp/ifcfg/ifcfg-$ethname
+ fi
+ fi
++ i=1
++ for ns in $(getargs nameserver); do
++ echo "DNS${i}=${ns}" >> /tmp/ifcfg/ifcfg-$netif
++ i=$((i+1))
++ done
+ done
+
+ # Pass network opts
diff --git a/0024-url-lib-don-t-add-existing-handlers-multiple-times.patch b/0024-url-lib-don-t-add-existing-handlers-multiple-times.patch
new file mode 100644
index 0000000..4bda97a
--- /dev/null
+++ b/0024-url-lib-don-t-add-existing-handlers-multiple-times.patch
@@ -0,0 +1,27 @@
+From 3a64317d8e42892ec1035d0610e95ce77e8c2791 Mon Sep 17 00:00:00 2001
+From: Will Woods <wwoods at redhat.com>
+Date: Fri, 20 Apr 2012 16:20:24 -0400
+Subject: [PATCH] url-lib: don't add existing handlers multiple times
+
+Every time url-lib gets imported we end up making the list of handlers
+longer with redundant entries. That's silly - we shouldn't add items
+that already exist.
+
+Note that this means you'll have to manipulate the handler list yourself
+if you want to change the position/priority of existing handlers.
+---
+ modules.d/45url-lib/url-lib.sh | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/modules.d/45url-lib/url-lib.sh b/modules.d/45url-lib/url-lib.sh
+index e305a68..7930146 100755
+--- a/modules.d/45url-lib/url-lib.sh
++++ b/modules.d/45url-lib/url-lib.sh
+@@ -43,6 +43,7 @@ add_url_handler() {
+ local schemes="$@" scheme=""
+ set --
+ for scheme in $schemes; do
++ [ "$(get_url_handler $scheme)" = "$handler" ] && continue
+ set -- "$@" "$scheme:$handler"
+ done
+ set -- $@ $url_handler_map # add new items to *front* of list
diff --git a/0025-url-lib-don-t-use-progress-bar-if-TERM-dumb-RHBZ-814.patch b/0025-url-lib-don-t-use-progress-bar-if-TERM-dumb-RHBZ-814.patch
new file mode 100644
index 0000000..3c5ddef
--- /dev/null
+++ b/0025-url-lib-don-t-use-progress-bar-if-TERM-dumb-RHBZ-814.patch
@@ -0,0 +1,34 @@
+From ad619415d6d14d539fe5268b491e0c2963836d64 Mon Sep 17 00:00:00 2001
+From: Will Woods <wwoods at redhat.com>
+Date: Fri, 20 Apr 2012 16:20:25 -0400
+Subject: [PATCH] url-lib: don't use --progress-bar if TERM=dumb (RHBZ#814713)
+
+Basically, s390 is the only place I've ever seen TERM=dumb, and it's too
+dumb to handle '\r', so --progress-bar produces waaaaay too much output.
+
+The normal progress meter only prints something once per second, so
+that's reasonable on terminals where '\r' doesn't work.
+
+See also: https://bugzilla.redhat.com/show_bug.cgi?id=814713
+---
+ modules.d/45url-lib/url-lib.sh | 7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+diff --git a/modules.d/45url-lib/url-lib.sh b/modules.d/45url-lib/url-lib.sh
+index 7930146..5721294 100755
+--- a/modules.d/45url-lib/url-lib.sh
++++ b/modules.d/45url-lib/url-lib.sh
+@@ -54,7 +54,12 @@ add_url_handler() {
+
+ export CURL_HOME="/run/initramfs/url-lib"
+ mkdir -p $CURL_HOME
+-curl_args="--location --retry 3 --fail --show-error --progress-bar"
++curl_args="--location --retry 3 --fail --show-error"
++
++# technically "dumb" can handle the progress bar, but the only thing I've ever
++# seen using TERM=dumb is s390 CMS, and it's too dumb for --progress-bar
++[ "$TERM" != "dumb" ] && curl_args="$curl_args --progress-bar"
++
+ curl_fetch_url() {
+ local url="$1" outloc="$2"
+ echo "$url" > /proc/self/fd/0
diff --git a/0026-iscsi-module-setup.sh-fix-host-only-mount-checks.patch b/0026-iscsi-module-setup.sh-fix-host-only-mount-checks.patch
new file mode 100644
index 0000000..e6a67e5
--- /dev/null
+++ b/0026-iscsi-module-setup.sh-fix-host-only-mount-checks.patch
@@ -0,0 +1,43 @@
+From 8c61158c363e22ac19f33286c26d42db774607fd Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald at redhat.com>
+Date: Wed, 25 Apr 2012 11:23:10 +0200
+Subject: [PATCH] iscsi/module-setup.sh: fix host-only/mount checks
+
+---
+ modules.d/95iscsi/module-setup.sh | 16 ++++++----------
+ 1 file changed, 6 insertions(+), 10 deletions(-)
+
+diff --git a/modules.d/95iscsi/module-setup.sh b/modules.d/95iscsi/module-setup.sh
+index a001a28..25a3cfa 100755
+--- a/modules.d/95iscsi/module-setup.sh
++++ b/modules.d/95iscsi/module-setup.sh
+@@ -15,8 +15,11 @@ check() {
+ [[ $debug ]] && set -x
+
+ is_iscsi() (
+- [[ -L /sys/dev/block/$1 ]] || return
+- cd "$(readlink -f /sys/dev/block/$1)"
++ local _dev
++ _dev=$(get_maj_min $1)
++
++ [[ -L /sys/dev/block/$_dev ]] || return
++ cd "$(readlink -f /sys/dev/block/$_dev)"
+ until [[ -d sys || -d iscsi_session ]]; do
+ cd ..
+ done
+@@ -24,14 +27,7 @@ check() {
+ )
+
+ [[ $hostonly ]] || [[ $mount_needs ]] && {
+- _rootdev=$(find_root_block_device)
+- if [[ $_rootdev ]]; then
+- # root lives on a block device, so we can be more precise about
+- # hostonly checking
+- check_block_and_slaves is_iscsi "$_rootdev" || return 1
+- else
+- return 1
+- fi
++ for_each_host_dev_fs is_iscsi || return 1
+ }
+ return 0
+ }
diff --git a/0027-multipath-module-setup.sh-fix-host-only-mount-checks.patch b/0027-multipath-module-setup.sh-fix-host-only-mount-checks.patch
new file mode 100644
index 0000000..65962c1
--- /dev/null
+++ b/0027-multipath-module-setup.sh-fix-host-only-mount-checks.patch
@@ -0,0 +1,39 @@
+From c18772705e0d25c8af56c04fa098ec01f56ee4aa Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald at redhat.com>
+Date: Wed, 25 Apr 2012 11:23:49 +0200
+Subject: [PATCH] multipath/module-setup.sh: fix host-only/mount checks
+
+---
+ modules.d/90multipath/module-setup.sh | 16 +++++++---------
+ 1 file changed, 7 insertions(+), 9 deletions(-)
+
+diff --git a/modules.d/90multipath/module-setup.sh b/modules.d/90multipath/module-setup.sh
+index f044f33..2f6b416 100755
+--- a/modules.d/90multipath/module-setup.sh
++++ b/modules.d/90multipath/module-setup.sh
+@@ -11,18 +11,16 @@ check() {
+ [[ $debug ]] && set -x
+
+ is_mpath() {
+- [ -e /sys/dev/block/$1/dm/uuid ] || return 1
+- [[ $(cat /sys/dev/block/$1/dm/uuid) =~ ^mpath- ]] && return 0
++ 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
+ return 1
+ }
+
+- if [[ $hostonly ]]; then
+- _rootdev=$(find_root_block_device)
+- if [[ $_rootdev ]]; then
+- check_block_and_slaves is_mpath "$_rootdev" && return 0
+- fi
+- return 1
+- fi
++ [[ $hostonly ]] || [[ $mount_needs ]] && {
++ for_each_host_dev_fs is_mpath || return 1
++ }
+
+ return 0
+ }
diff --git a/0028-fix-_getcmdline-arg-duplicating-bug-with-etc-cmdline.patch b/0028-fix-_getcmdline-arg-duplicating-bug-with-etc-cmdline.patch
new file mode 100644
index 0000000..30ffee1
--- /dev/null
+++ b/0028-fix-_getcmdline-arg-duplicating-bug-with-etc-cmdline.patch
@@ -0,0 +1,29 @@
+From c870ae09ec04b5da48c4d2b2802dd6eba468e8ed Mon Sep 17 00:00:00 2001
+From: Will Woods <wwoods at redhat.com>
+Date: Tue, 1 May 2012 14:08:33 -0400
+Subject: [PATCH] fix _getcmdline arg-duplicating bug with /etc/cmdline*
+
+If you unset CMDLINE to make _getcmdline re-read /etc/cmdline and
+/etc/cmdline.d/*, CMDLINE_ETC and CMDLINE_ETC_D would keep their
+contents.
+
+This is a serious problem if you have (e.g.) "ip=eth0:dhcp" in
+/etc/cmdline.d/net.conf, because getargs ip= will return
+"ip=eth0:dhcp ip=eth0:dhcp" and then parse-ip-opts.sh will die() because
+you have two configurations for eth0.
+---
+ modules.d/99base/dracut-lib.sh | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/modules.d/99base/dracut-lib.sh b/modules.d/99base/dracut-lib.sh
+index a29d586..4f2b8cd 100755
+--- a/modules.d/99base/dracut-lib.sh
++++ b/modules.d/99base/dracut-lib.sh
+@@ -40,6 +40,7 @@ _getcmdline() {
+ local _i
+ unset _line
+ if [ -z "$CMDLINE" ]; then
++ unset CMDLINE_ETC CMDLINE_ETC_D
+ if [ -e /etc/cmdline ]; then
+ while read -r _line; do
+ CMDLINE_ETC="$CMDLINE_ETC $_line";
diff --git a/0029-ifcfg-fix-resolv.conf.patch b/0029-ifcfg-fix-resolv.conf.patch
new file mode 100644
index 0000000..40a9e09
--- /dev/null
+++ b/0029-ifcfg-fix-resolv.conf.patch
@@ -0,0 +1,23 @@
+From 2336f7d9e7ff572d3335bb6c42fa2ac224edd64b Mon Sep 17 00:00:00 2001
+From: Will Woods <wwoods at redhat.com>
+Date: Tue, 1 May 2012 14:08:34 -0400
+Subject: [PATCH] ifcfg: fix resolv.conf
+
+/etc/net.*.resolv.conf is not a useful filename; copy it to resolv.conf
+---
+ modules.d/45ifcfg/write-ifcfg.sh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/modules.d/45ifcfg/write-ifcfg.sh b/modules.d/45ifcfg/write-ifcfg.sh
+index b81ac39..f612762 100755
+--- a/modules.d/45ifcfg/write-ifcfg.sh
++++ b/modules.d/45ifcfg/write-ifcfg.sh
+@@ -152,7 +152,7 @@ echo "files /etc/sysconfig/network-scripts" >> /run/initramfs/rwtab
+ echo "files /var/lib/dhclient" >> /run/initramfs/rwtab
+ {
+ cp /tmp/net.* /run/initramfs/
+- cp /tmp/net.$netif.resolv.conf /run/initramfs/state/etc/
++ cp /tmp/net.$netif.resolv.conf /run/initramfs/state/etc/resolv.conf
+ cp -a -t /run/initramfs/state/etc/sysconfig/network-scripts/ /tmp/ifcfg/*
+ cp /tmp/ifcfg-leases/* /run/initramfs/state/var/lib/dhclient
+ } > /dev/null 2>&1
diff --git a/0030-TEST-15-BTRFSRAID-add-one-more-partition-to-the-btrf.patch b/0030-TEST-15-BTRFSRAID-add-one-more-partition-to-the-btrf.patch
new file mode 100644
index 0000000..d5ef402
--- /dev/null
+++ b/0030-TEST-15-BTRFSRAID-add-one-more-partition-to-the-btrf.patch
@@ -0,0 +1,55 @@
+From 4fdeb5a7013e502a084dea1b0ac928259bb2e13e Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald at redhat.com>
+Date: Wed, 25 Apr 2012 14:23:12 +0200
+Subject: [PATCH] TEST-15-BTRFSRAID: add one more partition to the btrfs
+ raid10
+
+---
+ test/TEST-15-BTRFSRAID/create-root.sh | 12 +++++++++---
+ test/TEST-15-BTRFSRAID/test.sh | 2 +-
+ 2 files changed, 10 insertions(+), 4 deletions(-)
+
+diff --git a/test/TEST-15-BTRFSRAID/create-root.sh b/test/TEST-15-BTRFSRAID/create-root.sh
+index 60dd319..3debf33 100755
+--- a/test/TEST-15-BTRFSRAID/create-root.sh
++++ b/test/TEST-15-BTRFSRAID/create-root.sh
+@@ -5,17 +5,23 @@ for x in 64-lvm.rules 70-mdadm.rules 99-mount-rules; do
+ done
+ udevadm control --reload-rules
+ # save a partition at the beginning for future flagging purposes
+-sfdisk -C 524288 -H 2 -S 32 -L /dev/sda <<EOF
++sfdisk -C 655600 -H 2 -S 32 -L /dev/sda <<EOF
+ ,16
++,,E
++;
++;
++,10240
+ ,10240
+ ,10240
+ ,10240
+ EOF
+-mkfs.btrfs -mraid10 -L root /dev/sda2 /dev/sda3 /dev/sda4
++mkfs.btrfs -draid10 -mraid10 -L root /dev/sda5 /dev/sda6 /dev/sda7 /dev/sda8
++udevadm settle
+ btrfs device scan
++udevadm settle
+ set -e
+ mkdir -p /sysroot
+-mount /dev/sda4 /sysroot
++mount -t btrfs /dev/sda8 /sysroot
+ cp -a -t /sysroot /source/*
+ umount /sysroot
+ echo "dracut-root-block-created" >/dev/sda1
+diff --git a/test/TEST-15-BTRFSRAID/test.sh b/test/TEST-15-BTRFSRAID/test.sh
+index f64b2b2..b65e77a 100755
+--- a/test/TEST-15-BTRFSRAID/test.sh
++++ b/test/TEST-15-BTRFSRAID/test.sh
+@@ -20,7 +20,7 @@ test_setup() {
+ # Create the blank file to use as a root filesystem
+ DISKIMAGE=$TESTDIR/TEST-15-BTRFSRAID-root.img
+ rm -f $DISKIMAGE
+- dd if=/dev/null of=$DISKIMAGE bs=1M seek=1024
++ dd if=/dev/null of=$DISKIMAGE bs=2M seek=1024
+
+ kernel=$KVERSION
+ # Create what will eventually be our root filesystem onto an overlay
diff --git a/0031-ifcfg-write-ifcfg.sh-use-PREFIX-for-prefix-netmask-f.patch b/0031-ifcfg-write-ifcfg.sh-use-PREFIX-for-prefix-netmask-f.patch
new file mode 100644
index 0000000..76f0b84
--- /dev/null
+++ b/0031-ifcfg-write-ifcfg.sh-use-PREFIX-for-prefix-netmask-f.patch
@@ -0,0 +1,27 @@
+From 4a20cb93475a3c9cc299999eb9e351ee860aab20 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald at redhat.com>
+Date: Wed, 9 May 2012 14:58:52 +0200
+Subject: [PATCH] ifcfg/write-ifcfg.sh: use PREFIX for prefix netmask form
+
+https://bugzilla.redhat.com/show_bug.cgi?id=820185
+---
+ modules.d/45ifcfg/write-ifcfg.sh | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/modules.d/45ifcfg/write-ifcfg.sh b/modules.d/45ifcfg/write-ifcfg.sh
+index f612762..580fbd4 100755
+--- a/modules.d/45ifcfg/write-ifcfg.sh
++++ b/modules.d/45ifcfg/write-ifcfg.sh
+@@ -50,7 +50,11 @@ for netif in $IFACES ; do
+ # If we've booted with static ip= lines, the override file is there
+ [ -e /tmp/net.$netif.override ] && . /tmp/net.$netif.override
+ echo "IPADDR=$ip"
+- echo "NETMASK=$mask"
++ if strstr "$mask" "."; then
++ echo "NETMASK=$mask"
++ else
++ echo "PREFIX=$mask"
++ fi
+ [ -n "$gw" ] && echo "GATEWAY=$gw"
+ fi
+ } > /tmp/ifcfg/ifcfg-$netif
diff --git a/0032-Fail-to-boot-if-mediacheck-fails-817419.patch b/0032-Fail-to-boot-if-mediacheck-fails-817419.patch
new file mode 100644
index 0000000..e50e0ba
--- /dev/null
+++ b/0032-Fail-to-boot-if-mediacheck-fails-817419.patch
@@ -0,0 +1,23 @@
+From 8d0a0dca62505343a94c6cef86f85ea6aa7c3ded Mon Sep 17 00:00:00 2001
+From: "Brian C. Lane" <bcl at redhat.com>
+Date: Wed, 9 May 2012 11:15:03 -0700
+Subject: [PATCH] Fail to boot if mediacheck fails (#817419)
+
+The return value of checkisomd5 was being ignored.
+---
+ modules.d/90dmsquash-live/dmsquash-live-root.sh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/modules.d/90dmsquash-live/dmsquash-live-root.sh b/modules.d/90dmsquash-live/dmsquash-live-root.sh
+index 2aaec28..fdbd6f5 100755
+--- a/modules.d/90dmsquash-live/dmsquash-live-root.sh
++++ b/modules.d/90dmsquash-live/dmsquash-live-root.sh
+@@ -33,7 +33,7 @@ fi
+ getarg rd.live.check check || check=""
+ if [ -n "$check" ]; then
+ [ -x /bin/plymouth ] && /bin/plymouth --hide-splash
+- checkisomd5 --verbose $livedev || :
++ checkisomd5 --verbose $livedev
+ if [ $? -ne 0 ]; then
+ die "CD check failed!"
+ exit 1
diff --git a/0033-ifcfg-write-ifcfg.sh-add-s390-specific-configuration.patch b/0033-ifcfg-write-ifcfg.sh-add-s390-specific-configuration.patch
new file mode 100644
index 0000000..b1198ee
--- /dev/null
+++ b/0033-ifcfg-write-ifcfg.sh-add-s390-specific-configuration.patch
@@ -0,0 +1,106 @@
+From ffc23d361fd937487cc817d7b2f4fc456f1b639c Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald at redhat.com>
+Date: Thu, 10 May 2012 14:31:05 +0200
+Subject: [PATCH] ifcfg/write-ifcfg.sh: add s390 specific configuration
+ options
+
+https://bugzilla.redhat.com/show_bug.cgi?id=811521
+---
+ modules.d/45ifcfg/write-ifcfg.sh | 70 ++++++++++++++++++++++++++++++++++++--
+ 1 file changed, 68 insertions(+), 2 deletions(-)
+
+diff --git a/modules.d/45ifcfg/write-ifcfg.sh b/modules.d/45ifcfg/write-ifcfg.sh
+index 580fbd4..d1f6fe6 100755
+--- a/modules.d/45ifcfg/write-ifcfg.sh
++++ b/modules.d/45ifcfg/write-ifcfg.sh
+@@ -20,6 +20,68 @@ fi
+ mkdir -m 0755 -p /tmp/ifcfg/
+ mkdir -m 0755 -p /tmp/ifcfg-leases/
+
++get_config_line_by_subchannel()
++{
++ local CHANNEL
++ local line
++
++ CHANNELS="$1"
++ while read line; do
++ if strstr "$line" "$CHANNELS"; then
++ echo $line
++ return 0
++ fi
++ done < /etc/ccw.conf
++ return 1
++}
++
++print_s390() {
++ local _netif
++ local SUBCHANNELS
++ local OPTIONS
++ local NETTYPE
++ local CONFIG_LINE
++ local i
++ local channel
++
++ _netif="$1"
++ # if we find ccw channel, then use those, instead of
++ # of the MAC
++ SUBCHANNELS=$({
++ for i in /sys/class/net/$_netif/device/cdev[0-9]*; do
++ [ -e $i ] || continue
++ channel=$(readlink -f $i)
++ echo -n "${channel##*/},"
++ done
++ })
++ [ -n "$SUBCHANNELS" ] || return 1
++
++ SUBCHANNELS=${SUBCHANNELS%,}
++ echo "SUBCHANNELS=\"${SUBCHANNELS}\""
++ CONFIG_LINE=$(get_config_line_by_subchannel $SUBCHANNELS)
++
++ [ $? -ne 0 -o -z "$CONFIG_LINE" ] && return
++
++ IFS=","
++ set $CONFIG_LINE
++ IFS="$OLD_IFS"
++ NETTYPE=$1
++ shift
++ SUBCHANNELS="$1"
++ OPTIONS=""
++ shift
++ while [ $# -gt 0 ]; do
++ case $1 in
++ *=*) OPTIONS="$OPTIONS $1";;
++ esac
++ shift
++ done
++ OPTIONS=${OPTIONS## }
++ echo "NETTYPE=\"${NETTYPE}\""
++ echo "OPTIONS=\"${OPTIONS}\""
++}
++
++
+ for netif in $IFACES ; do
+ # bridge?
+ unset bridge
+@@ -38,7 +100,6 @@ for netif in $IFACES ; do
+ echo "ONBOOT=yes"
+ echo "NETBOOT=yes"
+ echo "UUID=$uuid"
+- [ -n "$macaddr" ] && echo "MACADDR=$macaddr"
+ [ -n "$mtu" ] && echo "MTU=$mtu"
+ if [ -f /tmp/net.$netif.lease ]; then
+ strstr "$ip" '*:*:*' &&
+@@ -63,7 +124,12 @@ for netif in $IFACES ; do
+ if [ -z "$bridge" ] && [ -z "$bond" ]; then
+ # standard interface
+ {
+- echo "HWADDR=$(cat /sys/class/net/$netif/address)"
++ if [ -n "$macaddr" ]; then
++ echo "MACADDR=$macaddr"
++ else
++ echo "HWADDR=\"$(cat /sys/class/net/$netif/address)\""
++ fi
++ print_s390 $netif
+ echo "TYPE=Ethernet"
+ echo "NAME=\"Boot Disk\""
+ [ -n "$mtu" ] && echo "MTU=$mtu"
diff --git a/0034-Makefile-call-git2spec.pl-with-LANG-C.patch b/0034-Makefile-call-git2spec.pl-with-LANG-C.patch
new file mode 100644
index 0000000..ed7d521
--- /dev/null
+++ b/0034-Makefile-call-git2spec.pl-with-LANG-C.patch
@@ -0,0 +1,22 @@
+From 1db3af57db95d3f7459b7cf24e1000786aa336fa Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald at redhat.com>
+Date: Thu, 10 May 2012 14:30:31 +0200
+Subject: [PATCH] Makefile: call git2spec.pl with LANG=C
+
+---
+ Makefile | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Makefile b/Makefile
+index 5ce1778..bf51b51 100644
+--- a/Makefile
++++ b/Makefile
+@@ -87,7 +87,7 @@ dracut-$(VERSION).tar.bz2: doc
+ rpm: dracut-$(VERSION).tar.bz2
+ rpmbuild=$$(mktemp -d -t rpmbuild-dracut.XXXXXX); src=$$(pwd); \
+ cp dracut-$(VERSION).tar.bz2 "$$rpmbuild"; \
+- $$src/git2spec.pl $(VERSION) "$$rpmbuild" < dracut.spec > $$rpmbuild/dracut.spec; \
++ LANG=C $$src/git2spec.pl $(VERSION) "$$rpmbuild" < dracut.spec > $$rpmbuild/dracut.spec; \
+ (cd "$$rpmbuild"; rpmbuild --define "_topdir $$PWD" --define "_sourcedir $$PWD" \
+ --define "_specdir $$PWD" --define "_srcrpmdir $$PWD" \
+ --define "_rpmdir $$PWD" -ba dracut.spec; ) && \
diff --git a/0035-ARM-make-sure-that-we-get-the-storage-modules-into-t.patch b/0035-ARM-make-sure-that-we-get-the-storage-modules-into-t.patch
new file mode 100644
index 0000000..5199d4a
--- /dev/null
+++ b/0035-ARM-make-sure-that-we-get-the-storage-modules-into-t.patch
@@ -0,0 +1,24 @@
+From 41724edf33fe0d7bc94f82b2dce7d37211610af8 Mon Sep 17 00:00:00 2001
+From: Dennis Gilmore <dennis at ausil.us>
+Date: Thu, 17 May 2012 01:33:17 -0500
+Subject: [PATCH] ARM: make sure that we get the storage modules into the
+ initramfs
+
+---
+ modules.d/90kernel-modules/module-setup.sh | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/modules.d/90kernel-modules/module-setup.sh b/modules.d/90kernel-modules/module-setup.sh
+index 26f4784..fd8b92c 100755
+--- a/modules.d/90kernel-modules/module-setup.sh
++++ b/modules.d/90kernel-modules/module-setup.sh
+@@ -35,6 +35,9 @@ installkernel() {
+ hostonly='' instmods pcmcia firewire-ohci
+ hostonly='' instmods usb_storage sdhci sdhci-pci
+
++ # arm specific modules
++ hostonly='' instmods sdhci_esdhc_imx mmci sdhci_tegra mvsdio omap sdhci_dove ahci_platform pata_imx sata_mv
++
+ # install keyboard support
+ hostonly='' instmods atkbd i8042 usbhid hid-apple hid-sunplus hid-cherry hid-logitech hid-logitech-dj hid-microsoft ehci-hcd ohci-hcd uhci-hcd
+ # install unix socket support
diff --git a/0036-Use-the-right-argument-for-dasd-module-options.patch b/0036-Use-the-right-argument-for-dasd-module-options.patch
new file mode 100644
index 0000000..efaee90
--- /dev/null
+++ b/0036-Use-the-right-argument-for-dasd-module-options.patch
@@ -0,0 +1,42 @@
+From 3af58e59d32d6770518aee0df40d509624964662 Mon Sep 17 00:00:00 2001
+From: Jesse Keating <jkeating at redhat.com>
+Date: Tue, 15 May 2012 13:42:47 -0700
+Subject: [PATCH] Use the right argument for dasd module options
+
+The legacy argument is DASD=, and the new arguments should be the same
+as the arguments for populating dasd.conf. If multiple arguments are
+passed we can stack them by inserting a ',' between them.
+---
+ modules.d/95dasd_mod/parse-dasd-mod.sh | 18 +++++++++++++-----
+ 1 file changed, 13 insertions(+), 5 deletions(-)
+
+diff --git a/modules.d/95dasd_mod/parse-dasd-mod.sh b/modules.d/95dasd_mod/parse-dasd-mod.sh
+index b550156..d7e8664 100755
+--- a/modules.d/95dasd_mod/parse-dasd-mod.sh
++++ b/modules.d/95dasd_mod/parse-dasd-mod.sh
+@@ -1,12 +1,20 @@
+ #!/bin/sh
+ # -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
+ # ex: ts=8 sw=4 sts=4 et filetype=sh
+-[ -d /etc/modprobe.d ] || mkdir -m 0755 -p /etc/modprobe.d
++mod_args=""
++for dasd_arg in $(getargs rd.dasd= rd_DASD= DASD=); do
++ if [ -z $mod_args ]; then
++ mod_args="$dasd_arg"
++ else
++ # We've already got some thing in mod_args, add to it
++ mod_args="$mod_args,$dasd_arg"
++ fi
++done
+
+-dasd_arg=$(getarg rd.dasd_mod.dasd rd_DASD_MOD=)
+-if [ -n "$dasd_arg" ]; then
+- echo "options dasd_mod dasd=$dasd_arg" >> /etc/modprobe.d/dasd_mod.conf
++if [ ! -z $mod_args ]; then
++ [ -d /etc/modprobe.d ] || mkdir -m 0755 -p /etc/modprobe.d
++ echo "options dasd_mod dasd=$mod_args" >> /etc/modprobe.d/dasd_mod.conf
+ fi
+-unset dasd_arg
+
++unset dasd_arg
+ dasd_cio_free
diff --git a/0037-Translate-dasd-arg-contents-into-proper-dasd.conf.patch b/0037-Translate-dasd-arg-contents-into-proper-dasd.conf.patch
new file mode 100644
index 0000000..a18e083
--- /dev/null
+++ b/0037-Translate-dasd-arg-contents-into-proper-dasd.conf.patch
@@ -0,0 +1,43 @@
+From 31aac08efb2f3be4e44d8d242aeb81e34c3c21b1 Mon Sep 17 00:00:00 2001
+From: Jesse Keating <jkeating at redhat.com>
+Date: Fri, 18 May 2012 14:06:54 -0700
+Subject: [PATCH] Translate dasd arg contents into proper dasd.conf
+
+This uses a (new) s390utils utility to normalize the range we might get
+in a dasd argument and generates a properly formatted output for
+dasd.conf.
+---
+ modules.d/95dasd/module-setup.sh | 2 +-
+ modules.d/95dasd/parse-dasd.sh | 4 ++--
+ 2 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/modules.d/95dasd/module-setup.sh b/modules.d/95dasd/module-setup.sh
+index 88dfc6d..74efc7b 100755
+--- a/modules.d/95dasd/module-setup.sh
++++ b/modules.d/95dasd/module-setup.sh
+@@ -18,7 +18,7 @@ installkernel() {
+
+ install() {
+ inst_hook cmdline 30 "$moddir/parse-dasd.sh"
+- dracut_install tr dasdinfo dasdconf.sh
++ dracut_install tr dasdinfo dasdconf.sh normalize_dasd_arg
+ if [[ $hostonly ]]; then
+ inst /etc/dasd.conf
+ fi
+diff --git a/modules.d/95dasd/parse-dasd.sh b/modules.d/95dasd/parse-dasd.sh
+index 4aeecd5..b3d18fa 100755
+--- a/modules.d/95dasd/parse-dasd.sh
++++ b/modules.d/95dasd/parse-dasd.sh
+@@ -1,10 +1,10 @@
+ #!/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='); do
++for dasd_arg in $(getargs rd.dasd= rd_DASD= DASD=); do
+ (
+ IFS=","
+ set $dasd_arg
+- echo "$@" >> /etc/dasd.conf
++ echo "$@" | normalize_dasd_arg >> /etc/dasd.conf
+ )
+ done
diff --git a/0038-Normalize-dasd-argument-content-for-dasd.conf.patch b/0038-Normalize-dasd-argument-content-for-dasd.conf.patch
new file mode 100644
index 0000000..674cf5a
--- /dev/null
+++ b/0038-Normalize-dasd-argument-content-for-dasd.conf.patch
@@ -0,0 +1,38 @@
+From 8578a381ef5ba6798c40a4666fd5b0763fe4b2ea Mon Sep 17 00:00:00 2001
+From: Jesse Keating <jkeating at redhat.com>
+Date: Fri, 18 May 2012 14:50:20 -0700
+Subject: [PATCH] Normalize dasd argument content for dasd.conf
+
+Also overwrite any existing files, contents from CMSCONFFILE override
+any boot arguments.
+---
+ modules.d/80cms/cmssetup.sh | 4 ++--
+ modules.d/80cms/module-setup.sh | 2 +-
+ 2 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/modules.d/80cms/cmssetup.sh b/modules.d/80cms/cmssetup.sh
+index 6aa456c..995bfa7 100755
+--- a/modules.d/80cms/cmssetup.sh
++++ b/modules.d/80cms/cmssetup.sh
+@@ -169,8 +169,8 @@ processcmsfile()
+ fi
+
+ if [[ $DASD ]]; then
+- echo $DASD >> /etc/dasd.conf
+- echo "options dasd_mod dasd=$DASD" >> /etc/modprobe.d/dasd_mod.conf
++ echo $DASD | normalize_dasd_arg > /etc/dasd.conf
++ echo "options dasd_mod dasd=$DASD" > /etc/modprobe.d/dasd_mod.conf
+ dasd_cio_free
+ fi
+
+diff --git a/modules.d/80cms/module-setup.sh b/modules.d/80cms/module-setup.sh
+index 5cce1b4..15dce89 100755
+--- a/modules.d/80cms/module-setup.sh
++++ b/modules.d/80cms/module-setup.sh
+@@ -34,5 +34,5 @@ install() {
+ inst_libdir_file "gconv/*"
+ #inst /usr/lib/locale/locale-archive
+
+- dracut_install cmsfs-fuse fusermount ulockmgr_server bash tr insmod rmmod cat
++ dracut_install cmsfs-fuse fusermount ulockmgr_server bash tr insmod rmmod cat normalize_dasd_arg
+ }
diff --git a/0039-ifcfg-write-ifcfg.sh-fixed-IFS-resetting.patch b/0039-ifcfg-write-ifcfg.sh-fixed-IFS-resetting.patch
new file mode 100644
index 0000000..39e94fe
--- /dev/null
+++ b/0039-ifcfg-write-ifcfg.sh-fixed-IFS-resetting.patch
@@ -0,0 +1,34 @@
+From 9c10fecf248838a6800d0f953c5e3bf54e452223 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald at redhat.com>
+Date: Tue, 22 May 2012 11:36:41 +0200
+Subject: [PATCH] ifcfg/write-ifcfg.sh: fixed IFS resetting
+
+---
+ modules.d/45ifcfg/write-ifcfg.sh | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/modules.d/45ifcfg/write-ifcfg.sh b/modules.d/45ifcfg/write-ifcfg.sh
+index d1f6fe6..2b7cb5c 100755
+--- a/modules.d/45ifcfg/write-ifcfg.sh
++++ b/modules.d/45ifcfg/write-ifcfg.sh
+@@ -43,6 +43,7 @@ print_s390() {
+ local CONFIG_LINE
+ local i
+ local channel
++ local OLD_IFS
+
+ _netif="$1"
+ # if we find ccw channel, then use those, instead of
+@@ -62,9 +63,10 @@ print_s390() {
+
+ [ $? -ne 0 -o -z "$CONFIG_LINE" ] && return
+
++ OLD_IFS=$IFS
+ IFS=","
+- set $CONFIG_LINE
+- IFS="$OLD_IFS"
++ set -- $CONFIG_LINE
++ IFS=$OLD_IFS
+ NETTYPE=$1
+ shift
+ SUBCHANNELS="$1"
diff --git a/0040-Relax-the-rules-for-kdump-we-don-t-specify-netroot-i.patch b/0040-Relax-the-rules-for-kdump-we-don-t-specify-netroot-i.patch
new file mode 100644
index 0000000..00c56b1
--- /dev/null
+++ b/0040-Relax-the-rules-for-kdump-we-don-t-specify-netroot-i.patch
@@ -0,0 +1,42 @@
+From b6a90dbd0b879d3d9746c82102fc5c4ba09f59b9 Mon Sep 17 00:00:00 2001
+From: Cong Wang <xiyou.wangcong at gmail.com>
+Date: Tue, 29 May 2012 09:17:01 +0200
+Subject: [PATCH] Relax the rules for kdump, we don't specify netroot in
+ kdump.
+
+https://bugzilla.redhat.com/show_bug.cgi?id=822750
+---
+ modules.d/40network/parse-bond.sh | 5 +----
+ modules.d/40network/parse-bridge.sh | 3 ---
+ 2 files changed, 1 insertion(+), 7 deletions(-)
+
+diff --git a/modules.d/40network/parse-bond.sh b/modules.d/40network/parse-bond.sh
+index 0a4c006..933ad27 100755
+--- a/modules.d/40network/parse-bond.sh
++++ b/modules.d/40network/parse-bond.sh
+@@ -15,10 +15,7 @@
+
+ # Check if bond parameter is valid
+ if getarg bond= >/dev/null ; then
+- if [ -z "$netroot" ] ; then
+- die "No netboot configured, bond is invalid"
+- fi
+- command -v brctl >/dev/null 2>&1 || die "No 'brctl' installed"
++ :
+ fi
+
+ # We translate list of slaves to space-separated here to mwke it easier to loop over them in ifup
+diff --git a/modules.d/40network/parse-bridge.sh b/modules.d/40network/parse-bridge.sh
+index aaa5a54..6e1fee1 100755
+--- a/modules.d/40network/parse-bridge.sh
++++ b/modules.d/40network/parse-bridge.sh
+@@ -13,9 +13,6 @@
+
+ # Check if bridge parameter is valid
+ if getarg bridge= >/dev/null ; then
+- if [ -z "$netroot" ] ; then
+- die "No netboot configured, bridge is invalid"
+- fi
+ command -v brctl >/dev/null 2>&1 || die "No 'brctl' installed"
+ fi
+
diff --git a/0041-url-lib-url-lib.sh-disable-curl-progress-bar.patch b/0041-url-lib-url-lib.sh-disable-curl-progress-bar.patch
new file mode 100644
index 0000000..7882507
--- /dev/null
+++ b/0041-url-lib-url-lib.sh-disable-curl-progress-bar.patch
@@ -0,0 +1,26 @@
+From a07fae1ca1a095b4cca4399a42f7c2c975fd2f5d Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald at redhat.com>
+Date: Tue, 29 May 2012 16:10:46 +0200
+Subject: [PATCH] url-lib/url-lib.sh: disable curl progress bar
+
+https://bugzilla.redhat.com/show_bug.cgi?id=817301
+https://bugzilla.redhat.com/show_bug.cgi?id=824883
+---
+ modules.d/45url-lib/url-lib.sh | 4 ----
+ 1 file changed, 4 deletions(-)
+
+diff --git a/modules.d/45url-lib/url-lib.sh b/modules.d/45url-lib/url-lib.sh
+index 5721294..e9ece70 100755
+--- a/modules.d/45url-lib/url-lib.sh
++++ b/modules.d/45url-lib/url-lib.sh
+@@ -56,10 +56,6 @@ export CURL_HOME="/run/initramfs/url-lib"
+ mkdir -p $CURL_HOME
+ curl_args="--location --retry 3 --fail --show-error"
+
+-# technically "dumb" can handle the progress bar, but the only thing I've ever
+-# seen using TERM=dumb is s390 CMS, and it's too dumb for --progress-bar
+-[ "$TERM" != "dumb" ] && curl_args="$curl_args --progress-bar"
+-
+ curl_fetch_url() {
+ local url="$1" outloc="$2"
+ echo "$url" > /proc/self/fd/0
diff --git a/0042-network-ifup.sh-do-not-default-to-dhcp-for-interface.patch b/0042-network-ifup.sh-do-not-default-to-dhcp-for-interface.patch
new file mode 100644
index 0000000..ebb7edb
--- /dev/null
+++ b/0042-network-ifup.sh-do-not-default-to-dhcp-for-interface.patch
@@ -0,0 +1,35 @@
+From 588f0347536f3668708131353b2cb01f21594b59 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald at redhat.com>
+Date: Tue, 29 May 2012 16:34:58 +0200
+Subject: [PATCH] network/ifup.sh: do not default to dhcp, for interfaces
+ without ip=...
+
+Don't try to be smarter than the admin configuring the machine.
+Does also conflict with other methods trying to setup the interfaces,
+like cmsifup.sh from the cms module.
+---
+ modules.d/40network/ifup.sh | 11 -----------
+ 1 file changed, 11 deletions(-)
+
+diff --git a/modules.d/40network/ifup.sh b/modules.d/40network/ifup.sh
+index 2111b41..b8f07f4 100755
+--- a/modules.d/40network/ifup.sh
++++ b/modules.d/40network/ifup.sh
+@@ -202,17 +202,6 @@ if [ "$netif" = "$bridgename" ] && [ ! -e /tmp/net.$bridgename.up ]; then
+ brctl addif $bridgename $ethname
+ fi
+
+-# No ip lines default to dhcp
+-ip=$(getarg ip)
+-
+-if [ -z "$ip" ]; then
+- if [ "$netroot" = "dhcp6" ]; then
+- do_dhcp -6
+- else
+- do_dhcp -4
+- fi
+-fi
+-
+ # Specific configuration, spin through the kernel command line
+ # looking for ip= lines
+ for p in $(getargs ip=); do
diff --git a/0043-network-do-not-arping-with-qeth-layer3-interfaces.patch b/0043-network-do-not-arping-with-qeth-layer3-interfaces.patch
new file mode 100644
index 0000000..9cee18a
--- /dev/null
+++ b/0043-network-do-not-arping-with-qeth-layer3-interfaces.patch
@@ -0,0 +1,59 @@
+From 7d6493ec506832156352a30b8c6a85446d2f6142 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald at redhat.com>
+Date: Tue, 29 May 2012 17:38:18 +0200
+Subject: [PATCH] network: do not arping with qeth layer3 interfaces
+
+https://bugzilla.redhat.com/show_bug.cgi?id=825783
+---
+ modules.d/40network/dhclient-script.sh | 13 ++++++++++---
+ modules.d/40network/net-lib.sh | 10 +++++++++-
+ 2 files changed, 19 insertions(+), 4 deletions(-)
+
+diff --git a/modules.d/40network/dhclient-script.sh b/modules.d/40network/dhclient-script.sh
+index 52e4900..2f05549 100755
+--- a/modules.d/40network/dhclient-script.sh
++++ b/modules.d/40network/dhclient-script.sh
+@@ -66,10 +66,17 @@ case $reason in
+ ;;
+ BOUND)
+ echo "dhcp: BOND setting $netif"
+- if ! arping -q -D -c 2 -I $netif $new_ip_address ; then
+- warn "Duplicate address detected for $new_ip_address while doing dhcp. retrying"
+- exit 1
++ unset layer2
++ if [ -f /sys/class/net/$netif/device/layer2 ]; then
++ read layer2 < /sys/class/net/$netif/device/layer2
+ fi
++ if [ "$layer2" != "0" ]; then
++ if ! arping -q -D -c 2 -I $netif $new_ip_address ; then
++ warn "Duplicate address detected for $new_ip_address while doing dhcp. retrying"
++ exit 1
++ fi
++ fi
++ unset layer2
+ setup_interface
+ set | while read line; do
+ [ "${line#new_}" = "$line" ] && continue
+diff --git a/modules.d/40network/net-lib.sh b/modules.d/40network/net-lib.sh
+index c0f73da..1acd549 100644
+--- a/modules.d/40network/net-lib.sh
++++ b/modules.d/40network/net-lib.sh
+@@ -99,9 +99,17 @@ setup_net() {
+ else
+ dest="$gw_ip"
+ fi
+- if [ -n "$dest" ] && ! arping -q -f -w 60 -I $netif $dest ; then
++
++ unset layer2
++ if [ -f /sys/class/net/$netif/device/layer2 ]; then
++ read layer2 < /sys/class/net/$netif/device/layer2
++ fi
++
++ if [ "$layer2" != "0" ] && [ -n "$dest" ] && ! arping -q -f -w 60 -I $netif $dest ; then
+ info "Resolving $dest via ARP on $netif failed"
+ fi
++ unset layer2
++
+ > /tmp/net.$netif.did-setup
+ }
+
diff --git a/0044-dracut-shutdown.service-do-not-unpack-old-initramfs-.patch b/0044-dracut-shutdown.service-do-not-unpack-old-initramfs-.patch
new file mode 100644
index 0000000..572210d
--- /dev/null
+++ b/0044-dracut-shutdown.service-do-not-unpack-old-initramfs-.patch
@@ -0,0 +1,23 @@
+From f7b641bbe85588f84f6e5722533f7ef9e1433d7f Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald at redhat.com>
+Date: Thu, 31 May 2012 09:56:24 +0200
+Subject: [PATCH] dracut-shutdown.service: do not unpack old initramfs on
+ shutdown
+
+Do not unpack the initramfs, if the old initramfs still exists.
+---
+ dracut-shutdown.service | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/dracut-shutdown.service b/dracut-shutdown.service
+index 4f06e35..6756355 100644
+--- a/dracut-shutdown.service
++++ b/dracut-shutdown.service
+@@ -11,6 +11,7 @@ After=getty at tty1.service prefdm.service
+ Before=reboot.service
+ DefaultDependencies=no
+ ConditionPathExists=/run/initramfs/.need_shutdown
++ConditionPathExists=!/run/initramfs/bin/sh
+
+ [Service]
+ ExecStart=/usr/lib/dracut/dracut-initramfs-restore
diff --git a/0045-crypt-add-rd.luks.allow-discards-and-honor-options-i.patch b/0045-crypt-add-rd.luks.allow-discards-and-honor-options-i.patch
new file mode 100644
index 0000000..d254676
--- /dev/null
+++ b/0045-crypt-add-rd.luks.allow-discards-and-honor-options-i.patch
@@ -0,0 +1,157 @@
+From 9ad3b951e238e790cc803cc1e69aa85b0e308188 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald at redhat.com>
+Date: Thu, 31 May 2012 11:46:10 +0200
+Subject: [PATCH] crypt: add rd.luks.allow-discards and honor options in
+ crypttab
+
+also fixed the retry loop for rd.luks.key
+---
+ dracut.cmdline.7.asc | 10 +++++
+ modules.d/90crypt/cryptroot-ask.sh | 73 ++++++++++++++++++++++++++++--------
+ 2 files changed, 67 insertions(+), 16 deletions(-)
+
+diff --git a/dracut.cmdline.7.asc b/dracut.cmdline.7.asc
+index 76db651..eda72f1 100644
+--- a/dracut.cmdline.7.asc
++++ b/dracut.cmdline.7.asc
+@@ -191,6 +191,16 @@ crypto LUKS
+ LUKS UUID, so you don't have to specify the full UUID.
+ This parameter can be specified multiple times.
+
++**rd.luks.allow-discards=**_<luks uuid>_::
++ Allow using of discards (TRIM) requests for LUKS partitions with the given UUID.
++ Any "luks-" of the LUKS UUID is removed before comparing to _<luks uuid>_.
++ The comparisons also matches, if _<luks uuid>_ is only the beginning of the
++ LUKS UUID, so you don't have to specify the full UUID.
++ This parameter can be specified multiple times.
++
++**rd.luks.allow-discards::
++ Allow using of discards (TRIM) requests on all LUKS partitions.
++
+ **rd.luks.crypttab=0**::
+ do not check, if LUKS partition is in _/etc/crypttab_
+
+diff --git a/modules.d/90crypt/cryptroot-ask.sh b/modules.d/90crypt/cryptroot-ask.sh
+index aba1331..d373a90 100755
+--- a/modules.d/90crypt/cryptroot-ask.sh
++++ b/modules.d/90crypt/cryptroot-ask.sh
+@@ -32,9 +32,12 @@ else
+ device="$1"
+ fi
+
++# number of tries
++numtries=${3:-10}
++
+ # TODO: improve to support what cmdline does
+ if [ -f /etc/crypttab ] && getargbool 1 rd.luks.crypttab -n rd_NO_CRYPTTAB; then
+- while read name dev luksfile rest; do
++ while read name dev luksfile luksoptions; do
+ # ignore blank lines and comments
+ if [ -z "$name" -o "${name#\#}" != "$name" ]; then
+ continue
+@@ -57,17 +60,59 @@ if [ -f /etc/crypttab ] && getargbool 1 rd.luks.crypttab -n rd_NO_CRYPTTAB; then
+ fi
+ fi
+ done < /etc/crypttab
+- unset name dev rest
++ unset name dev
+ fi
+
+ #
+ # Open LUKS device
+ #
+
+-info "luksOpen $device $luksname $luksfile"
++info "luksOpen $device $luksname $luksfile $luksoptions"
++
++OLD_IFS="$IFS"
++IFS=,
++set -- $luksoptions
++IFS="$OLD_IFS"
++
++while [ $# -gt 0 ]; do
++ case $1 in
++ noauto)
++ # skip this
++ exit 0
++ ;;
++ swap)
++ # skip this
++ exit 0
++ ;;
++ tmp)
++ # skip this
++ exit 0
++ ;;
++ allow-discards)
++ allowdiscards="--allow-discards"
++ esac
++ shift
++done
++
++# parse for allow-discards
++if strstr "$(cryptsetup --help)" "allow-discards"; then
++ if discarduuids=$(getargs "rd.luks.allow-discards"); then
++ if strstr " $discarduuids " " ${luksdev##luks-}"; then
++ allowdiscards="--allow-discards"
++ fi
++ elif getargbool rd.luks.allow-discards; then
++ allowdiscards="--allow-discards"
++ fi
++fi
++
++if strstr "$(cryptsetup --help)" "allow-discards"; then
++ cryptsetupopts="$cryptsetupopts $allowdiscards"
++fi
++
++unset allowdiscards
+
+ if [ -n "$luksfile" -a "$luksfile" != "none" -a -e "$luksfile" ]; then
+- if cryptsetup --key-file "$luksfile" luksOpen "$device" "$luksname"; then
++ if cryptsetup --key-file "$luksfile" $cryptsetupopts luksOpen "$device" "$luksname"; then
+ ask_passphrase=0
+ fi
+ else
+@@ -76,26 +121,22 @@ else
+ keydev="${tmp%%:*}"
+ keypath="${tmp#*:}"
+ else
+- if [ $# -eq 3 ]; then
+- if [ $3 -eq 0 ]; then
+- info "No key found for $device. Fallback to passphrase mode."
+- break
+- fi
+- info "No key found for $device. Will try $3 time(s) more later."
+- set -- "$1" "$2" "$(($3 - 1))"
+- else
+- info "No key found for $device. Will try later."
++ if [ $numtries -eq 0 ]; then
++ warn "No key found for $device. Fallback to passphrase mode."
++ break
+ fi
++ sleep 1
++ info "No key found for $device. Will try $numtries time(s) more later."
+ initqueue --unique --onetime --settled \
+ --name cryptroot-ask-$luksname \
+- $(command -v cryptroot-ask) "$@"
++ $(command -v cryptroot-ask) "$device" "$luksname" "$(($numtries-1))"
+ exit 0
+ fi
+ unset tmp
+
+ info "Using '$keypath' on '$keydev'"
+ readkey "$keypath" "$keydev" "$device" \
+- | cryptsetup -d - luksOpen "$device" "$luksname"
++ | cryptsetup -d - $cryptsetupopts luksOpen "$device" "$luksname"
+ unset keypath keydev
+ ask_passphrase=0
+ break
+@@ -103,7 +144,7 @@ else
+ fi
+
+ if [ $ask_passphrase -ne 0 ]; then
+- luks_open="$(command -v cryptsetup) luksOpen"
++ luks_open="$(command -v cryptsetup) $cryptsetupopts luksOpen"
+ ask_for_password --ply-tries 5 \
+ --ply-cmd "$luks_open -T1 $device $luksname" \
+ --ply-prompt "Password ($device)" \
diff --git a/0046-dasd_mod-parse-dasd-mod.sh-fixed-dasd_mod-param-gene.patch b/0046-dasd_mod-parse-dasd-mod.sh-fixed-dasd_mod-param-gene.patch
new file mode 100644
index 0000000..caacb4a
--- /dev/null
+++ b/0046-dasd_mod-parse-dasd-mod.sh-fixed-dasd_mod-param-gene.patch
@@ -0,0 +1,68 @@
+From 328c7ae8c4d74bbbc457d7a029ac5ea444a83bb4 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald at redhat.com>
+Date: Thu, 31 May 2012 09:12:51 +0200
+Subject: [PATCH] dasd_mod/parse-dasd-mod.sh: fixed dasd_mod param generation
+
+---
+ modules.d/95dasd_mod/parse-dasd-mod.sh | 44 +++++++++++++++++++++++++++-----
+ 1 file changed, 38 insertions(+), 6 deletions(-)
+
+diff --git a/modules.d/95dasd_mod/parse-dasd-mod.sh b/modules.d/95dasd_mod/parse-dasd-mod.sh
+index d7e8664..91c3274 100755
+--- a/modules.d/95dasd_mod/parse-dasd-mod.sh
++++ b/modules.d/95dasd_mod/parse-dasd-mod.sh
+@@ -2,16 +2,48 @@
+ # -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
+ # ex: ts=8 sw=4 sts=4 et filetype=sh
+ mod_args=""
+-for dasd_arg in $(getargs rd.dasd= rd_DASD= DASD=); do
+- if [ -z $mod_args ]; then
+- mod_args="$dasd_arg"
++
++convert_dasd_param() {
++ local bus_id params
++ params=""
++ bus_id=$1; shift
++ while [ $# -gt 0 ]; do
++ case "$1" in
++ use_diag\=1)
++ params="$params:diag"
++ ;;
++ readonly\=1)
++ params="$params:ro"
++ ;;
++ erplog\=1)
++ params="$params:erplog"
++ ;;
++ failfast\=1)
++ params="$params:failfast"
++ ;;
++ esac
++ shift
++ done
++ params="${params#*:}"
++ if [ -n "$params" ]; then
++ echo "$bus_id($params)"
+ else
+- # We've already got some thing in mod_args, add to it
+- mod_args="$mod_args,$dasd_arg"
++ echo "$bus_id"
+ fi
++}
++
++for dasd_arg in $(getargs rd.dasd= rd_DASD= DASD=); do
++ OLD_IFS=$IFS
++ IFS=","
++ set -- $dasd_arg
++ IFS=$OLD_IFS
++ dasd_arg=$(convert_dasd_param "$@")
++ mod_args="$mod_args,$dasd_arg"
+ done
+
+-if [ ! -z $mod_args ]; then
++mod_args="${mod_args#*,}"
++
++if [ -n "$mod_args" ]; then
+ [ -d /etc/modprobe.d ] || mkdir -m 0755 -p /etc/modprobe.d
+ echo "options dasd_mod dasd=$mod_args" >> /etc/modprobe.d/dasd_mod.conf
+ fi
diff --git a/0047-fix-return-value-of-some-installkernel-functions.patch b/0047-fix-return-value-of-some-installkernel-functions.patch
new file mode 100644
index 0000000..4415b03
--- /dev/null
+++ b/0047-fix-return-value-of-some-installkernel-functions.patch
@@ -0,0 +1,54 @@
+From 0a1ddd3fd3754c68bd5256e4b87b6978863efa31 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald at redhat.com>
+Date: Fri, 1 Jun 2012 17:09:25 +0200
+Subject: [PATCH] fix return value of some installkernel() functions
+
+---
+ modules.d/40network/module-setup.sh | 3 +++
+ modules.d/90multipath/module-setup.sh | 3 +++
+ 2 files changed, 6 insertions(+)
+
+diff --git a/modules.d/40network/module-setup.sh b/modules.d/40network/module-setup.sh
+index c2ad815..e32eb28 100755
+--- a/modules.d/40network/module-setup.sh
++++ b/modules.d/40network/module-setup.sh
+@@ -27,6 +27,7 @@ installkernel() {
+ net_module_filter() {
+ local _net_drivers='eth_type_trans|register_virtio_device'
+ local _unwanted_drivers='/(wireless|isdn|uwb)/'
++ local _ret
+ # subfunctions inherit following FDs
+ local _merge=8 _side2=9
+ function nmf1() {
+@@ -55,7 +56,9 @@ installkernel() {
+ # Use two parallel streams to filter alternating modules.
+ set +x
+ eval "( ( rotor ) ${_side2}>&1 | nmf1 ) ${_merge}>&1"
++ _ret=$?
+ [[ $debug ]] && set -x
++ return $_ret
+ }
+
+ { find_kernel_modules_by_path drivers/net; find_kernel_modules_by_path drivers/s390/net; } \
+diff --git a/modules.d/90multipath/module-setup.sh b/modules.d/90multipath/module-setup.sh
+index 2f6b416..43057f3 100755
+--- a/modules.d/90multipath/module-setup.sh
++++ b/modules.d/90multipath/module-setup.sh
+@@ -31,6 +31,7 @@ depends() {
+ }
+
+ installkernel() {
++ local _ret
+ set +x
+ mp_mod_filter() {
+ local _mpfuncs='scsi_register_device_handler|dm_dirty_log_type_register|dm_register_path_selector|dm_register_target'
+@@ -45,7 +46,9 @@ installkernel() {
+
+ ( find_kernel_modules_by_path drivers/scsi; find_kernel_modules_by_path drivers/s390/scsi ;
+ find_kernel_modules_by_path drivers/md ) | mp_mod_filter | instmods
++ _ret=$?
+ [[ $debug ]] && set -x
++ return $_ret
+ }
+
+ install() {
diff --git a/0048-dracut.sh-do-not-rely-on-the-presence-of-lib64-check.patch b/0048-dracut.sh-do-not-rely-on-the-presence-of-lib64-check.patch
new file mode 100644
index 0000000..7ed6de7
--- /dev/null
+++ b/0048-dracut.sh-do-not-rely-on-the-presence-of-lib64-check.patch
@@ -0,0 +1,48 @@
+From 71909cc72ccd11af9c542b134b112b8d6f8c5211 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald at redhat.com>
+Date: Mon, 4 Jun 2012 11:33:29 +0200
+Subject: [PATCH] dracut.sh: do not rely on the presence of lib64, check with
+ ldd
+
+---
+ dracut.sh | 27 +++++++++++++++++----------
+ 1 file changed, 17 insertions(+), 10 deletions(-)
+
+diff --git a/dracut.sh b/dracut.sh
+index 1048e75..44dcc94 100755
+--- a/dracut.sh
++++ b/dracut.sh
+@@ -512,16 +512,23 @@ ddebug "Executing $0 $dracut_args"
+ }
+
+ # Detect lib paths
+-[[ $libdir ]] || for libdir in /lib64 /lib; do
+- [[ -d $libdir ]] && libdirs+=" $libdir" && break
+-done || {
+- dfatal 'No lib directory?!!!'
+- exit 1
+-}
+-
+-[[ $usrlibdir ]] || for usrlibdir in /usr/lib64 /usr/lib; do
+- [[ -d $usrlibdir ]] && libdirs+=" $usrlibdir" && break
+-done || dwarn 'No usr/lib directory!'
++if ! [[ $libdir ]] || ! [[ $usrlibdir ]] ; then
++ if strstr "$(ldd /bin/sh)" "/lib64/" &>/dev/null \
++ && [[ -d /lib64 ]]; then
++ libdir=/lib64
++ usrlibdir=/usr/lib64
++ else
++ libdir=/lib
++ usrlibdir=/usr/lib
++ fi
++ for i in $libdir $usrlibdir; do
++ if [[ -d $i ]]; then
++ libdirs+=" $i"
++ else
++ dwarn 'No $i directory??!!'
++ fi
++ done
++fi
+
+ # This is kinda legacy -- eventually it should go away.
+ case $dracutmodules in
diff --git a/0049-Don-t-set-an-already-set-attribute-826357.patch b/0049-Don-t-set-an-already-set-attribute-826357.patch
new file mode 100644
index 0000000..da10513
--- /dev/null
+++ b/0049-Don-t-set-an-already-set-attribute-826357.patch
@@ -0,0 +1,39 @@
+From dbd9f15d806bc3925991809525ab44faf7ecc5f9 Mon Sep 17 00:00:00 2001
+From: Jesse Keating <jkeating at redhat.com>
+Date: Thu, 31 May 2012 18:41:25 -0700
+Subject: [PATCH] Don't set an already set attribute (#826357)
+
+Depending on how the dasd_mod module was loaded, our device could have
+already been marked as online or offline. We need to make the sysecho
+sensitive to this and not fail if the attribute we're trying to set has
+already been set.
+---
+ modules.d/80cms/cmssetup.sh | 8 ++++++--
+ 1 file changed, 6 insertions(+), 2 deletions(-)
+
+diff --git a/modules.d/80cms/cmssetup.sh b/modules.d/80cms/cmssetup.sh
+index 995bfa7..41c853c 100755
+--- a/modules.d/80cms/cmssetup.sh
++++ b/modules.d/80cms/cmssetup.sh
+@@ -5,7 +5,7 @@
+ type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh
+
+ function sysecho () {
+- file=$1
++ file="$1"
+ shift
+ local i=1
+ while [ $i -le 10 ] ; do
+@@ -16,7 +16,11 @@ function sysecho () {
+ break
+ fi
+ done
+- [ -f "$file" ] && echo $* > $file
++ local status
++ read status < "$file"
++ if [[ ! $status == $* ]]; then
++ [ -f "$file" ] && echo $* > "$file"
++ fi
+ }
+
+ function dasd_settle() {
diff --git a/0050-add-filesystem-options-to-fsck_single.patch b/0050-add-filesystem-options-to-fsck_single.patch
new file mode 100644
index 0000000..df5c036
--- /dev/null
+++ b/0050-add-filesystem-options-to-fsck_single.patch
@@ -0,0 +1,125 @@
+From d1d8f11ea7a97491c46a8f406ed55bf74a29c460 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald at redhat.com>
+Date: Thu, 31 May 2012 12:57:23 +0200
+Subject: [PATCH] add filesystem options to fsck_single()
+
+if we have e.g. special btrfs options for "/" and "/usr", we want to use
+those for the test mount to determine if the filesystem is corrupted.
+---
+ modules.d/95fstab-sys/mount-sys.sh | 2 +-
+ modules.d/95rootfs-block/mount-root.sh | 2 +-
+ modules.d/98usrmount/mount-usr.sh | 5 +++--
+ modules.d/99base/mount-hook.sh | 2 +-
+ modules.d/99fs-lib/fs-lib.sh | 9 +++++----
+ 5 files changed, 11 insertions(+), 9 deletions(-)
+
+diff --git a/modules.d/95fstab-sys/mount-sys.sh b/modules.d/95fstab-sys/mount-sys.sh
+index 895eb58..a1e5ab1 100755
+--- a/modules.d/95fstab-sys/mount-sys.sh
++++ b/modules.d/95fstab-sys/mount-sys.sh
+@@ -12,7 +12,7 @@ fstab_mount() {
+ while read _dev _mp _fs _opts _dump _pass _rest; do
+ [ -z "${_dev%%#*}" ] && continue # Skip comment lines
+ if [ "$_pass" -gt 0 ] && ! strstr "$_opts" _netdev; then
+- fsck_single "$_dev" "$_fs"
++ fsck_single "$_dev" "$_fs" "$_opts"
+ fi
+ _fs=$(det_fs "$_dev" "$_fs")
+ info "Mounting $_dev"
+diff --git a/modules.d/95rootfs-block/mount-root.sh b/modules.d/95rootfs-block/mount-root.sh
+index aef99ae..2cae526 100755
+--- a/modules.d/95rootfs-block/mount-root.sh
++++ b/modules.d/95rootfs-block/mount-root.sh
+@@ -105,7 +105,7 @@ mount_root() {
+ ran_fsck=0
+ if [ -z "$fastboot" -a "$READONLY" != "yes" ] && ! strstr "${rflags},${rootopts}" _netdev; then
+ umount "$NEWROOT"
+- fsck_single "${root#block:}" "$rootfs" "$fsckoptions"
++ fsck_single "${root#block:}" "$rootfs" "$rflags" "$fsckoptions"
+ _ret=$?
+ [ $_ret -ne 255 ] && echo $_ret >/run/initramfs/root-fsck
+ ran_fsck=1
+diff --git a/modules.d/98usrmount/mount-usr.sh b/modules.d/98usrmount/mount-usr.sh
+index 39f75b9..92638d1 100755
+--- a/modules.d/98usrmount/mount-usr.sh
++++ b/modules.d/98usrmount/mount-usr.sh
+@@ -9,6 +9,7 @@ fsck_usr()
+ {
+ local _dev=$1
+ local _fs=$2
++ local _fsopts=$3
+ local _fsckoptions
+
+ if [ -f "$NEWROOT"/fsckoptions ]; then
+@@ -31,7 +32,7 @@ fsck_usr()
+ _fsckoptions="$AUTOFSCK_OPT $_fsckoptions"
+ fi
+
+- fsck_single "$_dev" "$_fs" "$_fsckoptions"
++ fsck_single "$_dev" "$_fs" "$_fsopts" "$_fsckoptions"
+ }
+
+ mount_usr()
+@@ -60,7 +61,7 @@ mount_usr()
+ if [ "x$_usr_found" != "x" ]; then
+ # we have to mount /usr
+ if [ "0" != "${_passno:-0}" ]; then
+- fsck_usr "$_dev" "$_fs"
++ fsck_usr "$_dev" "$_fs" "$_opts"
+ else
+ :
+ fi
+diff --git a/modules.d/99base/mount-hook.sh b/modules.d/99base/mount-hook.sh
+index 99b17dd..dcf1415 100755
+--- a/modules.d/99base/mount-hook.sh
++++ b/modules.d/99base/mount-hook.sh
+@@ -113,7 +113,7 @@ mount_root() {
+ # 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" "$fsckoptions"
++ fsck_single "${root#block:}" "$rootfs" "$rflags" "$fsckoptions"
+ _ret=$?
+ [ $_ret -ne 255 ] && echo $_ret >/run/initramfs/root-fsck
+ fi
+diff --git a/modules.d/99fs-lib/fs-lib.sh b/modules.d/99fs-lib/fs-lib.sh
+index f9dbbf9..75bee92 100755
+--- a/modules.d/99fs-lib/fs-lib.sh
++++ b/modules.d/99fs-lib/fs-lib.sh
+@@ -89,7 +89,7 @@ fsck_drv_xfs() {
+ mkdir -p /tmp/.xfs
+
+ info "trying to mount $_dev"
+- if mount -t xfs "$_dev" "/tmp/.xfs" >/dev/null 2>&1; then
++ if mount -t xfs ${_fsopts+-o $_fsopts} "$_dev" "/tmp/.xfs" >/dev/null 2>&1; then
+ _ret=0
+ info "xfs: $_dev is clean"
+ umount "$_dev" >/dev/null 2>&1
+@@ -119,7 +119,7 @@ fsck_drv_btrfs() {
+ mkdir -p /tmp/.btrfs
+
+ info "trying to mount $_dev"
+- if mount -t btrfs "$_dev" "/tmp/.btrfs" >/dev/null 2>&1; then
++ if mount -t btrfs ${_fsopts+-o $_fsopts} "$_dev" "/tmp/.btrfs" >/dev/null 2>&1; then
+ _ret=0
+ info "btrfs: $_dev is clean"
+ umount "$_dev" >/dev/null 2>&1
+@@ -177,7 +177,7 @@ fsck_drv_std() {
+
+ # checks single filesystem, relying on specific "driver"; we don't rely on
+ # automatic checking based on fstab, so empty one is passed;
+-# takes 3 arguments - device, filesystem, additional fsck options;
++# takes 4 arguments - device, filesystem, filesystem options, additional fsck options;
+ # first 2 arguments are mandatory (fs may be auto or "")
+ # returns 255 if filesystem wasn't checked at all (e.g. due to lack of
+ # necessary tools or insufficient options)
+@@ -185,7 +185,8 @@ fsck_single() {
+ local FSTAB_FILE=/etc/fstab.empty
+ local _dev="$1"
+ local _fs="${2:-auto}"
+- local _fop="$3"
++ local _fsopts="$3"
++ local _fop="$4"
+ local _drv
+
+ [ $# -lt 2 ] && return 255
diff --git a/0051-dasd_mod-change-rd.dasd-to-dasd_mod-kernel-parameter.patch b/0051-dasd_mod-change-rd.dasd-to-dasd_mod-kernel-parameter.patch
new file mode 100644
index 0000000..6060eb8
--- /dev/null
+++ b/0051-dasd_mod-change-rd.dasd-to-dasd_mod-kernel-parameter.patch
@@ -0,0 +1,85 @@
+From a12c7982174ca599904c229d0b12b4cc9ba2a0f5 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald at redhat.com>
+Date: Tue, 5 Jun 2012 20:23:35 +0200
+Subject: [PATCH] dasd_mod: change rd.dasd to dasd_mod kernel parameter
+
+---
+ dracut.cmdline.7.asc | 9 ++-------
+ modules.d/95dasd_mod/parse-dasd-mod.sh | 34 --------------------------------
+ 2 files changed, 2 insertions(+), 41 deletions(-)
+
+diff --git a/dracut.cmdline.7.asc b/dracut.cmdline.7.asc
+index eda72f1..884d194 100644
+--- a/dracut.cmdline.7.asc
++++ b/dracut.cmdline.7.asc
+@@ -417,14 +417,9 @@ NBD
+
+ DASD
+ ~~~~
+-**rd.dasd_mod.dasd=**....::
++**rd.dasd=**....::
+ same syntax as the kernel module parameter (s390 only)
+
+-**rd.dasd=**_<dasd_adaptor device bus ID>_[,readonly=_X_][,use_diag=_X_][,erplog=_X_]::
+- activate DASD device with the given adaptor device bus ID and setting the
+- sysfs attributes to the specified values. This parameter can be specified
+- multiple times.
+-
+ ZFCP
+ ~~~~
+ **rd.zfcp=**_<zfcp adaptor device bus ID>_,_<WWPN>_,_<FCPLUN>_::
+@@ -493,7 +488,7 @@ rdbreak:: rd.break
+
+ rd_CCW:: rd.ccw
+
+-rd_DASD_MOD:: rd.dasd_mod.dasd
++rd_DASD_MOD:: rd.dasd
+
+ rd_DASD:: rd.dasd
+
+diff --git a/modules.d/95dasd_mod/parse-dasd-mod.sh b/modules.d/95dasd_mod/parse-dasd-mod.sh
+index 91c3274..c37aca8 100755
+--- a/modules.d/95dasd_mod/parse-dasd-mod.sh
++++ b/modules.d/95dasd_mod/parse-dasd-mod.sh
+@@ -3,41 +3,7 @@
+ # ex: ts=8 sw=4 sts=4 et filetype=sh
+ mod_args=""
+
+-convert_dasd_param() {
+- local bus_id params
+- params=""
+- bus_id=$1; shift
+- while [ $# -gt 0 ]; do
+- case "$1" in
+- use_diag\=1)
+- params="$params:diag"
+- ;;
+- readonly\=1)
+- params="$params:ro"
+- ;;
+- erplog\=1)
+- params="$params:erplog"
+- ;;
+- failfast\=1)
+- params="$params:failfast"
+- ;;
+- esac
+- shift
+- done
+- params="${params#*:}"
+- if [ -n "$params" ]; then
+- echo "$bus_id($params)"
+- else
+- echo "$bus_id"
+- fi
+-}
+-
+ for dasd_arg in $(getargs rd.dasd= rd_DASD= DASD=); do
+- OLD_IFS=$IFS
+- IFS=","
+- set -- $dasd_arg
+- IFS=$OLD_IFS
+- dasd_arg=$(convert_dasd_param "$@")
+ mod_args="$mod_args,$dasd_arg"
+ done
+
diff --git a/0052-dracut.spec-remove-typo-from-BuildRequires-for-suse.patch b/0052-dracut.spec-remove-typo-from-BuildRequires-for-suse.patch
new file mode 100644
index 0000000..4520961
--- /dev/null
+++ b/0052-dracut.spec-remove-typo-from-BuildRequires-for-suse.patch
@@ -0,0 +1,22 @@
+From 9cec52027c0af88b41f4058b50dc25ae47354c99 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald at redhat.com>
+Date: Wed, 6 Jun 2012 10:24:07 +0200
+Subject: [PATCH] dracut.spec: remove typo from BuildRequires for suse
+
+---
+ dracut.spec | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/dracut.spec b/dracut.spec
+index b5218d9..38da76d 100644
+--- a/dracut.spec
++++ b/dracut.spec
+@@ -40,7 +40,7 @@ BuildRequires: docbook-style-xsl docbook-dtds libxslt
+ %endif
+
+ %if 0%{?suse_version}
+--BuildRequires: docbook-xsl-stylesheets libxslt
++BuildRequires: docbook-xsl-stylesheets libxslt
+ %endif
+
+ BuildRequires: asciidoc
diff --git a/0053-move-dracut-back-to-usr-share.patch b/0053-move-dracut-back-to-usr-share.patch
new file mode 100644
index 0000000..f7f53ac
--- /dev/null
+++ b/0053-move-dracut-back-to-usr-share.patch
@@ -0,0 +1,192 @@
+From a950b4f93b0eea7f19aea0141da76e233409a21b Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald at redhat.com>
+Date: Wed, 6 Jun 2012 10:58:13 +0200
+Subject: [PATCH] move dracut back to /usr/share
+
+---
+ Makefile | 2 +-
+ dracut-shutdown.service | 2 +-
+ dracut.8.asc | 4 ++--
+ dracut.asc | 4 ++--
+ dracut.conf.5.asc | 2 +-
+ dracut.sh | 8 ++++----
+ dracut.spec | 18 ++++++------------
+ 7 files changed, 17 insertions(+), 23 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index bf51b51..c1c096d 100644
+--- a/Makefile
++++ b/Makefile
+@@ -4,7 +4,7 @@ GITVERSION=$(shell [ -d .git ] && git rev-list --abbrev-commit -n 1 HEAD |cut
+ prefix ?= /usr
+ libdir ?= ${prefix}/lib
+ datadir ?= ${prefix}/share
+-pkglibdir ?= ${libdir}/dracut
++pkglibdir ?= ${datadir}/dracut
+ sysconfdir ?= ${prefix}/etc
+ bindir ?= ${prefix}/bin
+ mandir ?= ${prefix}/share/man
+diff --git a/dracut-shutdown.service b/dracut-shutdown.service
+index 6756355..56e7b94 100644
+--- a/dracut-shutdown.service
++++ b/dracut-shutdown.service
+@@ -14,6 +14,6 @@ ConditionPathExists=/run/initramfs/.need_shutdown
+ ConditionPathExists=!/run/initramfs/bin/sh
+
+ [Service]
+-ExecStart=/usr/lib/dracut/dracut-initramfs-restore
++ExecStart=/usr/share/dracut/dracut-initramfs-restore
+ Type=oneshot
+ RemainAfterExit=yes
+diff --git a/dracut.8.asc b/dracut.8.asc
+index cadd740..d538a02 100644
+--- a/dracut.8.asc
++++ b/dracut.8.asc
+@@ -31,7 +31,7 @@ OPTIONS
+
+ **-m, --modules** _<list of dracut modules>_::
+ specify a space-separated list of dracut modules to call when building the
+- initramfs. Modules are located in _/usr/lib/dracut/modules.d_. This
++ initramfs. Modules are located in _/usr/share/dracut/modules.d_. This
+ parameter can be specified multiple times.
+ +
+ [NOTE]
+@@ -228,7 +228,7 @@ Default:
+ **-l, --local**::
+ activates the local mode. dracut will use modules from the current working
+ directory instead of the system-wide installed modules in
+- _/usr/lib/dracut/modules.d_.
++ _/usr/share/dracut/modules.d_.
+ This is useful when running dracut from a git checkout.
+
+ **-H, --hostonly**::
+diff --git a/dracut.asc b/dracut.asc
+index 9621db2..47493bc 100644
+--- a/dracut.asc
++++ b/dracut.asc
+@@ -196,7 +196,7 @@ To see a list of available dracut modules, use the --list-modules option:
+
+ or, if you have a dracut version earlier than +008+, issue the command:
+ ----
+-# for mod in /usr/lib/dracut/modules.d/*; do echo ${mod##*/??}; done
++# for mod in /usr/share/dracut/modules.d/*; do echo ${mod##*/??}; done
+ ----
+
+ === Omitting dracut Modules
+@@ -716,7 +716,7 @@ For more debugging options, see <<dracutkerneldebug>> in <<dracutcmdline7>>.
+ == dracut Components
+
+ dracut uses a modular system to build and extend the initramfs image. All
+-modules are located in _/usr/lib/dracut/modules.d_ or in _<git-src>/modules.d_.
++modules are located in _/usr/share/dracut/modules.d_ or in _<git-src>/modules.d_.
+ The most basic dracut module is _99base_. In _99base_ the initial shell script
+ init is defined, which gets run by the kernel after initramfs loading. Although
+ you can replace init with your own version of _99base_, this is not encouraged.
+diff --git a/dracut.conf.5.asc b/dracut.conf.5.asc
+index 017a221..bc1caa6 100644
+--- a/dracut.conf.5.asc
++++ b/dracut.conf.5.asc
+@@ -23,7 +23,7 @@ line are not interpreted.
+
+ *dracutmodules+=*" __<dracut modules>__ "::
+ Specify a space-separated list of dracut modules to call when building the
+- initramfs. Modules are located in _/usr/lib/dracut/modules.d_.
++ initramfs. Modules are located in _/usr/share/dracut/modules.d_.
+
+ *omit_dracutmodules+=*" __<dracut modules>__ "::
+ Omit a space-separated list of dracut modules.
+diff --git a/dracut.sh b/dracut.sh
+index 44dcc94..03807b8 100755
+--- a/dracut.sh
++++ b/dracut.sh
+@@ -35,7 +35,7 @@ Creates initial ramdisk images for preloading modules
+ -f, --force Overwrite existing initramfs file.
+ -m, --modules [LIST] Specify a space-separated list of dracut modules to
+ call when building the initramfs. Modules are located
+- in /usr/lib/dracut/modules.d.
++ in /usr/share/dracut/modules.d.
+ -o, --omit [LIST] Omit a space-separated list of dracut modules.
+ -a, --add [LIST] Add a space-separated list of dracut modules.
+ -d, --drivers [LIST] Specify a space-separated list of kernel modules to
+@@ -84,7 +84,7 @@ Creates initial ramdisk images for preloading modules
+ /var/tmp.
+ -l, --local Local mode. Use modules from the current working
+ directory instead of the system-wide installed in
+- /usr/lib/dracut/modules.d.
++ /usr/share/dracut/modules.d.
+ Useful when running dracut from a git checkout.
+ -H, --hostonly Host-Only mode: Install only what is needed for
+ booting the local host instead of a generic host.
+@@ -309,7 +309,7 @@ unset GREP_OPTIONS
+ debug=yes
+ }
+
+-[[ $dracutbasedir ]] || dracutbasedir=/usr/lib/dracut
++[[ $dracutbasedir ]] || dracutbasedir=/usr/share/dracut
+
+ [[ $allowlocal && -f "$(readlink -f ${0%/*})/dracut-functions.sh" ]] && \
+ dracutbasedir="$(readlink -f ${0%/*})"
+@@ -422,7 +422,7 @@ stdloglvl=$((stdloglvl + verbosity_mod_l))
+ [[ $use_fstab_l ]] && use_fstab=$use_fstab_l
+ [[ $mdadmconf_l ]] && mdadmconf=$mdadmconf_l
+ [[ $lvmconf_l ]] && lvmconf=$lvmconf_l
+-[[ $dracutbasedir ]] || dracutbasedir=/usr/lib/dracut
++[[ $dracutbasedir ]] || dracutbasedir=/usr/share/dracut
+ [[ $fw_dir ]] || fw_dir="/lib/firmware/updates /lib/firmware"
+ [[ $tmpdir_l ]] && tmpdir="$tmpdir_l"
+ [[ $tmpdir ]] || tmpdir=/var/tmp
+diff --git a/dracut.spec b/dracut.spec
+index 38da76d..e762fdc 100644
+--- a/dracut.spec
++++ b/dracut.spec
+@@ -1,4 +1,4 @@
+-%define dracutlibdir %{_prefix}/lib/dracut
++%define dracutlibdir %{_datadir}/dracut
+
+ # Variables must be defined
+ %define with_nbd 1
+@@ -170,8 +170,8 @@ make all
+ rm -rf $RPM_BUILD_ROOT
+ %endif
+ make install DESTDIR=$RPM_BUILD_ROOT \
+- libdir=%{_prefix}/lib \
+- bindir=%{_bindir} \
++ libdir=%{_datadir} \
++ bindir=/sbin \
+ %if %{defined _unitdir}
+ systemdsystemunitdir=%{_unitdir} \
+ %endif
+@@ -218,22 +218,16 @@ rm $RPM_BUILD_ROOT%{_bindir}/lsinitrd
+ mkdir -p $RPM_BUILD_ROOT/etc/logrotate.d
+ install -m 0644 dracut.logrotate $RPM_BUILD_ROOT/etc/logrotate.d/dracut_log
+
+-# create compat symlink
+-mkdir -p $RPM_BUILD_ROOT/sbin
+-ln -s /usr/bin/dracut $RPM_BUILD_ROOT/sbin/dracut
+-
+ %clean
+ rm -rf $RPM_BUILD_ROOT
+
+ %files
+ %defattr(-,root,root,0755)
+ %doc README HACKING TODO COPYING AUTHORS NEWS dracut.html dracut.png dracut.svg
+-%{_bindir}/dracut
+-# compat symlink
+ /sbin/dracut
+ %if 0%{?fedora} > 12 || 0%{?rhel} >= 6 || 0%{?suse_version} > 9999
+-%{_bindir}/mkinitrd
+-%{_bindir}/lsinitrd
++/sbin/mkinitrd
++/sbin/lsinitrd
+ %endif
+ %dir %{dracutlibdir}
+ %dir %{dracutlibdir}/modules.d
+@@ -332,7 +326,7 @@ rm -rf $RPM_BUILD_ROOT
+ %files tools
+ %defattr(-,root,root,0755)
+ %{_mandir}/man8/dracut-catimages.8*
+-%{_bindir}/dracut-catimages
++/sbin/dracut-catimages
+ %dir /boot/dracut
+ %dir /var/lib/dracut
+ %dir /var/lib/dracut/overlay
diff --git a/0054-removed-setsid-and-util-linux-2.21-requirement.patch b/0054-removed-setsid-and-util-linux-2.21-requirement.patch
new file mode 100644
index 0000000..7b14e37
--- /dev/null
+++ b/0054-removed-setsid-and-util-linux-2.21-requirement.patch
@@ -0,0 +1,54 @@
+From 84eafb064490c618c920db186e74f1f9927e0380 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald at redhat.com>
+Date: Wed, 6 Jun 2012 11:14:48 +0200
+Subject: [PATCH] removed setsid and util-linux >= 2.21 requirement
+
+---
+ dracut.spec | 4 ++--
+ modules.d/99base/dracut-lib.sh | 3 +--
+ modules.d/99base/module-setup.sh | 2 +-
+ 3 files changed, 4 insertions(+), 5 deletions(-)
+
+diff --git a/dracut.spec b/dracut.spec
+index e762fdc..54e8d99 100644
+--- a/dracut.spec
++++ b/dracut.spec
+@@ -78,9 +78,9 @@ Requires: module-init-tools >= 3.7-9
+ Requires: sed
+ Requires: udev > 166
+ %if 0%{?fedora} || 0%{?rhel} > 6
+-Requires: util-linux >= 2.21
++Requires: util-linux >= 2.20
+ %else
+-Requires: util-linux-ng >= 2.21
++Requires: util-linux-ng >= 2.20
+ %endif
+
+ %if 0%{?fedora} || 0%{?rhel} > 6
+diff --git a/modules.d/99base/dracut-lib.sh b/modules.d/99base/dracut-lib.sh
+index 4f2b8cd..3ad5000 100755
+--- a/modules.d/99base/dracut-lib.sh
++++ b/modules.d/99base/dracut-lib.sh
+@@ -798,8 +798,7 @@ emergency_shell()
+ _ctty=/dev/$_ctty
+ fi
+ [ -c "$_ctty" ] || _ctty=/dev/tty1
+- strstr "$(setsid --help 2>/dev/null)" "ctty" && CTTY="-c"
+- setsid $CTTY /bin/sh -i -l 0<$_ctty 1>$_ctty 2>&1
++ /bin/sh -i -l 0<$_ctty 1>$_ctty 2>&1
+ else
+ warn "$action has failed. To debug this issue add \"rd.shell\" to the kernel command line."
+ # cause a kernel panic
+diff --git a/modules.d/99base/module-setup.sh b/modules.d/99base/module-setup.sh
+index 581ba93..98742f5 100755
+--- a/modules.d/99base/module-setup.sh
++++ b/modules.d/99base/module-setup.sh
+@@ -14,7 +14,7 @@ depends() {
+ install() {
+ local _d
+ dracut_install mount mknod mkdir modprobe pidof sleep chroot \
+- sed ls flock cp mv dmesg rm ln rmmod mkfifo umount readlink setsid
++ sed ls flock cp mv dmesg rm ln rmmod mkfifo umount readlink
+ dracut_install -o less
+ if [ ! -e "${initdir}/bin/sh" ]; then
+ dracut_install bash
diff --git a/dracut.spec b/dracut.spec
index b926bba..c477e79 100644
--- a/dracut.spec
+++ b/dracut.spec
@@ -1,3 +1,5 @@
+%define dracutlibdir %{_datadir}/dracut
+
# Variables must be defined
%define with_nbd 1
@@ -7,11 +9,11 @@
%endif
Name: dracut
-Version: 013
-Release: 22%{?dist}
+Version: 018
+Release: 55.git20120606%{?dist}
Summary: Initramfs generator using udev
-%if 0%{?fedora} || 0%{?rhel} > 6
+%if 0%{?fedora} || 0%{?rhel}
Group: System Environment/Base
%endif
%if 0%{?suse_version}
@@ -22,91 +24,73 @@ URL: https://dracut.wiki.kernel.org/
# Source can be generated by
# http://git.kernel.org/?p=boot/dracut/dracut.git;a=snapshot;h=%{version};sf=tgz
Source0: http://www.kernel.org/pub/linux/utils/boot/dracut/dracut-%{version}.tar.bz2
-Patch1: 0001-90dmsquash-live-dmsquash-live-root-include-fs_lib.sh.patch
-Patch2: 0002-fix-live-crash-with-livenet-installed.patch
-Patch3: 0003-dracut-functions-s-emergency-shutdown-shutdown-emerg.patch
-Patch4: 0004-dracut-functions-speed-up-inst_dir.patch
-Patch5: 0005-dracut-functions-new-function-inst_any-d-dest-f1-f2-.patch
-Patch6: 0006-dracut-functions-fix-inst_dir-for-non-absolute-dirs.patch
-Patch7: 0007-90mdraid-65-md-incremental-imsm.rules-incremental-ru.patch
-Patch8: 0008-build-initramfs-unclear-_mpargs-in-instmods.patch
-Patch9: 0009-99base-init-save-and-restore-environment-given-from-.patch
-Patch10: 0010-dracut-functions-hmac-checksum-files-can-be-symlinks.patch
-Patch11: 0011-95udev-rules-add-input_id.patch
-Patch12: 0012-inst_simple-inst_dir-make-fast-case-faster.patch
-Patch13: 0013-filter_kernel_modules-is-a-specialized-filter_kernel.patch
-Patch14: 0014-install_kmod_with_fw-make-fast-case-faster.patch
-Patch15: 0015-instmods-get-filenames-from-stdin-if-no-args-use-it.patch
-Patch16: 0016-instmods-sanity-for-_mpargs.patch
-Patch17: 0017-instmods-factor-out-egrep-of-FATAL-Module-.-not-foun.patch
-Patch18: 0018-99base-init-do-not-fail-when-importing-the-original-.patch
-Patch19: 0019-dracut-cp-with-sparse.patch
-Patch20: 0020-dmsquash-live-root-use-blkid-to-determine-fstype-of-.patch
-Patch21: 0021-dmsquash-live-root-load-filesystem-modules-before-mo.patch
-Patch22: 0022-99base-init-remove-dev-root-helper-symlink.patch
-Patch23: 0023-Do-not-use-run-udev-rules.d-for-udev-rules.patch
-Patch24: 0024-99base-init-mount-securityfs-with-source-securityfs-.patch
-Patch25: 0025-mount-securityfs-in-a-seperate-dracut-module.patch
-Patch26: 0026-mount-securityfs-in-a-seperate-dracut-module.patch
-Patch27: 0027-90mdraid-adjust-stock-mdadm-udev-rules.patch
-Patch28: 0028-90mdraid-containers-are-not-runnable.patch
-Patch29: 0029-90mdraid-fix-adjust-mdraid-cleanup.patch
-Patch30: 0030-90mdraid-fix-adjust-force-run-script.patch
-Patch31: 0031-90-md-dm-raid-recognize-ddf-container.patch
-Patch32: 0032-90mdraid-fix-adjust-65-md-rules-and-related-scripts.patch
-Patch33: 0033-TEST-40-NBD-relaxed-check-on-ext3-filesystem-options.patch
-Patch34: 0034-99fs-lib-fs-lib.sh-fsck-btrfs-via-mounting-like-xfs.patch
-Patch35: 0035-dracut-functions-inst_rules-do-not-check-std-dirs-fo.patch
-Patch36: 0036-str_replace-fix.patch
-Patch37: 0037-dracut-logger-bail-out-early-if-we-don-t-have-to-log.patch
-Patch38: 0038-dracut-create-dev-besides-proc-sys-and-so.patch
-Patch39: 0039-99fs-lib-export-FSTAB_FILE-before-fsck-call.patch
-Patch40: 0040-dracut-functions-inst_rules-add-missing.patch
-Patch41: 0041-90mdraid-check-precisely-for-supported-contaiers.patch
-Patch42: 0042-90mdraid-more-thorough-64-md-raid.rules-edit.patch
-Patch43: 0043-90mdraid-adjust-dev-md-loops.patch
-Patch44: 0044-dracut-PATCH-Parameter-expansion-occurs-before-comma.patch
-Patch45: 0045-order-mdadm-and-lvm-timeout-operations.patch
-Patch46: 0046-90mdraid-mdraid_start.sh-fix-path-to-md-sysfs.patch
-Patch47: 0047-90mdraid-module-setup.sh-fixed-sed-arguments.patch
-Patch48: 0048-convert_abs_rel-fixups.patch
-Patch49: 0049-dracut-functions-conv-normalize-minor-corrections.patch
-Patch50: 0050-dracut-lib.sh-fix-dropped-backslashes-in-CMDLINE.patch
-Patch51: 0051-90livenet-check-for-wget.patch
-Patch52: 0052-dracut-logger-re-set-debugging.patch
-Patch53: 0053-dracut-functions-inst_dir-handle-relative-symlinks.patch
-Patch54: 0054-90livenet-module-setup.sh-silence-check-for-wget.patch
-Patch55: 0055-90livenet-do-not-install-by-default.patch
-Patch56: 0056-dracut-functions-do-not-install-files-from-current-d.patch
-Patch57: 0057-inst_script-should-call-inst_simple-750603.patch
-Patch58: 0058-dracut.spec-fixed-rhel-fedora-version-checks.patch
-Patch59: 0059-dracut.spec-apply-patches-with-git.patch
-Patch60: 0060-Makefile-git2spec.pl-use-temporary-builddir.patch
-Patch61: 0061-90kernel-modules-module-setup.sh-include-usb-mass-st.patch
-Patch62: 0062-90mdraid-remove-mdadm_auto.sh-completly.patch
-Patch63: 0063-cryptroot-ask.sh-use-key-file-if-specified-in-cryptt.patch
-Patch64: 0064-90mdraid-wait-for-md-devices-to-become-clean.patch
-Patch65: 0065-99base-init-only-poll-cdroms-if-the-kernel-does-supp.patch
-Patch66: 0066-99base-init-removed-cdrom-polling-reset-code.patch
-Patch67: 0067-99base-init-fix-check-for-in-kernel-polling.patch
-Patch68: 0068-dracut-add-install_items-to-dracut.conf.patch
-Patch69: 0069-git2spec.pl-strip-path-from-patches.patch
-Patch70: 0070-90kernel-modules-module-setup.sh-install-modules.ord.patch
-Patch71: 0071-Revert-90mdraid-wait-for-md-devices-to-become-clean.patch
-Patch72: 0072-add-30convertfs.patch
-Patch73: 0073-90mdraid-add-offroot-support.patch
+Patch1: 0001-dracut-lib-add-str_ends-to-go-along-with-str_starts.patch
+Patch2: 0002-run-setup_net-at-start-of-initqueue-online-hook.patch
+Patch3: 0003-network-add-save_netinfo-fix-problems-with-nfs-NM-ta.patch
+Patch4: 0004-Make-splitsep-work-as-documented-with-less-vars-than.patch
+Patch5: 0005-shutdown-use-emergency_shell-from-dracut-lib.patch
+Patch6: 0006-rootfs-block-avoid-remount-when-options-don-t-change.patch
+Patch7: 0007-Debian-multiarch-support.patch
+Patch8: 0008-dracut.sh-log-installed-modules-to-initdir-lib-dracu.patch
+Patch9: 0009-lvm-disable-lvmetad.patch
+Patch10: 0010-udev-rules-remove-01-ignore.rules.patch
+Patch11: 0011-lsinitrd-support-symlinks.patch
+Patch12: 0012-dracut.cmdline.7.asc-document-resume-option.patch
+Patch13: 0013-dracut.spec-do-not-include-IMA-and-selinux-modules-w.patch
+Patch14: 0014-Do-not-run-plymouth-hook-if-the-binary-is-missing.patch
+Patch15: 0015-man-Fix-add-fstab-option-in-man-page.patch
+Patch16: 0016-base-init.sh-mount-tmpfs-with-strictatime.patch
+Patch17: 0017-99shutdown-shutdown.sh-export-PATH.patch
+Patch18: 0018-Makefile-do-not-install-systemd-service-in-reboot.patch
+Patch19: 0019-network-module-setup.sh-include-all-kernel-drivers-n.patch
+Patch20: 0020-add-pre-pivot-cleanup-hook.patch
+Patch21: 0021-move-cleanup-scripts-to-pre-pivot-cleanup-hook.patch
+Patch22: 0022-network-parse-ip-opts.sh-remove-check-for-netroot.patch
+Patch23: 0023-ifcfg-write-DNS1-.-for-nameserver-args-RHBZ-815369.patch
+Patch24: 0024-url-lib-don-t-add-existing-handlers-multiple-times.patch
+Patch25: 0025-url-lib-don-t-use-progress-bar-if-TERM-dumb-RHBZ-814.patch
+Patch26: 0026-iscsi-module-setup.sh-fix-host-only-mount-checks.patch
+Patch27: 0027-multipath-module-setup.sh-fix-host-only-mount-checks.patch
+Patch28: 0028-fix-_getcmdline-arg-duplicating-bug-with-etc-cmdline.patch
+Patch29: 0029-ifcfg-fix-resolv.conf.patch
+Patch30: 0030-TEST-15-BTRFSRAID-add-one-more-partition-to-the-btrf.patch
+Patch31: 0031-ifcfg-write-ifcfg.sh-use-PREFIX-for-prefix-netmask-f.patch
+Patch32: 0032-Fail-to-boot-if-mediacheck-fails-817419.patch
+Patch33: 0033-ifcfg-write-ifcfg.sh-add-s390-specific-configuration.patch
+Patch34: 0034-Makefile-call-git2spec.pl-with-LANG-C.patch
+Patch35: 0035-ARM-make-sure-that-we-get-the-storage-modules-into-t.patch
+Patch36: 0036-Use-the-right-argument-for-dasd-module-options.patch
+Patch37: 0037-Translate-dasd-arg-contents-into-proper-dasd.conf.patch
+Patch38: 0038-Normalize-dasd-argument-content-for-dasd.conf.patch
+Patch39: 0039-ifcfg-write-ifcfg.sh-fixed-IFS-resetting.patch
+Patch40: 0040-Relax-the-rules-for-kdump-we-don-t-specify-netroot-i.patch
+Patch41: 0041-url-lib-url-lib.sh-disable-curl-progress-bar.patch
+Patch42: 0042-network-ifup.sh-do-not-default-to-dhcp-for-interface.patch
+Patch43: 0043-network-do-not-arping-with-qeth-layer3-interfaces.patch
+Patch44: 0044-dracut-shutdown.service-do-not-unpack-old-initramfs-.patch
+Patch45: 0045-crypt-add-rd.luks.allow-discards-and-honor-options-i.patch
+Patch46: 0046-dasd_mod-parse-dasd-mod.sh-fixed-dasd_mod-param-gene.patch
+Patch47: 0047-fix-return-value-of-some-installkernel-functions.patch
+Patch48: 0048-dracut.sh-do-not-rely-on-the-presence-of-lib64-check.patch
+Patch49: 0049-Don-t-set-an-already-set-attribute-826357.patch
+Patch50: 0050-add-filesystem-options-to-fsck_single.patch
+Patch51: 0051-dasd_mod-change-rd.dasd-to-dasd_mod-kernel-parameter.patch
+Patch52: 0052-dracut.spec-remove-typo-from-BuildRequires-for-suse.patch
+Patch53: 0053-move-dracut-back-to-usr-share.patch
+Patch54: 0054-removed-setsid-and-util-linux-2.21-requirement.patch
BuildArch: noarch
BuildRequires: dash bash git
-%if 0%{?fedora} || 0%{?rhel} > 6
+
+%if 0%{?fedora} || 0%{?rhel}
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
%endif
%if 0%{?suse_version}
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%endif
-%if 0%{?fedora} || 0%{?rhel} > 6
+%if 0%{?fedora} || 0%{?rhel}
BuildRequires: docbook-style-xsl docbook-dtds libxslt
%endif
@@ -114,7 +98,9 @@ BuildRequires: docbook-style-xsl docbook-dtds libxslt
BuildRequires: docbook-xsl-stylesheets libxslt
%endif
-%if 0%{?fedora} > 12 || 0%{?rhel} >= 6
+BuildRequires: asciidoc
+
+%if 0%{?fedora} > 12 || 0%{?rhel}
# no "provides", because dracut does not offer
# all functionality of the obsoleted packages
Obsoletes: mkinitrd <= 6.0.93
@@ -123,6 +109,10 @@ Obsoletes: nash <= 6.0.93
Obsoletes: libbdevid-python <= 6.0.93
%endif
+%if 0%{?fedora} > 16 || 0%{?rhel} > 6
+BuildRequires: systemd-units
+%endif
+
%if 0%{?suse_version} > 9999
Obsoletes: mkinitrd < 2.6.1
Provides: mkinitrd = 2.6.1
@@ -132,32 +122,27 @@ Obsoletes: dracut-kernel < 005
Provides: dracut-kernel = %{version}-%{release}
Requires: bash
-Requires: bzip2
Requires: coreutils
Requires: cpio
-Requires: dash
Requires: filesystem >= 2.1.0
Requires: findutils
Requires: grep
-Requires: gzip
-Requires: kbd
-Requires: mktemp >= 1.5-5
+Requires: hardlink
+Requires: gzip xz
Requires: module-init-tools >= 3.7-9
Requires: sed
-Requires: tar
-Requires: udev
-
+Requires: udev > 166
%if 0%{?fedora} || 0%{?rhel} > 6
-Requires: util-linux >= 2.16
-Requires: initscripts >= 8.63-1
-Requires: plymouth >= 0.8.0-0.2009.29.09.19.1
+Requires: util-linux >= 2.20
+%else
+Requires: util-linux-ng >= 2.20
%endif
-%if 0%{?suse_version}
-Requires: util-linux >= 2.16
+%if 0%{?fedora} || 0%{?rhel} > 6
+Conflicts: initscripts < 8.63-1
+Conflicts: plymouth < 0.8.0-0.2009.29.09.19.1
%endif
-
%description
Dracut contains tools to create a bootable initramfs for 2.6 Linux kernels.
Unlike existing implementations, dracut does hard-code as little as possible
@@ -168,24 +153,6 @@ NFS, iSCSI, NBD, FCoE with the dracut-network package.
%package network
Summary: Dracut modules to build a dracut initramfs with network support
Requires: %{name} = %{version}-%{release}
-Requires: rpcbind
-%if %{with_nbd}
-Requires: nbd
-%endif
-Requires: iproute
-Requires: bridge-utils
-
-%if 0%{?fedora} || 0%{?rhel} > 6
-Requires: iscsi-initiator-utils
-Requires: nfs-utils
-Requires: dhclient
-%endif
-
-%if 0%{?suse_version}
-Requires: dhcp-client
-Requires: nfs-client
-Requires: vlan
-%endif
Obsoletes: dracut-generic < 008
Provides: dracut-generic = %{version}-%{release}
@@ -193,7 +160,7 @@ Provides: dracut-generic = %{version}-%{release}
This package requires everything which is needed to build a generic
all purpose initramfs with network support with dracut.
-%if 0%{?fedora} || 0%{?rhel} > 6
+%if 0%{?fedora} || 0%{?rhel} >= 6
%package fips
Summary: Dracut modules to build a dracut initramfs with an integrity check
Requires: %{name} = %{version}-%{release}
@@ -211,6 +178,15 @@ This package requires everything which is needed to build an
all purpose initramfs with dracut, which does an integrity check.
%endif
+%package fips-aesni
+Summary: Dracut modules to build a dracut initramfs with an integrity check with aesni-intel
+Requires: %{name}-fips = %{version}-%{release}
+
+%description fips-aesni
+This package requires everything which is needed to build an
+all purpose initramfs with dracut, which does an integrity check
+and adds the aesni-intel kernel module.
+
%package caps
Summary: Dracut modules to build a dracut initramfs which drops capabilities
Requires: %{name} = %{version}-%{release}
@@ -229,6 +205,8 @@ This package contains tools to assemble the local initrd and host configuration.
%prep
%setup -q -n %{name}-%{version}
+
+%if %{defined PATCH1}
git init
git config user.email "dracut-maint at redhat.com"
git config user.name "Fedora dracut team"
@@ -237,25 +215,40 @@ git commit -a -q -m "%{version} baseline."
# Apply all the patches.
git am -p1 %{patches}
+%endif
%build
-make
+make all
%install
-%if 0%{?fedora} || 0%{?rhel} > 6
+%if 0%{?fedora} || 0%{?rhel}
rm -rf $RPM_BUILD_ROOT
%endif
-make install DESTDIR=$RPM_BUILD_ROOT sbindir=/sbin \
+make install DESTDIR=$RPM_BUILD_ROOT \
+ libdir=%{_datadir} \
+ bindir=/sbin \
+%if %{defined _unitdir}
+ systemdsystemunitdir=%{_unitdir} \
+%endif
sysconfdir=/etc mandir=%{_mandir}
-echo %{name}-%{version}-%{release} > $RPM_BUILD_ROOT/%{_datadir}/dracut/modules.d/10rpmversion/dracut-version
+echo %{name}-%{version}-%{release} > $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/10rpmversion/dracut-version
%if 0%{?fedora} == 0 && 0%{?rhel} == 0
-rm -fr $RPM_BUILD_ROOT/%{_datadir}/dracut/modules.d/01fips
+rm -fr $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/01fips
+rm -fr $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/02fips-aesni
%endif
# remove gentoo specific modules
-rm -fr $RPM_BUILD_ROOT/%{_datadir}/dracut/modules.d/50gensplash
+rm -fr $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/50gensplash
+
+%if %{defined _unitdir}
+# with systemd IMA and selinux modules do not make sense
+rm -fr $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/96securityfs
+rm -fr $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/97masterkey
+rm -fr $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/98integrity
+rm -fr $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/98selinux
+%endif
mkdir -p $RPM_BUILD_ROOT/boot/dracut
mkdir -p $RPM_BUILD_ROOT/var/lib/dracut/overlay
@@ -263,7 +256,7 @@ mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/log
touch $RPM_BUILD_ROOT%{_localstatedir}/log/dracut.log
mkdir -p $RPM_BUILD_ROOT%{_sharedstatedir}/initramfs
-%if 0%{?fedora} || 0%{?rhel} > 6
+%if 0%{?fedora} || 0%{?rhel}
install -m 0644 dracut.conf.d/fedora.conf.example $RPM_BUILD_ROOT/etc/dracut.conf.d/01-dist.conf
install -m 0644 dracut.conf.d/fips.conf.example $RPM_BUILD_ROOT/etc/dracut.conf.d/40-fips.conf
%endif
@@ -273,8 +266,8 @@ install -m 0644 dracut.conf.d/suse.conf.example $RPM_BUILD_ROOT/etc/dracut.con
%endif
%if 0%{?fedora} <= 12 && 0%{?rhel} < 6 && 0%{?suse_version} <= 9999
-rm $RPM_BUILD_ROOT/sbin/mkinitrd
-rm $RPM_BUILD_ROOT/sbin/lsinitrd
+rm $RPM_BUILD_ROOT%{_bindir}/mkinitrd
+rm $RPM_BUILD_ROOT%{_bindir}/lsinitrd
%endif
mkdir -p $RPM_BUILD_ROOT/etc/logrotate.d
@@ -291,92 +284,115 @@ rm -rf $RPM_BUILD_ROOT
/sbin/mkinitrd
/sbin/lsinitrd
%endif
-%dir %{_datadir}/dracut
-%dir %{_datadir}/dracut/modules.d
-%{_datadir}/dracut/dracut-functions
-%{_datadir}/dracut/dracut-logger
+%dir %{dracutlibdir}
+%dir %{dracutlibdir}/modules.d
+%{dracutlibdir}/dracut-functions.sh
+%{dracutlibdir}/dracut-functions
+%{dracutlibdir}/dracut-logger.sh
+%{dracutlibdir}/dracut-initramfs-restore
%config(noreplace) /etc/dracut.conf
-%if 0%{?fedora} || 0%{?suse_version} || 0%{?rhel} > 6
+%if 0%{?fedora} || 0%{?suse_version} || 0%{?rhel}
%config /etc/dracut.conf.d/01-dist.conf
%endif
%dir /etc/dracut.conf.d
%{_mandir}/man8/dracut.8*
%{_mandir}/man7/dracut.kernel.7*
+%{_mandir}/man7/dracut.cmdline.7*
%{_mandir}/man5/dracut.conf.5*
-%{_datadir}/dracut/modules.d/00bootchart
-%{_datadir}/dracut/modules.d/00dash
-%{_datadir}/dracut/modules.d/05busybox
-%{_datadir}/dracut/modules.d/10i18n
-%{_datadir}/dracut/modules.d/10rpmversion
-%{_datadir}/dracut/modules.d/30convertfs
-%{_datadir}/dracut/modules.d/50plymouth
-%{_datadir}/dracut/modules.d/60xen
-%{_datadir}/dracut/modules.d/90btrfs
-%{_datadir}/dracut/modules.d/90crypt
-%{_datadir}/dracut/modules.d/90dm
-%{_datadir}/dracut/modules.d/90dmraid
-%{_datadir}/dracut/modules.d/90dmsquash-live
-%{_datadir}/dracut/modules.d/90kernel-modules
-%{_datadir}/dracut/modules.d/90lvm
-%{_datadir}/dracut/modules.d/90mdraid
-%{_datadir}/dracut/modules.d/90multipath
-%{_datadir}/dracut/modules.d/91crypt-gpg
-%{_datadir}/dracut/modules.d/95debug
-%{_datadir}/dracut/modules.d/95resume
-%{_datadir}/dracut/modules.d/95rootfs-block
-%{_datadir}/dracut/modules.d/95dasd
-%{_datadir}/dracut/modules.d/95dasd_mod
-%{_datadir}/dracut/modules.d/95fstab-sys
-%{_datadir}/dracut/modules.d/95zfcp
-%{_datadir}/dracut/modules.d/95terminfo
-%{_datadir}/dracut/modules.d/95udev-rules
-%{_datadir}/dracut/modules.d/96securityfs
-%{_datadir}/dracut/modules.d/97biosdevname
-%{_datadir}/dracut/modules.d/97masterkey
-%{_datadir}/dracut/modules.d/98ecryptfs
-%{_datadir}/dracut/modules.d/98integrity
-%{_datadir}/dracut/modules.d/98selinux
-%{_datadir}/dracut/modules.d/98syslog
-%{_datadir}/dracut/modules.d/99base
-%{_datadir}/dracut/modules.d/99fs-lib
-%{_datadir}/dracut/modules.d/99shutdown
+%{dracutlibdir}/modules.d/00bootchart
+%{dracutlibdir}/modules.d/00dash
+%{dracutlibdir}/modules.d/05busybox
+%{dracutlibdir}/modules.d/10i18n
+%{dracutlibdir}/modules.d/10rpmversion
+%{dracutlibdir}/modules.d/30convertfs
+%{dracutlibdir}/modules.d/45url-lib
+%{dracutlibdir}/modules.d/50plymouth
+%{dracutlibdir}/modules.d/80cms
+%{dracutlibdir}/modules.d/90btrfs
+%{dracutlibdir}/modules.d/90crypt
+%{dracutlibdir}/modules.d/90dm
+%{dracutlibdir}/modules.d/90dmraid
+%{dracutlibdir}/modules.d/90dmsquash-live
+%{dracutlibdir}/modules.d/90kernel-modules
+%{dracutlibdir}/modules.d/90lvm
+%{dracutlibdir}/modules.d/90mdraid
+%{dracutlibdir}/modules.d/90multipath
+%{dracutlibdir}/modules.d/91crypt-gpg
+%{dracutlibdir}/modules.d/95debug
+%{dracutlibdir}/modules.d/95resume
+%{dracutlibdir}/modules.d/95rootfs-block
+%{dracutlibdir}/modules.d/95dasd
+%{dracutlibdir}/modules.d/95dasd_mod
+%{dracutlibdir}/modules.d/95fstab-sys
+%{dracutlibdir}/modules.d/95zfcp
+%{dracutlibdir}/modules.d/95terminfo
+%{dracutlibdir}/modules.d/95udev-rules
+%if %{undefined _unitdir}
+%{dracutlibdir}/modules.d/96securityfs
+%{dracutlibdir}/modules.d/97masterkey
+%{dracutlibdir}/modules.d/98selinux
+%{dracutlibdir}/modules.d/98integrity
+%endif
+%{dracutlibdir}/modules.d/97biosdevname
+%{dracutlibdir}/modules.d/98ecryptfs
+%{dracutlibdir}/modules.d/98pollcdrom
+%{dracutlibdir}/modules.d/98syslog
+%{dracutlibdir}/modules.d/98usrmount
+%{dracutlibdir}/modules.d/99base
+%{dracutlibdir}/modules.d/99fs-lib
+%{dracutlibdir}/modules.d/99img-lib
+%{dracutlibdir}/modules.d/99shutdown
%config(noreplace) /etc/logrotate.d/dracut_log
%attr(0644,root,root) %ghost %config(missingok,noreplace) %{_localstatedir}/log/dracut.log
%dir %{_sharedstatedir}/initramfs
+%if %{defined _unitdir}
+%{_unitdir}/*.service
+%{_unitdir}/*/*.service
+%endif
%files network
%defattr(-,root,root,0755)
-%{_datadir}/dracut/modules.d/40network
-%{_datadir}/dracut/modules.d/95fcoe
-%{_datadir}/dracut/modules.d/95iscsi
-%{_datadir}/dracut/modules.d/90livenet
-%{_datadir}/dracut/modules.d/95nbd
-%{_datadir}/dracut/modules.d/95nfs
-%{_datadir}/dracut/modules.d/45ifcfg
-%{_datadir}/dracut/modules.d/95znet
-
-%if 0%{?fedora} || 0%{?rhel} > 6
+%{dracutlibdir}/modules.d/40network
+%{dracutlibdir}/modules.d/95fcoe
+%{dracutlibdir}/modules.d/95iscsi
+%{dracutlibdir}/modules.d/90livenet
+%{dracutlibdir}/modules.d/95nbd
+%{dracutlibdir}/modules.d/95nfs
+%{dracutlibdir}/modules.d/95ssh-client
+%{dracutlibdir}/modules.d/45ifcfg
+%{dracutlibdir}/modules.d/95znet
+
+%if 0%{?fedora} || 0%{?rhel}
%files fips
%defattr(-,root,root,0755)
-%{_datadir}/dracut/modules.d/01fips
+%{dracutlibdir}/modules.d/01fips
%config(noreplace) /etc/dracut.conf.d/40-fips.conf
%endif
+%files fips-aesni
+%defattr(-,root,root,0755)
+%doc COPYING
+%{dracutlibdir}/modules.d/02fips-aesni
+
%files caps
%defattr(-,root,root,0755)
-%{_datadir}/dracut/modules.d/02caps
+%{dracutlibdir}/modules.d/02caps
%files tools
%defattr(-,root,root,0755)
-%{_mandir}/man8/dracut-gencmdline.8*
%{_mandir}/man8/dracut-catimages.8*
-/sbin/dracut-gencmdline
/sbin/dracut-catimages
%dir /boot/dracut
%dir /var/lib/dracut
%dir /var/lib/dracut/overlay
%changelog
+* Wed Jun 06 2012 Harald Hoyer <harald at redhat.com> 018-55.git20120606
+- update to F17 version
+- support for /usr mounting in the initramfs
+- better hostonly support
+- faster image creation
+
* Mon Mar 26 2012 Harald Hoyer <harald at redhat.com> 013-22
- added convertfs dracut module
- added mdraid --offroot support
More information about the scm-commits
mailing list