[dracut] dracut-019-92.git20120625

Harald Hoyer harald at fedoraproject.org
Mon Jun 25 12:08:34 UTC 2012


commit 53e9906e08886c6a359389f3b52660c841a58f26
Author: Harald Hoyer <harald at redhat.com>
Date:   Mon Jun 25 14:08:03 2012 +0200

    dracut-019-92.git20120625
    
    - support vlan tagged binding
    - speedup initramfs emergency service
    - speedup image creation
    - fix installkernel() return codes
    Resolves: rhbz#833256
    - add qemu and qemu-net modules to add qemu drivers even in host-only
    - speedup btrfs and xfs fsck (nop)
    - no more mknod in the initramfs (fixes plymouth on s390)

 0062-network-support-vlan-tagged-bonding.patch     |   71 +++++++++++
 ...ystemd-emergency.service-remove-Type-idle.patch |   22 ++++
 ...-ConditionPathExists-etc-initrd-release-t.patch |   74 ++++++++++++
 0065-dracut-functions.sh-replace-strstr.patch      |   23 ++++
 ...tions.sh-mksubdirs-check-for-dir-existenc.patch |   23 ++++
 ...tions.sh-cp-with-reflink-auto-and-sparse-.patch |   26 ++++
 ...rnel-modules-if-we-detect-a-qemu-instance.patch |   79 ++++++++++++
 ...tions.sh-inst_simple-do-inst_symlink-for-.patch |   43 +++++++
 ...tions.sh-inst_decompress-simplify-functio.patch |   44 +++++++
 ...tions.sh-find_kernel_modules_by_path-use-.patch |   38 ++++++
 0072-dracut.sh-speedup-strip.patch                 |   39 ++++++
 ...do-not-count-negative-timestamp-differenc.patch |   23 ++++
 ...ib.sh-removed-test-mounting-of-btrfs-and-.patch |   84 +++++++++++++
 0075-base-module-setup.sh-use-force-for-ln.patch   |   43 +++++++
 ...ule-setup.sh-only-create-empty-machine-id.patch |   25 ++++
 0077-systemd-module-setup.sh-ln-with-force.patch   |   50 ++++++++
 ...-setup.sh-install_all_kbd-speedup-install.patch |   26 ++++
 ...module-setup.sh-no-need-for-mknod-anymore.patch |   21 ++++
 0080-no-more-mknod-in-the-initramfs.patch          |   62 ++++++++++
 ...-udev-rules-module-setup.sh-ln-with-force.patch |   22 ++++
 ...dule-setup.sh-speedup-install-of-all-term.patch |   25 ++++
 ...ule-setup.sh-fixed-installkernel-return-c.patch |   45 +++++++
 ...csi-module-setup.sh-speedup-installkernel.patch |   61 ++++++++++
 ...dule-setup.sh-installkernel-fix-return-co.patch |   24 ++++
 ...les-module-setup.sh-installkernel-fix-ret.patch |   38 ++++++
 ...odule-setup.sh-installkernel-fix-return-c.patch |   68 +++++++++++
 ...odule-setup.sh-no-more-sourcing-of-dracut.patch |  127 ++++++++++++++++++++
 ...cut-logger.sh-use-for-numeric-comparisons.patch |   80 ++++++++++++
 ...er.sh-empty-functions-for-log-funcs-which.patch |   54 ++++++++
 ...t.sh-do-not-copy-devices-nodes-mknod-them.patch |   27 ++++
 dracut.spec                                        |   44 +++++++-
 31 files changed, 1430 insertions(+), 1 deletions(-)
---
diff --git a/0062-network-support-vlan-tagged-bonding.patch b/0062-network-support-vlan-tagged-bonding.patch
new file mode 100644
index 0000000..be70150
--- /dev/null
+++ b/0062-network-support-vlan-tagged-bonding.patch
@@ -0,0 +1,71 @@
+From 472edf825e478826bc7735961961576fe7c94c5f Mon Sep 17 00:00:00 2001
+From: Cong Wang <xiyou.wangcong at gmail.com>
+Date: Thu, 21 Jun 2012 11:44:35 +0800
+Subject: [PATCH] network: support vlan tagged bonding
+
+This patch adds support of vlan tagged bonding, for example,
+bond0.2. In case of regression, I also tested bond0 and eth0.2,
+all work fine.
+
+Cc: Harald Hoyer <harald at redhat.com>
+Cc: Dave Young <dyoung at redhat.com>
+Cc: Vivek Goyal <vgoyal at redhat.com>
+Signed-off-by: Cong Wang <xiyou.wangcong at gmail.com>
+---
+ modules.d/40network/ifup.sh         |    8 ++++++--
+ modules.d/40network/net-genrules.sh |    6 +++---
+ 2 files changed, 9 insertions(+), 5 deletions(-)
+
+diff --git a/modules.d/40network/ifup.sh b/modules.d/40network/ifup.sh
+index 31eb966..316a21a 100755
+--- a/modules.d/40network/ifup.sh
++++ b/modules.d/40network/ifup.sh
+@@ -188,7 +188,7 @@ if [ -e /tmp/bridge.info ]; then
+         brctl setfd $bridgename 0
+         for ethname in $ethnames ; do
+             if [ "$ethname" = "$bondname" ] ; then
+-                DO_BOND_SETUP=yes ifup $bondname
++                DO_BOND_SETUP=yes ifup $bondname -m
+             else
+                 ip link set $ethname up
+             fi
+@@ -211,7 +211,11 @@ get_vid() {
+ 
+ if [ "$netif" = "$vlanname" ] && [ ! -e /tmp/net.$vlanname.up ]; then
+     modprobe 8021q
+-    ip link set "$phydevice" up
++    if [ "$phydevice" = "$bondname" ] ; then
++        DO_BOND_SETUP=yes ifup $phydevice -m
++    else
++        ip link set "$phydevice" up
++    fi
+     wait_for_if_up "$phydevice"
+     ip link add dev "$vlanname" link "$phydevice" type vlan id "$(get_vid $vlanname; echo $?)"
+ fi
+diff --git a/modules.d/40network/net-genrules.sh b/modules.d/40network/net-genrules.sh
+index 99d0fe5..867abcf 100755
+--- a/modules.d/40network/net-genrules.sh
++++ b/modules.d/40network/net-genrules.sh
+@@ -21,19 +21,19 @@ fix_bootif() {
+     # bridge: attempt only the defined interface
+     if [ -e /tmp/bridge.info ]; then
+         . /tmp/bridge.info
+-        IFACES=${ethnames%% *}
++        IFACES+=" ${ethnames%% *}"
+     fi
+ 
+     # bond: attempt only the defined interface (override bridge defines)
+     if [ -e /tmp/bond.info ]; then
+         . /tmp/bond.info
+         # It is enough to fire up only one
+-        IFACES=${bondslaves%% *}
++        IFACES+=" ${bondslaves%% *}"
+     fi
+ 
+     if [ -e /tmp/vlan.info ]; then
+         . /tmp/vlan.info
+-        IFACES=$phydevice
++        IFACES+=" $phydevice"
+     fi
+ 
+     ifup='/sbin/ifup $env{INTERFACE}'
diff --git a/0063-systemd-emergency.service-remove-Type-idle.patch b/0063-systemd-emergency.service-remove-Type-idle.patch
new file mode 100644
index 0000000..41089a0
--- /dev/null
+++ b/0063-systemd-emergency.service-remove-Type-idle.patch
@@ -0,0 +1,22 @@
+From e3295047b101a9a92c8548909cd18b2675bc9977 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald at redhat.com>
+Date: Thu, 21 Jun 2012 13:51:49 +0200
+Subject: [PATCH] systemd/emergency.service: remove Type=idle
+
+Type=idle might cause a 3 second delay.
+---
+ modules.d/98systemd/emergency.service |    1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/modules.d/98systemd/emergency.service b/modules.d/98systemd/emergency.service
+index 431e2b0..b79af22 100644
+--- a/modules.d/98systemd/emergency.service
++++ b/modules.d/98systemd/emergency.service
+@@ -18,7 +18,6 @@ ExecStartPre=-/bin/plymouth quit
+ ExecStartPre=-/bin/echo -e '\n\nEntering emergency mode. Exit the shell to continue.\nType "journalctl" to view system logs.\n'
+ ExecStart=-/bin/sh -i -l
+ ExecStopPost=-/bin/rm -f /.console_lock
+-Type=idle
+ StandardInput=tty-force
+ StandardOutput=inherit
+ StandardError=inherit
diff --git a/0064-systemd-add-ConditionPathExists-etc-initrd-release-t.patch b/0064-systemd-add-ConditionPathExists-etc-initrd-release-t.patch
new file mode 100644
index 0000000..1339172
--- /dev/null
+++ b/0064-systemd-add-ConditionPathExists-etc-initrd-release-t.patch
@@ -0,0 +1,74 @@
+From d17e0fcd431e823c3f93bbcff8e853578d6bfdc9 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald at redhat.com>
+Date: Thu, 21 Jun 2012 14:10:41 +0200
+Subject: [PATCH] systemd: add ConditionPathExists=/etc/initrd-release to
+ services
+
+---
+ modules.d/98systemd/dracut-cmdline.service     |    1 +
+ modules.d/98systemd/dracut-initqueue.service   |    1 +
+ modules.d/98systemd/dracut-pre-pivot.service   |    1 +
+ modules.d/98systemd/dracut-pre-trigger.service |    1 +
+ modules.d/98systemd/dracut-pre-udev.service    |    1 +
+ 5 files changed, 5 insertions(+)
+
+diff --git a/modules.d/98systemd/dracut-cmdline.service b/modules.d/98systemd/dracut-cmdline.service
+index 938ccbe..c84f62b 100644
+--- a/modules.d/98systemd/dracut-cmdline.service
++++ b/modules.d/98systemd/dracut-cmdline.service
+@@ -23,6 +23,7 @@ StandardInput=null
+ StandardOutput=syslog
+ StandardError=syslog+console
+ KillMode=process
++ConditionPathExists=/etc/initrd-release
+ 
+ # Bash ignores SIGTERM, so we send SIGHUP instead, to ensure that bash
+ # terminates cleanly.
+diff --git a/modules.d/98systemd/dracut-initqueue.service b/modules.d/98systemd/dracut-initqueue.service
+index 31fe9e4..4fde539 100644
+--- a/modules.d/98systemd/dracut-initqueue.service
++++ b/modules.d/98systemd/dracut-initqueue.service
+@@ -22,6 +22,7 @@ StandardInput=null
+ StandardOutput=syslog
+ StandardError=syslog+console
+ KillMode=process
++ConditionPathExists=/etc/initrd-release
+ 
+ # Bash ignores SIGTERM, so we send SIGHUP instead, to ensure that bash
+ # terminates cleanly.
+diff --git a/modules.d/98systemd/dracut-pre-pivot.service b/modules.d/98systemd/dracut-pre-pivot.service
+index e61750b..38d252d 100644
+--- a/modules.d/98systemd/dracut-pre-pivot.service
++++ b/modules.d/98systemd/dracut-pre-pivot.service
+@@ -21,6 +21,7 @@ StandardInput=null
+ StandardOutput=syslog
+ StandardError=syslog+console
+ KillMode=process
++ConditionPathExists=/etc/initrd-release
+ 
+ # Bash ignores SIGTERM, so we send SIGHUP instead, to ensure that bash
+ # terminates cleanly.
+diff --git a/modules.d/98systemd/dracut-pre-trigger.service b/modules.d/98systemd/dracut-pre-trigger.service
+index b06d17f..97c505d 100644
+--- a/modules.d/98systemd/dracut-pre-trigger.service
++++ b/modules.d/98systemd/dracut-pre-trigger.service
+@@ -23,6 +23,7 @@ StandardInput=null
+ StandardOutput=syslog
+ StandardError=syslog+console
+ KillMode=process
++ConditionPathExists=/etc/initrd-release
+ 
+ # Bash ignores SIGTERM, so we send SIGHUP instead, to ensure that bash
+ # terminates cleanly.
+diff --git a/modules.d/98systemd/dracut-pre-udev.service b/modules.d/98systemd/dracut-pre-udev.service
+index d867b38..9b83e3e 100644
+--- a/modules.d/98systemd/dracut-pre-udev.service
++++ b/modules.d/98systemd/dracut-pre-udev.service
+@@ -23,6 +23,7 @@ StandardInput=null
+ StandardOutput=syslog
+ StandardError=syslog+console
+ KillMode=process
++ConditionPathExists=/etc/initrd-release
+ 
+ # Bash ignores SIGTERM, so we send SIGHUP instead, to ensure that bash
+ # terminates cleanly.
diff --git a/0065-dracut-functions.sh-replace-strstr.patch b/0065-dracut-functions.sh-replace-strstr.patch
new file mode 100644
index 0000000..86a1b2d
--- /dev/null
+++ b/0065-dracut-functions.sh-replace-strstr.patch
@@ -0,0 +1,23 @@
+From bc616b4d5660d8d79465202bdc3a1b43b4ea3ba1 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald at redhat.com>
+Date: Fri, 22 Jun 2012 08:57:20 +0200
+Subject: [PATCH] dracut-functions.sh: replace strstr()
+
+the new strstr() is faster, when compared
+---
+ dracut-functions.sh |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/dracut-functions.sh b/dracut-functions.sh
+index d4a766b..ace5a0b 100755
+--- a/dracut-functions.sh
++++ b/dracut-functions.sh
+@@ -21,7 +21,7 @@
+ #
+ 
+ # Generic substring function.  If $2 is in $1, return 0.
+-strstr() { [ "${1#*$2*}" != "$1" ]; }
++strstr() { [[ $1 = *$2* ]]; }
+ 
+ if ! [[ $dracutbasedir ]]; then
+     dracutbasedir=${BASH_SOURCE[0]%/*}
diff --git a/0066-dracut-functions.sh-mksubdirs-check-for-dir-existenc.patch b/0066-dracut-functions.sh-mksubdirs-check-for-dir-existenc.patch
new file mode 100644
index 0000000..9084fdf
--- /dev/null
+++ b/0066-dracut-functions.sh-mksubdirs-check-for-dir-existenc.patch
@@ -0,0 +1,23 @@
+From 68966a1d7e6dc9d6be054effa62d61836704714b Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald at redhat.com>
+Date: Fri, 22 Jun 2012 08:58:39 +0200
+Subject: [PATCH] dracut-functions.sh: mksubdirs(): check for dir existence
+ first
+
+---
+ dracut-functions.sh |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/dracut-functions.sh b/dracut-functions.sh
+index ace5a0b..3b562e7 100755
+--- a/dracut-functions.sh
++++ b/dracut-functions.sh
+@@ -74,7 +74,7 @@ fi
+ 
+ # Create all subdirectories for given path without creating the last element.
+ # $1 = path
+-mksubdirs() { mkdir -m 0755 -p ${1%/*}; }
++mksubdirs() { [[ -e ${1%/*} ]] || mkdir -m 0755 -p ${1%/*}; }
+ 
+ # Version comparision function.  Assumes Linux style version scheme.
+ # $1 = version a
diff --git a/0067-dracut-functions.sh-cp-with-reflink-auto-and-sparse-.patch b/0067-dracut-functions.sh-cp-with-reflink-auto-and-sparse-.patch
new file mode 100644
index 0000000..fe8d509
--- /dev/null
+++ b/0067-dracut-functions.sh-cp-with-reflink-auto-and-sparse-.patch
@@ -0,0 +1,26 @@
+From f550ba07400662633295c9681a80787fc44e61fa Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald at redhat.com>
+Date: Fri, 22 Jun 2012 08:59:22 +0200
+Subject: [PATCH] dracut-functions.sh: cp with --reflink=auto and
+ --sparse=auto
+
+cp will use COW data copy most of the time. So, it's even better than
+hardlink, because we don't have to care about hardlinks, when modifying
+files in post.
+---
+ dracut-functions.sh |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/dracut-functions.sh b/dracut-functions.sh
+index 3b562e7..b9ce688 100755
+--- a/dracut-functions.sh
++++ b/dracut-functions.sh
+@@ -435,7 +435,7 @@ inst_simple() {
+         inst "${_src%/*}/.${_src##*/}.hmac" "${target%/*}/.${target##*/}.hmac"
+     fi
+     ddebug "Installing $_src"
+-    cp --sparse=always -pfL "$_src" "${initdir}/$target"
++    cp --reflink=auto --sparse=auto -pfL "$_src" "${initdir}/$target"
+ }
+ 
+ # find symlinks linked to given library file
diff --git a/0068-Add-qemu-kernel-modules-if-we-detect-a-qemu-instance.patch b/0068-Add-qemu-kernel-modules-if-we-detect-a-qemu-instance.patch
new file mode 100644
index 0000000..74ee576
--- /dev/null
+++ b/0068-Add-qemu-kernel-modules-if-we-detect-a-qemu-instance.patch
@@ -0,0 +1,79 @@
+From a6b48b4c239d8ebacf545c27aa801ba0f8762a2b Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald at redhat.com>
+Date: Fri, 22 Jun 2012 14:50:06 +0200
+Subject: [PATCH] Add qemu kernel modules, if we detect a qemu instance
+
+Regardless of the host-only setting, add all know kernel driver for qemu
+instances to support changing the virtual hardware.
+---
+ dracut.spec                          |    2 ++
+ modules.d/90qemu-net/module-setup.sh |   16 ++++++++++++++++
+ modules.d/90qemu/module-setup.sh     |   16 ++++++++++++++++
+ 3 files changed, 34 insertions(+)
+ create mode 100755 modules.d/90qemu-net/module-setup.sh
+ create mode 100755 modules.d/90qemu/module-setup.sh
+
+diff --git a/dracut.spec b/dracut.spec
+index 982a66d..b19d15b 100644
+--- a/dracut.spec
++++ b/dracut.spec
+@@ -271,6 +271,7 @@ rm -rf $RPM_BUILD_ROOT
+ %{dracutlibdir}/modules.d/90lvm
+ %{dracutlibdir}/modules.d/90mdraid
+ %{dracutlibdir}/modules.d/90multipath
++%{dracutlibdir}/modules.d/90qemu
+ %{dracutlibdir}/modules.d/91crypt-gpg
+ %{dracutlibdir}/modules.d/95debug
+ %{dracutlibdir}/modules.d/95resume
+@@ -313,6 +314,7 @@ rm -rf $RPM_BUILD_ROOT
+ %{dracutlibdir}/modules.d/95fcoe
+ %{dracutlibdir}/modules.d/95iscsi
+ %{dracutlibdir}/modules.d/90livenet
++%{dracutlibdir}/modules.d/90qemu-net
+ %{dracutlibdir}/modules.d/95nbd
+ %{dracutlibdir}/modules.d/95nfs
+ %{dracutlibdir}/modules.d/95ssh-client
+diff --git a/modules.d/90qemu-net/module-setup.sh b/modules.d/90qemu-net/module-setup.sh
+new file mode 100755
+index 0000000..3d61792
+--- /dev/null
++++ b/modules.d/90qemu-net/module-setup.sh
+@@ -0,0 +1,16 @@
++#!/bin/bash
++# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
++# ex: ts=8 sw=4 sts=4 et filetype=sh
++
++check() {
++    vm=$(systemd-detect-virt --vm)
++    (($? != 0)) && return 255
++    [[ $vm = "qemu" ]] && return 0
++    [[ $vm = "kvm" ]] && return 0
++    return 255
++}
++
++installkernel() {
++    # qemu specific modules
++    hostonly='' instmods virtio_net e1000 8139cp pcnet32 e100 ne2k_pci
++}
+diff --git a/modules.d/90qemu/module-setup.sh b/modules.d/90qemu/module-setup.sh
+new file mode 100755
+index 0000000..094f5a3
+--- /dev/null
++++ b/modules.d/90qemu/module-setup.sh
+@@ -0,0 +1,16 @@
++#!/bin/bash
++# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
++# ex: ts=8 sw=4 sts=4 et filetype=sh
++
++check() {
++    vm=$(systemd-detect-virt --vm)
++    (($? != 0)) && return 255
++    [[ $vm = "qemu" ]] && return 0
++    [[ $vm = "kvm" ]] && return 0
++    return 255
++}
++
++installkernel() {
++        # qemu specific modules
++        hostonly='' instmods virtio_blk virtio virtio_ring virtio_pci ata_piix ata_generic pata_acpi cdrom sr_mod ahci virtio_scsi
++}
diff --git a/0069-dracut-functions.sh-inst_simple-do-inst_symlink-for-.patch b/0069-dracut-functions.sh-inst_simple-do-inst_symlink-for-.patch
new file mode 100644
index 0000000..c163fad
--- /dev/null
+++ b/0069-dracut-functions.sh-inst_simple-do-inst_symlink-for-.patch
@@ -0,0 +1,43 @@
+From 7953a6ab718185096e5729482f91b319d4a67e90 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald at redhat.com>
+Date: Fri, 22 Jun 2012 15:09:07 +0200
+Subject: [PATCH] dracut-functions.sh:inst_simple() do inst_symlink for
+ symlinks
+
+---
+ dracut-functions.sh |   17 ++++++++++-------
+ 1 file changed, 10 insertions(+), 7 deletions(-)
+
+diff --git a/dracut-functions.sh b/dracut-functions.sh
+index b9ce688..273d2a5 100755
+--- a/dracut-functions.sh
++++ b/dracut-functions.sh
+@@ -424,18 +424,21 @@ inst_simple() {
+     [[ -f "$1" ]] || return 1
+     strstr "$1" "/" || return 1
+ 
+-    local _src=$1 target="${2:-$1}"
+-    if ! [[ -d ${initdir}/$target ]]; then
+-        [[ -e ${initdir}/$target ]] && return 0
+-        [[ -L ${initdir}/$target ]] && return 0
+-        [[ -d "${initdir}/${target%/*}" ]] || inst_dir "${target%/*}"
++    local _src=$1 _target="${2:-$1}"
++
++    [[ -L $_src ]] && return inst_symlink $_src $_target
++
++    if ! [[ -d ${initdir}/$_target ]]; then
++        [[ -e ${initdir}/$_target ]] && return 0
++        [[ -L ${initdir}/$_target ]] && return 0
++        [[ -d "${initdir}/${_target%/*}" ]] || inst_dir "${_target%/*}"
+     fi
+     # install checksum files also
+     if [[ -e "${_src%/*}/.${_src##*/}.hmac" ]]; then
+-        inst "${_src%/*}/.${_src##*/}.hmac" "${target%/*}/.${target##*/}.hmac"
++        inst "${_src%/*}/.${_src##*/}.hmac" "${_target%/*}/.${_target##*/}.hmac"
+     fi
+     ddebug "Installing $_src"
+-    cp --reflink=auto --sparse=auto -pfL "$_src" "${initdir}/$target"
++    cp --reflink=auto --sparse=auto -pfL "$_src" "${initdir}/$_target"
+ }
+ 
+ # find symlinks linked to given library file
diff --git a/0070-dracut-functions.sh-inst_decompress-simplify-functio.patch b/0070-dracut-functions.sh-inst_decompress-simplify-functio.patch
new file mode 100644
index 0000000..a047130
--- /dev/null
+++ b/0070-dracut-functions.sh-inst_decompress-simplify-functio.patch
@@ -0,0 +1,44 @@
+From 04569ec8da0a553a7e4dfd37ce1d62508e3441eb Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald at redhat.com>
+Date: Fri, 22 Jun 2012 15:09:45 +0200
+Subject: [PATCH] dracut-functions.sh:inst_decompress() simplify function
+
+---
+ dracut-functions.sh |   17 ++---------------
+ 1 file changed, 2 insertions(+), 15 deletions(-)
+
+diff --git a/dracut-functions.sh b/dracut-functions.sh
+index 273d2a5..9861bb7 100755
+--- a/dracut-functions.sh
++++ b/dracut-functions.sh
+@@ -773,7 +773,7 @@ inst_libdir_file() {
+ # Function install targets in the same paths inside overlay but decompressed
+ # and without extensions (.gz, .bz2).
+ inst_decompress() {
+-    local _src _dst _realsrc _realdst _cmd
++    local _src _cmd
+ 
+     for _src in $@
+     do
+@@ -782,20 +782,7 @@ inst_decompress() {
+             *.bz2) _cmd='bzip2 -d' ;;
+             *) return 1 ;;
+         esac
+-
+-        if [[ -L ${_src} ]]
+-        then
+-            _realsrc="$(readlink -f ${_src})" # symlink target with extension
+-            _dst="${_src%.*}" # symlink without extension
+-            _realdst="${_realsrc%.*}" # symlink target without extension
+-            mksubdirs "${initdir}/${_src}"
+-            # Create symlink without extension to target without extension.
+-            ln -sfn "${_realdst}" "${initdir}/${_dst}"
+-        fi
+-
+-        # If the source is symlink we operate on its target.
+-        [[ ${_realsrc} ]] && _src=${_realsrc}
+-        inst ${_src}
++        inst_simple ${_src}
+         # Decompress with chosen tool.  We assume that tool changes name e.g.
+         # from 'name.gz' to 'name'.
+         ${_cmd} "${initdir}${_src}"
diff --git a/0071-dracut-functions.sh-find_kernel_modules_by_path-use-.patch b/0071-dracut-functions.sh-find_kernel_modules_by_path-use-.patch
new file mode 100644
index 0000000..539cb18
--- /dev/null
+++ b/0071-dracut-functions.sh-find_kernel_modules_by_path-use-.patch
@@ -0,0 +1,38 @@
+From 48e4a9a11c3d1ccd138e8a6dbea68010f47a1359 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald at redhat.com>
+Date: Fri, 22 Jun 2012 15:10:11 +0200
+Subject: [PATCH] dracut-functions.sh:find_kernel_modules_by_path() use IFS=:
+
+For modules.dep use simpler IFS=: to read the file.
+---
+ dracut-functions.sh |    7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+diff --git a/dracut-functions.sh b/dracut-functions.sh
+index 9861bb7..cecd59a 100755
+--- a/dracut-functions.sh
++++ b/dracut-functions.sh
+@@ -1115,17 +1115,22 @@ for_each_kmod_dep() {
+ 
+ 
+ find_kernel_modules_by_path () (
++    local _OLDIFS
+     if ! [[ $hostonly ]]; then
++        _OLDIFS=$IFS
++        IFS=:
+         while read a rest; do
+             if [[ "${a##kernel}" != "$a" ]]; then
+                 [[ "${a##kernel/$1}" != "$a" ]] || continue
+             fi
+-            echo $srcmods/${a%:}
++            echo $srcmods/$a
+         done < $srcmods/modules.dep
++        IFS=$_OLDIFS
+     else
+         ( cd /sys/module; echo *; ) \
+         | xargs modinfo -F filename -k $kernel 2>/dev/null
+     fi
++    return 0
+ )
+ 
+ find_kernel_modules () {
diff --git a/0072-dracut.sh-speedup-strip.patch b/0072-dracut.sh-speedup-strip.patch
new file mode 100644
index 0000000..fe05f37
--- /dev/null
+++ b/0072-dracut.sh-speedup-strip.patch
@@ -0,0 +1,39 @@
+From 8e41fb1dfd47f99d374bf7190344400e6bb1d018 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald at redhat.com>
+Date: Fri, 22 Jun 2012 15:13:47 +0200
+Subject: [PATCH] dracut.sh: speedup "strip"
+
+---
+ dracut.sh |   12 +++++-------
+ 1 file changed, 5 insertions(+), 7 deletions(-)
+
+diff --git a/dracut.sh b/dracut.sh
+index 5600ec0..cc3669a 100755
+--- a/dracut.sh
++++ b/dracut.sh
+@@ -844,7 +844,7 @@ fi
+ 
+ # strip binaries
+ if [[ $do_strip = yes ]] ; then
+-    for p in strip grep find; do
++    for p in strip xargs find; do
+         if ! type -P $p >/dev/null; then
+             derror "Could not find '$p'. You should run $0 with '--nostrip'."
+             do_strip=no
+@@ -853,12 +853,10 @@ if [[ $do_strip = yes ]] ; then
+ fi
+ 
+ if [[ $do_strip = yes ]] ; then
+-    for f in $(find "$initdir" -type f \
+-        \( -perm -0100 -or -perm -0010 -or -perm -0001 \
+-           -or -path '*/lib/modules/*.ko' \) ); do
+-        dinfo "Stripping $f"
+-        strip -g "$f" 2>/dev/null|| :
+-    done
++    find "$initdir" -type f \
++         \( -perm -0100 -or -perm -0010 -or -perm -0001 \
++        -or -path '*/lib/modules/*.ko' \) -print0 \
++        | xargs -0 strip -g 2>/dev/null
+ fi
+ 
+ type hardlink &>/dev/null && {
diff --git a/0073-profile.py-do-not-count-negative-timestamp-differenc.patch b/0073-profile.py-do-not-count-negative-timestamp-differenc.patch
new file mode 100644
index 0000000..34614f6
--- /dev/null
+++ b/0073-profile.py-do-not-count-negative-timestamp-differenc.patch
@@ -0,0 +1,23 @@
+From b5f5a081d1b6c4c1890a26e637b10234164ab388 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald at redhat.com>
+Date: Fri, 22 Jun 2012 15:14:27 +0200
+Subject: [PATCH] profile.py: do not count negative timestamp differences
+
+---
+ profile.py |    3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/profile.py b/profile.py
+index e1d0cab..7f98a13 100644
+--- a/profile.py
++++ b/profile.py
+@@ -36,7 +36,8 @@ def gen_times(t):
+         fx=float(x[0])
+         if oldx:
+             #print fx - float(oldx[0]), x[0], x[1], oldx[0], oldx[1]
+-            yield (fx - float(oldx[0]), oldx[1])
++            if ((fx - float(oldx[0])) > 0):
++                    yield (fx - float(oldx[0]), oldx[1])
+ 
+         oldx = x
+ 
diff --git a/0074-fs-lib-fs-lib.sh-removed-test-mounting-of-btrfs-and-.patch b/0074-fs-lib-fs-lib.sh-removed-test-mounting-of-btrfs-and-.patch
new file mode 100644
index 0000000..afe5934
--- /dev/null
+++ b/0074-fs-lib-fs-lib.sh-removed-test-mounting-of-btrfs-and-.patch
@@ -0,0 +1,84 @@
+From 8f01a6a775fe9599fa8171d9cca17fb1b3c990af Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald at redhat.com>
+Date: Fri, 22 Jun 2012 15:16:55 +0200
+Subject: [PATCH] fs-lib/fs-lib.sh: removed test mounting of btrfs and xfs
+
+mount/umount check only costs time and we fail later anyway.
+mount can take very long on large filesystems. Better fail on the real
+mount.
+---
+ modules.d/99fs-lib/fs-lib.sh |   58 +++---------------------------------------
+ 1 file changed, 4 insertions(+), 54 deletions(-)
+
+diff --git a/modules.d/99fs-lib/fs-lib.sh b/modules.d/99fs-lib/fs-lib.sh
+index 75bee92..d1b7a9d 100755
+--- a/modules.d/99fs-lib/fs-lib.sh
++++ b/modules.d/99fs-lib/fs-lib.sh
+@@ -80,63 +80,13 @@ fsck_able() {
+ # note: all drivers inherit: _drv _fop _dev
+ 
+ fsck_drv_xfs() {
+-    local _ret
+-
+-    # fs must be cleanly mounted (and umounted) first, before attempting any
+-    # xfs tools - if this works, nothing else should be needed
+-    # note, that user is always dropped into the shell, if the filesystem is
+-    # not mountable or if -f flag is found among _fop
+-    mkdir -p /tmp/.xfs
+-
+-    info "trying to mount $_dev"
+-    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
+-    else
+-        _ret=4
+-        warn "*** $_dev is unmountable"
+-    fi
+-    if [ $_ret -gt 0 ] || strstr "$_fop" "-f"; then
+-        warn "*** Dropping you to a shell. You have"
+-        warn "*** xfs_repair and xfs_check (xfs_db) available."
+-        warn "*** Note that if xfs didn't mount properly, it's"
+-        warn "*** probably pretty serious condition."
+-        emergency_shell -n "(Repair filesystem)"
+-    fi
+-
+-    rm -r /tmp/.xfs
+-    return $_ret
++    # xfs fsck is not necessary... Either it mounts or not
++    return 0
+ }
+ 
+ fsck_drv_btrfs() {
+-    local _ret
+-
+-    # fs must be cleanly mounted (and umounted) first, before attempting any
+-    # btrfs tools - if this works, nothing else should be needed
+-    # note, that user is always dropped into the shell, if the filesystem is
+-    # not mountable or if -f flag is found among _fop
+-    mkdir -p /tmp/.btrfs
+-
+-    info "trying to mount $_dev"
+-    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
+-    else
+-        _ret=4
+-        warn "*** $_dev is unmountable"
+-    fi
+-    if [ $_ret -gt 0 ] || strstr "$_fop" "-f"; then
+-        warn "*** Dropping you to a shell. You have"
+-        warn "*** btrfsck available."
+-        warn "*** Note that if btrfs didn't mount properly, it's"
+-        warn "*** probably pretty serious condition."
+-        emergency_shell -n "(Repair filesystem)"
+-    fi
+-
+-    rm -r /tmp/.btrfs
+-    return $_ret
++    # btrfs fsck is not necessary... Either it mounts or not
++    return 0
+ }
+ 
+ 
diff --git a/0075-base-module-setup.sh-use-force-for-ln.patch b/0075-base-module-setup.sh-use-force-for-ln.patch
new file mode 100644
index 0000000..61c01f7
--- /dev/null
+++ b/0075-base-module-setup.sh-use-force-for-ln.patch
@@ -0,0 +1,43 @@
+From 9d6458faa41039b6e63cf08bc60fc4660563597d Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald at redhat.com>
+Date: Fri, 22 Jun 2012 15:18:45 +0200
+Subject: [PATCH] base/module-setup.sh: use --force for ln
+
+---
+ modules.d/99base/module-setup.sh |    7 ++++---
+ 1 file changed, 4 insertions(+), 3 deletions(-)
+
+diff --git a/modules.d/99base/module-setup.sh b/modules.d/99base/module-setup.sh
+index 96c18ab..75afa72 100755
+--- a/modules.d/99base/module-setup.sh
++++ b/modules.d/99base/module-setup.sh
+@@ -24,6 +24,7 @@ install() {
+     #add common users in /etc/passwd, it will be used by nfs/ssh currently
+     egrep '^root:' "$initdir/etc/passwd" 2>/dev/null || echo  'root:x:0:0::/root:/bin/sh' >> "$initdir/etc/passwd"
+     egrep '^nobody:' /etc/passwd >> "$initdir/etc/passwd"
++
+     # install our scripts and hooks
+     inst "$moddir/init.sh" "/init"
+     inst "$moddir/initqueue.sh" "/sbin/initqueue"
+@@ -43,12 +44,12 @@ install() {
+     mkdir -p "${initdir}/var"
+     [ -x /lib/systemd/systemd-timestamp ] && inst /lib/systemd/systemd-timestamp
+     if [[ $realinitpath ]]; then
+-        for i in $realinitpath; do 
++        for i in $realinitpath; do
+             echo "rd.distroinit=$i"
+         done > "${initdir}/etc/cmdline.d/distroinit.conf"
+     fi
+ 
+-    ln -s /proc/self/mounts "$initdir/etc/mtab"
++    ln -fs /proc/self/mounts "$initdir/etc/mtab"
+ 
+     if [ -e /etc/os-release ]; then
+         . /etc/os-release
+@@ -74,5 +75,5 @@ install() {
+         echo ANSI_COLOR=\"$ANSI_COLOR\"
+     } > $initdir/etc/initrd-release
+     echo dracut-$DRACUT_VERSION > $initdir/lib/dracut/dracut-$DRACUT_VERSION
+-    ln -s initrd-release $initdir/etc/os-release
++    ln -sf initrd-release $initdir/etc/os-release
+ }
diff --git a/0076-systemd-module-setup.sh-only-create-empty-machine-id.patch b/0076-systemd-module-setup.sh-only-create-empty-machine-id.patch
new file mode 100644
index 0000000..b5e8fe7
--- /dev/null
+++ b/0076-systemd-module-setup.sh-only-create-empty-machine-id.patch
@@ -0,0 +1,25 @@
+From af83b70cf27150d981844f508b55d50dd0cbc6c1 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald at redhat.com>
+Date: Fri, 22 Jun 2012 15:19:32 +0200
+Subject: [PATCH] systemd/module-setup.sh: only create empty machine-id if non
+ existing
+
+---
+ modules.d/98systemd/module-setup.sh |    4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/modules.d/98systemd/module-setup.sh b/modules.d/98systemd/module-setup.sh
+index a6e2365..206f341 100755
+--- a/modules.d/98systemd/module-setup.sh
++++ b/modules.d/98systemd/module-setup.sh
+@@ -101,7 +101,9 @@ install() {
+             /etc/vconsole.conf \
+             /etc/locale.conf
+     else
+-        > "$initdir/etc/machine-id"
++        if ! [[ -e "$initdir/etc/machine-id" ]]; then
++            > "$initdir/etc/machine-id"
++        fi
+     fi
+ 
+     ln -fs $systemdutildir/systemd "$initdir/init"
diff --git a/0077-systemd-module-setup.sh-ln-with-force.patch b/0077-systemd-module-setup.sh-ln-with-force.patch
new file mode 100644
index 0000000..ae1edad
--- /dev/null
+++ b/0077-systemd-module-setup.sh-ln-with-force.patch
@@ -0,0 +1,50 @@
+From 5e7bff1fee8f98a8444be56ca8b206ee32962a62 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald at redhat.com>
+Date: Fri, 22 Jun 2012 15:20:06 +0200
+Subject: [PATCH] systemd/module-setup.sh: ln with --force
+
+---
+ modules.d/98systemd/module-setup.sh |   12 ++++++------
+ 1 file changed, 6 insertions(+), 6 deletions(-)
+
+diff --git a/modules.d/98systemd/module-setup.sh b/modules.d/98systemd/module-setup.sh
+index 206f341..338f14d 100755
+--- a/modules.d/98systemd/module-setup.sh
++++ b/modules.d/98systemd/module-setup.sh
+@@ -116,30 +116,30 @@ install() {
+ 
+     inst "$moddir/initrd-switch-root.target" ${systemdsystemunitdir}/initrd-switch-root.target
+     inst "$moddir/initrd-switch-root.service" ${systemdsystemunitdir}/initrd-switch-root.service
+-    ln -s basic.target "${initdir}${systemdsystemunitdir}/default.target"
++    ln -fs basic.target "${initdir}${systemdsystemunitdir}/default.target"
+ 
+     mkdir -p "${initdir}${systemdsystemunitdir}/basic.target.wants"
+ 
+     inst "$moddir/dracut-cmdline.sh" /bin/dracut-cmdline
+     inst "$moddir/dracut-cmdline.service" ${systemdsystemunitdir}/dracut-cmdline.service
+-    ln -s ../dracut-cmdline.service "${initdir}${systemdsystemunitdir}/basic.target.wants/dracut-cmdline.service"
++    ln -fs ../dracut-cmdline.service "${initdir}${systemdsystemunitdir}/basic.target.wants/dracut-cmdline.service"
+ 
+     inst "$moddir/dracut-pre-udev.sh" /bin/dracut-pre-udev
+     inst "$moddir/dracut-pre-udev.service" ${systemdsystemunitdir}/dracut-pre-udev.service
+-    ln -s ../dracut-pre-udev.service "${initdir}${systemdsystemunitdir}/basic.target.wants/dracut-pre-udev.service"
++    ln -fs ../dracut-pre-udev.service "${initdir}${systemdsystemunitdir}/basic.target.wants/dracut-pre-udev.service"
+ 
+     inst "$moddir/dracut-pre-trigger.sh" /bin/dracut-pre-trigger
+     inst "$moddir/dracut-pre-trigger.service" ${systemdsystemunitdir}/dracut-pre-trigger.service
+-    ln -s ../dracut-pre-trigger.service "${initdir}${systemdsystemunitdir}/basic.target.wants/dracut-pre-trigger.service"
++    ln -fs ../dracut-pre-trigger.service "${initdir}${systemdsystemunitdir}/basic.target.wants/dracut-pre-trigger.service"
+ 
+     inst "$moddir/dracut-initqueue.sh" /bin/dracut-initqueue
+     inst "$moddir/dracut-initqueue.service" ${systemdsystemunitdir}/dracut-initqueue.service
+-    ln -s ../dracut-initqueue.service "${initdir}${systemdsystemunitdir}/basic.target.wants/dracut-initqueue.service"
++    ln -fs ../dracut-initqueue.service "${initdir}${systemdsystemunitdir}/basic.target.wants/dracut-initqueue.service"
+ 
+     inst "$moddir/dracut-pre-pivot.sh" /bin/dracut-pre-pivot
+     inst "$moddir/dracut-pre-pivot.service" ${systemdsystemunitdir}/dracut-pre-pivot.service
+     mkdir -p "${initdir}${systemdsystemunitdir}/initrd-switch-root.target.wants"
+-    ln -s ../dracut-pre-pivot.service "${initdir}${systemdsystemunitdir}/initrd-switch-root.target.wants/dracut-pre-pivot.service"
++    ln -fs ../dracut-pre-pivot.service "${initdir}${systemdsystemunitdir}/initrd-switch-root.target.wants/dracut-pre-pivot.service"
+ 
+ }
+ 
diff --git a/0078-i18n-module-setup.sh-install_all_kbd-speedup-install.patch b/0078-i18n-module-setup.sh-install_all_kbd-speedup-install.patch
new file mode 100644
index 0000000..d806e51
--- /dev/null
+++ b/0078-i18n-module-setup.sh-install_all_kbd-speedup-install.patch
@@ -0,0 +1,26 @@
+From 0dd85327dfbb788a5b23820a7413c4e1e96deafe Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald at redhat.com>
+Date: Fri, 22 Jun 2012 15:21:11 +0200
+Subject: [PATCH] i18n/module-setup.sh:install_all_kbd(): speedup install
+
+---
+ modules.d/10i18n/module-setup.sh |    6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/modules.d/10i18n/module-setup.sh b/modules.d/10i18n/module-setup.sh
+index d1854c2..7c8cd66 100755
+--- a/modules.d/10i18n/module-setup.sh
++++ b/modules.d/10i18n/module-setup.sh
+@@ -92,9 +92,9 @@ install() {
+     install_all_kbd() {
+         local rel f
+ 
+-        find $(eval echo ${kbddir}/{${KBDSUBDIRS}}) -type f -print | \
+-            while read f; do
+-            inst_simple $f
++        for _src in $(eval echo ${kbddir}/{${KBDSUBDIRS}}); do
++            inst_dir "$_src"
++            cp --reflink=auto --sparse=auto -prfL -t "${initdir}/${_src%/*}" "$_src"
+         done
+ 
+         # remove unnecessary files
diff --git a/0079-bootchart-module-setup.sh-no-need-for-mknod-anymore.patch b/0079-bootchart-module-setup.sh-no-need-for-mknod-anymore.patch
new file mode 100644
index 0000000..bc89103
--- /dev/null
+++ b/0079-bootchart-module-setup.sh-no-need-for-mknod-anymore.patch
@@ -0,0 +1,21 @@
+From 07a8e55f418f9362f074eb4de59070e297f54fd6 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald at redhat.com>
+Date: Fri, 22 Jun 2012 15:23:56 +0200
+Subject: [PATCH] bootchart/module-setup.sh: no need for mknod anymore
+
+---
+ modules.d/00bootchart/module-setup.sh |    2 --
+ 1 file changed, 2 deletions(-)
+
+diff --git a/modules.d/00bootchart/module-setup.sh b/modules.d/00bootchart/module-setup.sh
+index 17dd137..a2a2c00 100755
+--- a/modules.d/00bootchart/module-setup.sh
++++ b/modules.d/00bootchart/module-setup.sh
+@@ -25,7 +25,5 @@ install() {
+     inst /bin/grep
+     inst /bin/usleep
+     inst /usr/bin/[  /bin/[
+-
+-    mknod -m 0666 "${initdir}/dev/null" c 1 3
+ }
+ 
diff --git a/0080-no-more-mknod-in-the-initramfs.patch b/0080-no-more-mknod-in-the-initramfs.patch
new file mode 100644
index 0000000..6cccaaa
--- /dev/null
+++ b/0080-no-more-mknod-in-the-initramfs.patch
@@ -0,0 +1,62 @@
+From 070433429368aa721af68a250279483dea0b19fd Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald at redhat.com>
+Date: Fri, 22 Jun 2012 15:27:40 +0200
+Subject: [PATCH] no more "mknod" in the initramfs!!
+
+---
+ modules.d/50gensplash/gensplash-pretrigger.sh |    4 ----
+ modules.d/50plymouth/plymouth-pretrigger.sh   |    6 ------
+ modules.d/99base/init.sh                      |    2 --
+ 3 files changed, 12 deletions(-)
+
+diff --git a/modules.d/50gensplash/gensplash-pretrigger.sh b/modules.d/50gensplash/gensplash-pretrigger.sh
+index 074aa78..b697438 100755
+--- a/modules.d/50gensplash/gensplash-pretrigger.sh
++++ b/modules.d/50gensplash/gensplash-pretrigger.sh
+@@ -3,10 +3,6 @@
+ # ex: ts=8 sw=4 sts=4 et filetype=sh
+ 
+ if getargbool 1 rd.splash -n rd_NO_SPLASH; then
+-    [ -c /dev/null ] || mknod /dev/null c 1 3
+-    [ -c /dev/console ] || mknod /dev/console c 5 1
+-    [ -c /dev/tty0 ] || mknod /dev/tty0 c 4 0
+-
+     info "Starting Gentoo Splash"
+ 
+     [ -x /lib/udev/console_init ] && /lib/udev/console_init /dev/tty0
+diff --git a/modules.d/50plymouth/plymouth-pretrigger.sh b/modules.d/50plymouth/plymouth-pretrigger.sh
+index 483cc70..5cc9112 100755
+--- a/modules.d/50plymouth/plymouth-pretrigger.sh
++++ b/modules.d/50plymouth/plymouth-pretrigger.sh
+@@ -4,18 +4,12 @@
+ 
+ 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
+ 
+         info "Starting plymouth daemon"
+         mkdir -m 0755 /run/plymouth
+diff --git a/modules.d/99base/init.sh b/modules.d/99base/init.sh
+index 5c693e4..d395a99 100755
+--- a/modules.d/99base/init.sh
++++ b/modules.d/99base/init.sh
+@@ -22,8 +22,6 @@ RD_DEBUG=""
+ 
+ trap "emergency_shell Signal caught!" 0
+ 
+-[ -c /dev/null ] || mknod -m 0666 /dev/null c 1 3
+-
+ # mount some important things
+ [ ! -d /proc/self ] && \
+     mount -t proc -o nosuid,noexec,nodev proc /proc >/dev/null 2>&1
diff --git a/0081-udev-rules-module-setup.sh-ln-with-force.patch b/0081-udev-rules-module-setup.sh-ln-with-force.patch
new file mode 100644
index 0000000..26bf557
--- /dev/null
+++ b/0081-udev-rules-module-setup.sh-ln-with-force.patch
@@ -0,0 +1,22 @@
+From 8148fd4a73345449828198396cb9d149f8f3dc6b Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald at redhat.com>
+Date: Fri, 22 Jun 2012 15:28:23 +0200
+Subject: [PATCH] udev-rules/module-setup.sh: ln with --force
+
+---
+ modules.d/95udev-rules/module-setup.sh |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/modules.d/95udev-rules/module-setup.sh b/modules.d/95udev-rules/module-setup.sh
+index a48b0cb..f98de57 100755
+--- a/modules.d/95udev-rules/module-setup.sh
++++ b/modules.d/95udev-rules/module-setup.sh
+@@ -15,7 +15,7 @@ install() {
+         inst "$_i"
+ 
+         if ! [[ -f  ${initdir}/lib/systemd/systemd-udevd ]]; then
+-            ln -s "$_i" ${initdir}/lib/systemd/systemd-udevd
++            ln -fs "$_i" ${initdir}/lib/systemd/systemd-udevd
+         fi
+         break
+     done
diff --git a/0082-terminfo-module-setup.sh-speedup-install-of-all-term.patch b/0082-terminfo-module-setup.sh-speedup-install-of-all-term.patch
new file mode 100644
index 0000000..b5444c7
--- /dev/null
+++ b/0082-terminfo-module-setup.sh-speedup-install-of-all-term.patch
@@ -0,0 +1,25 @@
+From cb8d852cdcfda3774a0c5aee15dd85511ab21fa1 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald at redhat.com>
+Date: Fri, 22 Jun 2012 15:29:04 +0200
+Subject: [PATCH] terminfo/module-setup.sh: speedup install() of all terminfo
+
+---
+ modules.d/95terminfo/module-setup.sh |    6 ++----
+ 1 file changed, 2 insertions(+), 4 deletions(-)
+
+diff --git a/modules.d/95terminfo/module-setup.sh b/modules.d/95terminfo/module-setup.sh
+index 32a3fe9..e1914a5 100755
+--- a/modules.d/95terminfo/module-setup.sh
++++ b/modules.d/95terminfo/module-setup.sh
+@@ -10,9 +10,7 @@ install() {
+     done
+ 
+     if [ -d ${_terminfodir} ]; then
+-        for f in ${_terminfodir}/*/*; do
+-            inst_simple $f
+-        done
++        inst_dir "$_terminfodir"
++        cp --reflink=auto --sparse=auto -prfL -t "${initdir}/${_terminfodir%/*}" "$_terminfodir"
+     fi
+ }
+-
diff --git a/0083-network-module-setup.sh-fixed-installkernel-return-c.patch b/0083-network-module-setup.sh-fixed-installkernel-return-c.patch
new file mode 100644
index 0000000..dc63c00
--- /dev/null
+++ b/0083-network-module-setup.sh-fixed-installkernel-return-c.patch
@@ -0,0 +1,45 @@
+From fe9bb86bb2d34cbcde7970a0b5a24fffa4e8404e Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald at redhat.com>
+Date: Fri, 22 Jun 2012 15:24:28 +0200
+Subject: [PATCH] network/module-setup.sh: fixed installkernel() return code
+
+---
+ modules.d/40network/module-setup.sh |    6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/modules.d/40network/module-setup.sh b/modules.d/40network/module-setup.sh
+index a8efbc5..6077f53 100755
+--- a/modules.d/40network/module-setup.sh
++++ b/modules.d/40network/module-setup.sh
+@@ -4,7 +4,6 @@
+ 
+ check() {
+     local _program
+-    . $dracutfunctions
+ 
+     for _program in ip arping dhclient ; do
+         if ! type -P $_program >/dev/null; then
+@@ -43,6 +42,7 @@ installkernel() {
+                 && ! $_fcont =~ iw_handler_get_spy ]] \
+                 && echo "$_fname"
+             done
++            return 0
+         }
+         function rotor() {
+             local _f1 _f2
+@@ -52,13 +52,13 @@ installkernel() {
+                     echo "$_f2" 1>&${_side2}
+                 fi
+             done | nmf1 1>&${_merge}
++            return 0
+         }
+         # Use two parallel streams to filter alternating modules.
+         set +x
+         eval "( ( rotor ) ${_side2}>&1 | nmf1 ) ${_merge}>&1"
+-        _ret=$?
+         [[ $debug ]] && set -x
+-        return $_ret
++        return 0
+     }
+ 
+     { find_kernel_modules_by_path drivers/net; if [ "$_arch" = "s390" -o "$_arch" = "s390x" ]; then find_kernel_modules_by_path drivers/s390/net; fi; } \
diff --git a/0084-iscsi-module-setup.sh-speedup-installkernel.patch b/0084-iscsi-module-setup.sh-speedup-installkernel.patch
new file mode 100644
index 0000000..0ada3af
--- /dev/null
+++ b/0084-iscsi-module-setup.sh-speedup-installkernel.patch
@@ -0,0 +1,61 @@
+From 483e770b4302fc7e3384982657500221e0ec327d Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald at redhat.com>
+Date: Fri, 22 Jun 2012 15:30:58 +0200
+Subject: [PATCH] iscsi/module-setup.sh: speedup installkernel()
+
+---
+ modules.d/95iscsi/module-setup.sh |   40 ++++++++++++++++++++++++++++---------
+ 1 file changed, 31 insertions(+), 9 deletions(-)
+
+diff --git a/modules.d/95iscsi/module-setup.sh b/modules.d/95iscsi/module-setup.sh
+index fefc240..5f935d7 100755
+--- a/modules.d/95iscsi/module-setup.sh
++++ b/modules.d/95iscsi/module-setup.sh
+@@ -41,16 +41,38 @@ installkernel() {
+ 
+     instmods iscsi_tcp iscsi_ibft crc32c bnx2i iscsi_boot_sysfs qla4xxx cxgb3i cxgb4i be2iscsi
+     iscsi_module_filter() {
+-        local _iscsifuncs='iscsi_register_transport'
+-        local _f
+-        while read _f; do case "$_f" in
+-            *.ko)    [[ $(<         $_f) =~ $_iscsifuncs ]] && echo "$_f" ;;
+-            *.ko.gz) [[ $(gzip -dc <$_f) =~ $_iscsifuncs ]] && echo "$_f" ;;
+-            *.ko.xz) [[ $(xz -dc   <$_f) =~ $_iscsifuncs ]] && echo "$_f" ;;
+-            esac
+-        done
+-        return 0;
++        local _funcs='iscsi_register_transport'
++        # subfunctions inherit following FDs
++        local _merge=8 _side2=9
++        function bmf1() {
++            local _f
++            while read _f; do
++                case "$_f" in
++                    *.ko)    [[ $(<         $_f) =~ $_funcs ]] && echo "$_f" ;;
++                    *.ko.gz) [[ $(gzip -dc <$_f) =~ $_funcs ]] && echo "$_f" ;;
++                    *.ko.xz) [[ $(xz -dc   <$_f) =~ $_funcs ]] && echo "$_f" ;;
++                esac
++            done
++            return 0
++        }
++
++        function rotor() {
++            local _f1 _f2
++            while read _f1; do
++                echo "$_f1"
++                if read _f2; then
++                    echo "$_f2" 1>&${_side2}
++                fi
++            done | bmf1 1>&${_merge}
++            return 0
++        }
++        # Use two parallel streams to filter alternating modules.
++        set +x
++        eval "( ( rotor ) ${_side2}>&1 | bmf1 ) ${_merge}>&1"
++        [[ $debug ]] && set -x
++        return 0
+     }
++
+     { find_kernel_modules_by_path drivers/scsi; if [ "$_arch" = "s390" -o "$_arch" = "s390x" ]; then find_kernel_modules_by_path drivers/s390/scsi; fi;} \
+     | iscsi_module_filter  |  instmods
+ }
diff --git a/0085-plymouth-module-setup.sh-installkernel-fix-return-co.patch b/0085-plymouth-module-setup.sh-installkernel-fix-return-co.patch
new file mode 100644
index 0000000..fc79835
--- /dev/null
+++ b/0085-plymouth-module-setup.sh-installkernel-fix-return-co.patch
@@ -0,0 +1,24 @@
+From efeea5257568523d45b0f873579c4d16f7631c9a Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald at redhat.com>
+Date: Fri, 22 Jun 2012 15:31:26 +0200
+Subject: [PATCH] plymouth/module-setup.sh:installkernel() fix return code
+
+---
+ modules.d/50plymouth/module-setup.sh |    3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+diff --git a/modules.d/50plymouth/module-setup.sh b/modules.d/50plymouth/module-setup.sh
+index 69f1bc7..616d9b2 100755
+--- a/modules.d/50plymouth/module-setup.sh
++++ b/modules.d/50plymouth/module-setup.sh
+@@ -45,9 +45,8 @@ installkernel() {
+         # Use two parallel streams to filter alternating modules.
+         set +x
+         eval "( ( rotor ) ${_side2}>&1 | nmf1 ) ${_merge}>&1"
+-        _ret=$?
+         [[ $debug ]] && set -x
+-        return $_ret
++        return 0
+     }
+ 
+     for _modname in $(find_kernel_modules_by_path drivers/gpu/drm \
diff --git a/0086-kernel-modules-module-setup.sh-installkernel-fix-ret.patch b/0086-kernel-modules-module-setup.sh-installkernel-fix-ret.patch
new file mode 100644
index 0000000..7960081
--- /dev/null
+++ b/0086-kernel-modules-module-setup.sh-installkernel-fix-ret.patch
@@ -0,0 +1,38 @@
+From 0663a883d77149b505cb08671d2ebd054eb5bc28 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald at redhat.com>
+Date: Fri, 22 Jun 2012 15:32:15 +0200
+Subject: [PATCH] kernel-modules/module-setup.sh:installkernel() fix return
+ code
+
+---
+ modules.d/90kernel-modules/module-setup.sh |    4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/modules.d/90kernel-modules/module-setup.sh b/modules.d/90kernel-modules/module-setup.sh
+index 1d39c85..08f745a 100755
+--- a/modules.d/90kernel-modules/module-setup.sh
++++ b/modules.d/90kernel-modules/module-setup.sh
+@@ -16,6 +16,7 @@ installkernel() {
+                     *.ko.xz) [[ $(xz -dc   <$_f) =~ $_blockfuncs ]] && echo "$_f" ;;
+                     esac
+                 done
++                return 0
+             }
+             function rotor() {
+                 local _f1 _f2
+@@ -25,12 +26,15 @@ installkernel() {
+                         echo "$_f2" 1>&${_side2}
+                     fi
+                 done | bmf1 1>&${_merge}
++                return 0
+             }
+             # Use two parallel streams to filter alternating modules.
+             set +x
+             eval "( ( rotor ) ${_side2}>&1 | bmf1 ) ${_merge}>&1"
+             [[ $debug ]] && set -x
++            return 0
+         }
++
+         hostonly='' instmods sr_mod sd_mod scsi_dh scsi_dh_rdac scsi_dh_emc ata_piix
+         hostonly='' instmods pcmcia firewire-ohci
+         hostonly='' instmods usb_storage sdhci sdhci-pci
diff --git a/0087-multipath-module-setup.sh-installkernel-fix-return-c.patch b/0087-multipath-module-setup.sh-installkernel-fix-return-c.patch
new file mode 100644
index 0000000..14ab9e3
--- /dev/null
+++ b/0087-multipath-module-setup.sh-installkernel-fix-return-c.patch
@@ -0,0 +1,68 @@
+From 7997d8764313d5dc10689e3b6bbdde3dcc373498 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald at redhat.com>
+Date: Fri, 22 Jun 2012 15:33:15 +0200
+Subject: [PATCH] multipath/module-setup.sh:installkernel() fix return code
+
+---
+ modules.d/90multipath/module-setup.sh |   43 ++++++++++++++++++++++++---------
+ 1 file changed, 31 insertions(+), 12 deletions(-)
+
+diff --git a/modules.d/90multipath/module-setup.sh b/modules.d/90multipath/module-setup.sh
+index 0e8857c..8791560 100755
+--- a/modules.d/90multipath/module-setup.sh
++++ b/modules.d/90multipath/module-setup.sh
+@@ -32,23 +32,42 @@ depends() {
+ 
+ installkernel() {
+     local _ret
+-    set +x
++    local _arch=$(uname -m)
+     mp_mod_filter() {
+-        local _mpfuncs='scsi_register_device_handler|dm_dirty_log_type_register|dm_register_path_selector|dm_register_target'
+-        local _f
+-        while read _f; do case "$_f" in
+-            *.ko)    [[ $(<         $_f) =~ $_mpfuncs ]] && echo "$_f" ;;
+-            *.ko.gz) [[ $(gzip -dc <$_f) =~ $_mpfuncs ]] && echo "$_f" ;;
+-            *.ko.xz) [[ $(xz -dc   <$_f) =~ $_mpfuncs ]] && echo "$_f" ;;
+-            esac
+-        done
++        local _funcs='scsi_register_device_handler|dm_dirty_log_type_register|dm_register_path_selector|dm_register_target'
++        # subfunctions inherit following FDs
++        local _merge=8 _side2=9
++        function bmf1() {
++            local _f
++            while read _f; do
++                case "$_f" in
++                    *.ko)    [[ $(<         $_f) =~ $_funcs ]] && echo "$_f" ;;
++                    *.ko.gz) [[ $(gzip -dc <$_f) =~ $_funcs ]] && echo "$_f" ;;
++                    *.ko.xz) [[ $(xz -dc   <$_f) =~ $_funcs ]] && echo "$_f" ;;
++                esac
++            done
++            return 0
++        }
++
++        function rotor() {
++            local _f1 _f2
++            while read _f1; do
++                echo "$_f1"
++                if read _f2; then
++                    echo "$_f2" 1>&${_side2}
++                fi
++            done | bmf1 1>&${_merge}
++            return 0
++        }
++        # Use two parallel streams to filter alternating modules.
++        set +x
++        eval "( ( rotor ) ${_side2}>&1 | bmf1 ) ${_merge}>&1"
++        [[ $debug ]] && set -x
++        return 0
+     }
+ 
+     ( find_kernel_modules_by_path drivers/scsi; if [ "$_arch" = "s390" -o "$_arch" = "s390x" ]; then find_kernel_modules_by_path drivers/s390/scsi; fi;
+       find_kernel_modules_by_path drivers/md )  |  mp_mod_filter  |  instmods
+-    _ret=$?
+-    [[ $debug ]] && set -x
+-    return $_ret
+ }
+ 
+ install() {
diff --git a/0088-modules.d-module-setup.sh-no-more-sourcing-of-dracut.patch b/0088-modules.d-module-setup.sh-no-more-sourcing-of-dracut.patch
new file mode 100644
index 0000000..c5ce4ad
--- /dev/null
+++ b/0088-modules.d-module-setup.sh-no-more-sourcing-of-dracut.patch
@@ -0,0 +1,127 @@
+From 6a767ee403095cdeb67b7cb5f69e8586ad19650a Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald at redhat.com>
+Date: Fri, 22 Jun 2012 15:33:42 +0200
+Subject: [PATCH] modules.d/*/module-setup.sh: no more sourcing of
+ dracutfunctions
+
+---
+ modules.d/90btrfs/module-setup.sh     |    3 ---
+ modules.d/90crypt/module-setup.sh     |    2 --
+ modules.d/90dmraid/module-setup.sh    |    3 ---
+ modules.d/90lvm/module-setup.sh       |    3 ---
+ modules.d/90mdraid/module-setup.sh    |    3 ---
+ modules.d/90multipath/module-setup.sh |    3 ---
+ modules.d/95iscsi/module-setup.sh     |    4 ----
+ modules.d/95nbd/module-setup.sh       |    1 -
+ 8 files changed, 22 deletions(-)
+
+diff --git a/modules.d/90btrfs/module-setup.sh b/modules.d/90btrfs/module-setup.sh
+index 135abc6..7d8fae0 100755
+--- a/modules.d/90btrfs/module-setup.sh
++++ b/modules.d/90btrfs/module-setup.sh
+@@ -8,9 +8,6 @@ check() {
+     # no point in trying to support it in the initramfs.
+     type -P btrfs >/dev/null || return 1
+ 
+-    . $dracutfunctions
+-    [[ $debug ]] && set -x
+-
+     [[ $hostonly ]] || [[ $mount_needs ]] && {
+         local _found
+         for fs in ${host_fs_types[@]}; do
+diff --git a/modules.d/90crypt/module-setup.sh b/modules.d/90crypt/module-setup.sh
+index 5082434..16d6f89 100755
+--- a/modules.d/90crypt/module-setup.sh
++++ b/modules.d/90crypt/module-setup.sh
+@@ -7,8 +7,6 @@ check() {
+     # if cryptsetup is not installed, then we cannot support encrypted devices.
+     type -P cryptsetup >/dev/null || return 1
+ 
+-    . $dracutfunctions
+-
+     check_crypt() {
+         local dev=$1 fs=$2
+         [[ $fs = "crypto_LUKS" ]] || return 1
+diff --git a/modules.d/90dmraid/module-setup.sh b/modules.d/90dmraid/module-setup.sh
+index 5ce7051..dad54a4 100755
+--- a/modules.d/90dmraid/module-setup.sh
++++ b/modules.d/90dmraid/module-setup.sh
+@@ -8,9 +8,6 @@ check() {
+     # in trying to support it in the initramfs.
+     type -P dmraid >/dev/null || return 1
+ 
+-    . $dracutfunctions
+-    [[ $debug ]] && set -x
+-
+     check_dmraid() {
+         local dev=$1 fs=$2 holder DEVPATH DM_NAME
+         [[ "$fs" = "${fs%%_raid_member}" ]] && return 1
+diff --git a/modules.d/90lvm/module-setup.sh b/modules.d/90lvm/module-setup.sh
+index 2ce5c50..5182b79 100755
+--- a/modules.d/90lvm/module-setup.sh
++++ b/modules.d/90lvm/module-setup.sh
+@@ -7,9 +7,6 @@ check() {
+     # No point trying to support lvm if the binaries are missing
+     type -P lvm >/dev/null || return 1
+ 
+-    . $dracutfunctions
+-    [[ $debug ]] && set -x
+-
+     check_lvm() {
+         local DM_VG_NAME DM_LV_NAME DM_UDEV_DISABLE_DISK_RULES_FLAG
+         eval $(udevadm info --query=property --name=$1|egrep '(DM_VG_NAME|DM_LV_NAME|DM_UDEV_DISABLE_DISK_RULES_FLAG)=')
+diff --git a/modules.d/90mdraid/module-setup.sh b/modules.d/90mdraid/module-setup.sh
+index 350aff8..56f881e 100755
+--- a/modules.d/90mdraid/module-setup.sh
++++ b/modules.d/90mdraid/module-setup.sh
+@@ -7,9 +7,6 @@ check() {
+     # No mdadm?  No mdraid support.
+     type -P mdadm >/dev/null || return 1
+ 
+-    . $dracutfunctions
+-    [[ $debug ]] && set -x
+-
+     check_mdraid() {
+         local dev=$1 fs=$2 holder DEVPATH MD_UUID
+         [[ "$fs" = "${fs%%_raid_member}" ]] && return 1
+diff --git a/modules.d/90multipath/module-setup.sh b/modules.d/90multipath/module-setup.sh
+index 8791560..bfa4bf8 100755
+--- a/modules.d/90multipath/module-setup.sh
++++ b/modules.d/90multipath/module-setup.sh
+@@ -7,9 +7,6 @@ check() {
+     # if there's no multipath binary, no go.
+     type -P multipath >/dev/null || return 1
+ 
+-    . $dracutfunctions
+-    [[ $debug ]] && set -x
+-
+     is_mpath() {
+         local _dev
+         _dev=$(get_maj_min $1)
+diff --git a/modules.d/95iscsi/module-setup.sh b/modules.d/95iscsi/module-setup.sh
+index 5f935d7..1787f92 100755
+--- a/modules.d/95iscsi/module-setup.sh
++++ b/modules.d/95iscsi/module-setup.sh
+@@ -10,10 +10,6 @@ check() {
+     # If hostonly was requested, fail the check if we are not actually
+     # booting from root.
+ 
+-    . $dracutfunctions
+-
+-    [[ $debug ]] && set -x
+-
+     is_iscsi() (
+         local _dev
+         _dev=$(get_maj_min $1)
+diff --git a/modules.d/95nbd/module-setup.sh b/modules.d/95nbd/module-setup.sh
+index c0f71cc..092aade 100755
+--- a/modules.d/95nbd/module-setup.sh
++++ b/modules.d/95nbd/module-setup.sh
+@@ -11,7 +11,6 @@ check() {
+     # mounted on, fail the hostonly check.
+     [[ $hostonly ]] || [[ $mount_needs ]] && {
+         is_nbd() { [[ -b /dev/block/$1 && $1 == 43:* ]] ;}
+-        . $dracutfunctions
+ 
+         _rootdev=$(find_root_block_device)
+         [[ -b /dev/block/$_rootdev ]] || return 1
diff --git a/0089-dracut-logger.sh-use-for-numeric-comparisons.patch b/0089-dracut-logger.sh-use-for-numeric-comparisons.patch
new file mode 100644
index 0000000..cae8171
--- /dev/null
+++ b/0089-dracut-logger.sh-use-for-numeric-comparisons.patch
@@ -0,0 +1,80 @@
+From 6f006ae0c1efbbb90d00cbb340001e74d8d12db1 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald at redhat.com>
+Date: Fri, 22 Jun 2012 15:34:24 +0200
+Subject: [PATCH] dracut-logger.sh: use (( )) for numeric comparisons
+
+---
+ dracut-logger.sh |   20 ++++++++++----------
+ 1 file changed, 10 insertions(+), 10 deletions(-)
+
+diff --git a/dracut-logger.sh b/dracut-logger.sh
+index f1b3a7e..a78e18e 100755
+--- a/dracut-logger.sh
++++ b/dracut-logger.sh
+@@ -116,7 +116,7 @@ dlog_init() {
+ 
+     if [ -z "$fileloglvl" ]; then
+         [ -w "$logfile" ] && fileloglvl=4 || fileloglvl=0
+-    elif [ $fileloglvl -gt 0 ]; then
++    elif (( $fileloglvl >= 0 )); then
+         __oldumask=$(umask)
+         umask 0377
+         ! [ -e "$logfile" ] && >"$logfile"
+@@ -138,7 +138,7 @@ dlog_init() {
+         fi
+     fi
+ 
+-    if [ $sysloglvl -gt 0 ]; then
++    if (( $sysloglvl >= 0 )); then
+         if ! [ -S /dev/log -a -w /dev/log ] || ! command -v logger >/dev/null
+         then
+             # We cannot log to syslog, so turn this facility off.
+@@ -148,7 +148,7 @@ dlog_init() {
+         fi
+     fi
+ 
+-    if [ $sysloglvl -gt 0 -o $kmsgloglvl -gt 0 ]; then
++    if (($sysloglvl >= 0)) || (($kmsgloglvl >= 0 )); then
+         if [ -n "$dracutbasedir" ]; then
+             readonly syslogfacility=user
+         else
+@@ -159,7 +159,7 @@ dlog_init() {
+ 
+     local lvl; local maxloglvl_l=0
+     for lvl in $stdloglvl $sysloglvl $fileloglvl $kmsgloglvl; do
+-        [ $lvl -gt $maxloglvl_l ] && maxloglvl_l=$lvl
++        (( $lvl > $maxloglvl_l )) && maxloglvl_l=$lvl
+     done
+     readonly maxloglvl=$maxloglvl_l
+     export maxloglvl
+@@ -275,14 +275,14 @@ _do_dlog() {
+     local lvlc=$(_lvl2char "$lvl") || return 0
+     local msg="$lvlc: $*"
+ 
+-    [ $lvl -le $stdloglvl ] && echo "$msg" >&2
+-    if [ $lvl -le $sysloglvl ]; then
++    (( $lvl <= $stdloglvl )) && echo "$msg" >&2
++    if (( $lvl <= $sysloglvl )); then
+         logger -t "dracut[$$]" -p $(_lvl2syspri $lvl) "$msg"
+     fi
+-    if [ $lvl -le $fileloglvl -a -w "$logfile" -a -f "$logfile" ]; then
++    if (( $lvl <= $fileloglvl )) && [[ -w "$logfile" ]] && [[ -f "$logfile" ]]; then
+         echo "$msg" >>"$logfile"
+     fi
+-    [ $lvl -le $kmsgloglvl ] && \
++    (( $lvl <= $kmsgloglvl )) && \
+         echo "<$(_dlvl2syslvl $lvl)>dracut[$$] $msg" >/dev/kmsg
+ }
+ 
+@@ -304,9 +304,9 @@ _do_dlog() {
+ # echo "This is a warning" | dwarn
+ dlog() {
+     [ -z "$maxloglvl" ] && return 0
+-    [ $1 -le $maxloglvl ] || return 0
++    (( $1 <= $maxloglvl )) || return 0
+ 
+-    if [ $# -gt 1 ]; then
++    if (( $# > 1 )); then
+         _do_dlog "$@"
+     else
+         while read line; do
diff --git a/0090-dracut-logger.sh-empty-functions-for-log-funcs-which.patch b/0090-dracut-logger.sh-empty-functions-for-log-funcs-which.patch
new file mode 100644
index 0000000..89a74a6
--- /dev/null
+++ b/0090-dracut-logger.sh-empty-functions-for-log-funcs-which.patch
@@ -0,0 +1,54 @@
+From a790a8b395b3baddddd099769f3f29c72b29799b Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald at redhat.com>
+Date: Fri, 22 Jun 2012 15:35:09 +0200
+Subject: [PATCH] dracut-logger.sh: empty functions for log funcs, which are
+ below level
+
+---
+ dracut-logger.sh |   33 +++++++++++++++++++++++++++++++++
+ 1 file changed, 33 insertions(+)
+
+diff --git a/dracut-logger.sh b/dracut-logger.sh
+index a78e18e..dbe26ee 100755
+--- a/dracut-logger.sh
++++ b/dracut-logger.sh
+@@ -164,6 +164,39 @@ dlog_init() {
+     readonly maxloglvl=$maxloglvl_l
+     export maxloglvl
+ 
++
++    if (($stdloglvl < 6)) && (($kmsgloglvl < 6)) && (($fileloglvl < 6)); then
++        unset dtrace
++        dtrace() { :; };
++    fi
++
++    if (($stdloglvl < 5)) && (($kmsgloglvl < 5)) && (($fileloglvl < 5)); then
++        unset ddebug
++        ddebug() { :; };
++    fi
++
++    if (($stdloglvl < 4)) && (($kmsgloglvl < 4)) && (($fileloglvl < 4)); then
++        unset dinfo
++        dinfo() { :; };
++    fi
++
++    if (($stdloglvl < 3)) && (($kmsgloglvl < 3)) && (($fileloglvl < 3)); then
++        unset dwarn
++        dwarn() { :; };
++        unset dwarning
++        dwarning() { :; };
++    fi
++
++    if (($stdloglvl < 2)) && (($kmsgloglvl < 2)) && (($fileloglvl < 2)); then
++        unset derror
++        derror() { :; };
++    fi
++
++    if (($stdloglvl < 1)) && (($kmsgloglvl < 1)) && (($fileloglvl < 1)); then
++        unset dfatal
++        dfatal() { :; };
++    fi
++
+     [ -n "$errmsg" ] && derror "$errmsg"
+ 
+     return $ret
diff --git a/0091-dracut.sh-do-not-copy-devices-nodes-mknod-them.patch b/0091-dracut.sh-do-not-copy-devices-nodes-mknod-them.patch
new file mode 100644
index 0000000..724fb2a
--- /dev/null
+++ b/0091-dracut.sh-do-not-copy-devices-nodes-mknod-them.patch
@@ -0,0 +1,27 @@
+From fabe8a8c29ff657e29f3c33bf6c564cfd0ee613f Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald at redhat.com>
+Date: Fri, 22 Jun 2012 15:49:25 +0200
+Subject: [PATCH] dracut.sh: do not copy devices nodes, mknod them
+
+---
+ dracut.sh |    7 +++----
+ 1 file changed, 3 insertions(+), 4 deletions(-)
+
+diff --git a/dracut.sh b/dracut.sh
+index cc3669a..0fb0a18 100755
+--- a/dracut.sh
++++ b/dracut.sh
+@@ -714,10 +714,9 @@ if [[ $kernel_only != yes ]]; then
+         mkdir -m 0755 -p ${initdir}/lib/dracut/hooks/$_d
+     done
+     if [[ "$UID" = "0" ]]; then
+-        for i in /dev/kmsg /dev/null /dev/console; do
+-            [ -e $i ] || continue
+-            cp -a $i $initdir/dev
+-        done
++        [ -c ${initdir}/dev/null ] || mknod ${initdir}/dev/null c 1 3
++        [ -c ${initdir}/dev/kmsg ] || mknod ${initdir}/dev/kmsg c 1 11
++        [ -c ${initdir}/dev/console ] || mknod ${initdir}/dev/console c 5 1
+     fi
+ fi
+ 
diff --git a/dracut.spec b/dracut.spec
index fec0b4b..5f40dbb 100644
--- a/dracut.spec
+++ b/dracut.spec
@@ -10,7 +10,7 @@
 
 Name: dracut
 Version: 019
-Release: 62.git20120621%{?dist}
+Release: 92.git20120625%{?dist}
 
 Summary: Initramfs generator using udev
 %if 0%{?fedora} || 0%{?rhel}
@@ -85,6 +85,36 @@ Patch58: 0058-systemd-remove-unneeded-systemd-services.patch
 Patch59: 0059-fixed-i18n-for-systemd-and-include-more-config-files.patch
 Patch60: 0060-systemd-remove-old-udev-services.patch
 Patch61: 0061-systemd-dracut-pre-pivot.sh-copy-service-files-to-ru.patch
+Patch62: 0062-network-support-vlan-tagged-bonding.patch
+Patch63: 0063-systemd-emergency.service-remove-Type-idle.patch
+Patch64: 0064-systemd-add-ConditionPathExists-etc-initrd-release-t.patch
+Patch65: 0065-dracut-functions.sh-replace-strstr.patch
+Patch66: 0066-dracut-functions.sh-mksubdirs-check-for-dir-existenc.patch
+Patch67: 0067-dracut-functions.sh-cp-with-reflink-auto-and-sparse-.patch
+Patch68: 0068-Add-qemu-kernel-modules-if-we-detect-a-qemu-instance.patch
+Patch69: 0069-dracut-functions.sh-inst_simple-do-inst_symlink-for-.patch
+Patch70: 0070-dracut-functions.sh-inst_decompress-simplify-functio.patch
+Patch71: 0071-dracut-functions.sh-find_kernel_modules_by_path-use-.patch
+Patch72: 0072-dracut.sh-speedup-strip.patch
+Patch73: 0073-profile.py-do-not-count-negative-timestamp-differenc.patch
+Patch74: 0074-fs-lib-fs-lib.sh-removed-test-mounting-of-btrfs-and-.patch
+Patch75: 0075-base-module-setup.sh-use-force-for-ln.patch
+Patch76: 0076-systemd-module-setup.sh-only-create-empty-machine-id.patch
+Patch77: 0077-systemd-module-setup.sh-ln-with-force.patch
+Patch78: 0078-i18n-module-setup.sh-install_all_kbd-speedup-install.patch
+Patch79: 0079-bootchart-module-setup.sh-no-need-for-mknod-anymore.patch
+Patch80: 0080-no-more-mknod-in-the-initramfs.patch
+Patch81: 0081-udev-rules-module-setup.sh-ln-with-force.patch
+Patch82: 0082-terminfo-module-setup.sh-speedup-install-of-all-term.patch
+Patch83: 0083-network-module-setup.sh-fixed-installkernel-return-c.patch
+Patch84: 0084-iscsi-module-setup.sh-speedup-installkernel.patch
+Patch85: 0085-plymouth-module-setup.sh-installkernel-fix-return-co.patch
+Patch86: 0086-kernel-modules-module-setup.sh-installkernel-fix-ret.patch
+Patch87: 0087-multipath-module-setup.sh-installkernel-fix-return-c.patch
+Patch88: 0088-modules.d-module-setup.sh-no-more-sourcing-of-dracut.patch
+Patch89: 0089-dracut-logger.sh-use-for-numeric-comparisons.patch
+Patch90: 0090-dracut-logger.sh-empty-functions-for-log-funcs-which.patch
+Patch91: 0091-dracut.sh-do-not-copy-devices-nodes-mknod-them.patch
 
 
 BuildArch: noarch
@@ -333,6 +363,7 @@ rm -rf $RPM_BUILD_ROOT
 %{dracutlibdir}/modules.d/90lvm
 %{dracutlibdir}/modules.d/90mdraid
 %{dracutlibdir}/modules.d/90multipath
+%{dracutlibdir}/modules.d/90qemu
 %{dracutlibdir}/modules.d/91crypt-gpg
 %{dracutlibdir}/modules.d/95debug
 %{dracutlibdir}/modules.d/95resume
@@ -375,6 +406,7 @@ rm -rf $RPM_BUILD_ROOT
 %{dracutlibdir}/modules.d/95fcoe
 %{dracutlibdir}/modules.d/95iscsi
 %{dracutlibdir}/modules.d/90livenet
+%{dracutlibdir}/modules.d/90qemu-net
 %{dracutlibdir}/modules.d/95nbd
 %{dracutlibdir}/modules.d/95nfs
 %{dracutlibdir}/modules.d/95ssh-client
@@ -406,6 +438,16 @@ rm -rf $RPM_BUILD_ROOT
 %dir /var/lib/dracut/overlay
 
 %changelog
+* Mon Jun 25 2012 Harald Hoyer <harald at redhat.com> 019-92.git20120625
+- support vlan tagged binding
+- speedup initramfs emergency service
+- speedup image creation
+- fix installkernel() return codes
+Resolves: rhbz#833256
+- add qemu and qemu-net modules to add qemu drivers even in host-only
+- speedup btrfs and xfs fsck (nop)
+- no more mknod in the initramfs (fixes plymouth on s390)
+
 * Thu Jun 21 2012 Harald Hoyer <harald at redhat.com> 019-62.git20120621
 - do not require pkg-config for systemd
 - i18n fixes


More information about the scm-commits mailing list