[dracut] dracut-031-22.git20130809

Harald Hoyer harald at fedoraproject.org
Fri Aug 9 12:22:18 UTC 2013


commit f8c4a0f4e5e46e7b415502f39eb98c7f261086a3
Author: Harald Hoyer <harald at redhat.com>
Date:   Fri Aug 9 14:21:29 2013 +0200

    dracut-031-22.git20130809
    
    - lsinitrd.sh: add old cpio signature
    - dracut.sh: call find with -print0 and cpio with --null
    - dracut.asc: small corrections
    - systemd/dracut-initqueue.sh: continue to boot if finished failed
    - dracut.sh/dracut-functions.sh: handle root on non-block device
    - dracut-functions.sh: removed non dracut-install shell functions
    - dracut-functions.sh: inst_multiple == dracut_install
    - 51-dracut-rescue.install: fixed rescue image creation
    - dracut.sh: do not strip in FIPS mode
    Resolves: rhbz#990250
    - dracut.sh: check the value of --kver
    - crypt: Fix typo--/etc/crypttab not /etc/cryptab
    - network/net-lib.sh: fix ibft interface configuration
    - iscsi/module-setup.sh: install some modules regardless of hostonly
    - multipath: need_shutdown if multipath devices exist
    Resolves: rhbz#994913
    - omit drivers fix

 0007-lsinitrd.sh-add-old-cpio-signature.patch      |   21 +
 ...-call-find-with-print0-and-cpio-with-null.patch |   31 +
 0009-dracut.asc-small-corrections.patch            |  198 +++
 ...cut-initqueue.sh-continue-to-boot-if-fini.patch |   31 +
 ...racut-functions.sh-handle-root-on-non-blo.patch |   42 +
 ...tions.sh-removed-non-dracut-install-shell.patch |  354 ++++
 ...functions.sh-inst_multiple-dracut_install.patch | 1758 ++++++++++++++++++++
 ...escue.install-fixed-rescue-image-creation.patch |   31 +
 0015-dracut.sh-do-not-strip-in-FIPS-mode.patch     |   43 +
 0016-dracut.sh-check-the-value-of-kver.patch       |   26 +
 ...ypt-Fix-typo-etc-crypttab-not-etc-cryptab.patch |   24 +
 ...t-lib.sh-fix-ibft-interface-configuration.patch |   58 +
 ...e-setup.sh-install-some-modules-regardles.patch |   24 +
 ...-need_shutdown-if-multipath-devices-exist.patch |   41 +
 0021-omit-drivers-fix.patch                        |   30 +
 dracut.spec                                        |   36 +-
 16 files changed, 2747 insertions(+), 1 deletions(-)
---
diff --git a/0007-lsinitrd.sh-add-old-cpio-signature.patch b/0007-lsinitrd.sh-add-old-cpio-signature.patch
new file mode 100644
index 0000000..1362882
--- /dev/null
+++ b/0007-lsinitrd.sh-add-old-cpio-signature.patch
@@ -0,0 +1,21 @@
+From 1cb652491858464a1ce04f263bb78f313338aa68 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald at redhat.com>
+Date: Mon, 5 Aug 2013 11:14:24 +0200
+Subject: [PATCH] lsinitrd.sh: add old cpio signature
+
+---
+ lsinitrd.sh | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/lsinitrd.sh b/lsinitrd.sh
+index ae71d2e..ef1c262 100755
+--- a/lsinitrd.sh
++++ b/lsinitrd.sh
+@@ -109,6 +109,7 @@ case $bin in
+         CAT="zcat";;
+     BZh*)
+         CAT="bzcat";;
++    $'\x71\xc7'*)
+     070701)
+         CAT="cat";;
+     *)
diff --git a/0008-dracut.sh-call-find-with-print0-and-cpio-with-null.patch b/0008-dracut.sh-call-find-with-print0-and-cpio-with-null.patch
new file mode 100644
index 0000000..4738bed
--- /dev/null
+++ b/0008-dracut.sh-call-find-with-print0-and-cpio-with-null.patch
@@ -0,0 +1,31 @@
+From 283c34fc2b0b3ecb06613e57163a88dc4ce53ff7 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald at redhat.com>
+Date: Mon, 5 Aug 2013 11:22:21 +0200
+Subject: [PATCH] dracut.sh: call find with -print0 and cpio with --null
+
+---
+ dracut.sh | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/dracut.sh b/dracut.sh
+index cf92397..3140b7e 100755
+--- a/dracut.sh
++++ b/dracut.sh
+@@ -1259,7 +1259,7 @@ if [[ $early_microcode = yes ]]; then
+             fi
+         done
+     done
+-    (cd "$microcode_dir/d"; find . | cpio -o -H newc --quiet >../ucode.cpio)
++    (cd "$microcode_dir/d"; find . -print0 | cpio --null -o -H newc --quiet >../ucode.cpio)
+ fi
+ 
+ rm -f -- "$outfile"
+@@ -1268,7 +1268,7 @@ if [[ $early_microcode = yes ]]; then
+     # The microcode blob is _before_ the initramfs blob, not after
+     mv $microcode_dir/ucode.cpio $outfile.$$
+ fi
+-if ! ( umask 077; cd "$initdir"; find . |cpio -R 0:0 -H newc -o --quiet| \
++if ! ( umask 077; cd "$initdir"; find . -print0 | cpio --null -R 0:0 -H newc -o --quiet| \
+     $compress >> "$outfile.$$"; ); then
+     dfatal "dracut: creation of $outfile.$$ failed"
+     exit 1
diff --git a/0009-dracut.asc-small-corrections.patch b/0009-dracut.asc-small-corrections.patch
new file mode 100644
index 0000000..6389b32
--- /dev/null
+++ b/0009-dracut.asc-small-corrections.patch
@@ -0,0 +1,198 @@
+From 89f7217954231dc11307cc481f1e3ca8ad3ad001 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald at redhat.com>
+Date: Mon, 5 Aug 2013 11:22:55 +0200
+Subject: [PATCH] dracut.asc: small corrections
+
+---
+ dracut.asc | 75 ++++++++++++++------------------------------------------------
+ 1 file changed, 16 insertions(+), 59 deletions(-)
+
+diff --git a/dracut.asc b/dracut.asc
+index 4de3dbf..dfad67e 100644
+--- a/dracut.asc
++++ b/dracut.asc
+@@ -777,25 +777,12 @@ scripts and udev rules.
+ [[stages]]
+ == Boot Process Stages
+ 
+-The init script in _99base_ is the main script, which prepares the root file
+-system for usage, runs udev, mounts the real root device, kills the remaining
+-processes, and switches to the real root device for further booting. dracut
+-modules can insert custom script at various points, to control the boot process.
++dracut modules can insert custom script at various points, to control the boot
++process.
+ These hooks are plain directories containing shell scripts ending with ".sh",
+ which are sourced by init.
+ Common used functions are in _dracut-lib.sh_, which can be sourced by any script.
+ 
+-
+-
+-=== Basic Setup
+-
+-The first thing init does, is to mount _/proc_ and _/sys_ and manually create
+-the basic device nodes and symbolic links in _/dev_ needed to execute basic
+-commands. Then logging is setup according to kernel command line arguments.
+-_/dev/pts_ and _/dev/shm_ are mounted and the first hook is sourced.
+-
+-
+-
+ === Hook: cmdline
+ 
+ The _cmdline_ hook is a place to insert scripts to parse the kernel command line
+@@ -813,63 +800,49 @@ This hook is executed right after the cmdline hook and a check if root and
+ rootok were set. Here modules can take action with the final root, and before
+ udev has been run.
+ 
+-
+-
+ === Start Udev
+ 
+ Now udev is started and the logging for udev is setup.
+ 
+-
+-
+ === Hook: pre-trigger
+ 
+ In this hook, you can set udev environment variables with **udevadm control
+ --property=KEY=_value_** or control the further execution of udev with
+ udevadm.
+ 
+-
+-
+ === Trigger Udev
+ 
+ udev is triggered by calling udevadm trigger, which sends add events for all
+ devices and subsystems.
+ 
+-
+-
+ === Main Loop
+ 
+-Now the main loop of 99base/init begins. Here we loop until udev has settled and
+-all scripts in _initqueue/finished_ returned true. In this loop there are three
+-hooks, where scripts can be inserted by calling /sbin/initqueue. 
+-
+-
++In the main loop of dracut loops until udev has settled and
++all scripts in _initqueue/finished_ returned true.
++In this loop there are three hooks, where scripts can be inserted
++by calling /sbin/initqueue.
+ 
+ ==== Initqueue
+ 
+ This hook gets executed every time a script is inserted here, regardless of the
+ udev state.
+ 
+-
+-
+ ==== Initqueue settled
+ 
+-This hooks gets executed every time udev has settled.
+-
++This hooks (initqueue/settled) gets executed every time udev has settled.
+ 
+ 
+ ==== Initqueue timeout
+ 
+-This hooks gets executed, when the main loop counter becomes half of the
++This hooks (initqueue/timeout) gets executed, when the main loop counter becomes half of the
+ rd.retry counter.
+ 
+-
+-
+ ==== Initqueue finished
+ 
+-This hook is called after udev has settled and if all scripts herein return 0
+-the main loop will be ended.
+-
+-
++This hook (initqueue/finished) is called after udev has settled and
++if all scripts herein return 0 the main loop will be ended.
++Abritary scripts can be added here, to loop in the
++initqueue until something happens, which a dracut module wants to wait for.
+ 
+ === Hook: pre-mount
+ 
+@@ -877,20 +850,15 @@ Before the root device is mounted all scripts in the hook pre-mount are
+ executed. In some cases (e.g. NFS) the real root device is already mounted,
+ though.
+ 
+-
+-
+ === Hook: mount
+ 
+ This hook is mainly to mount the real root device.
+ 
+-
+-
+ === Hook: pre-pivot
+ 
+ This hook is called before cleanup hook, This is a good place for
+ actions other than cleanups which need to be called before pivot.
+ 
+-
+ === Hook: cleanup
+ 
+ This hook is the last hook and is called before init finally switches root to
+@@ -900,21 +868,18 @@ needed anymore.
+ 
+ === Cleanup and switch_root
+ 
+-Init kills all udev processes, cleans up the environment, sets up the arguments
+-for the real init process and finally calls switch_root. switch_root removes the
+-whole filesystem hierarchy of the initramfs, chroot()s to the real root device
+-and calls /sbin/init with the specified arguments.
++Init (or systemd) kills all udev processes, cleans up the environment,
++sets up the arguments for the real init process and finally calls switch_root.
++switch_root removes the whole filesystem hierarchy of the initramfs,
++chroot()s to the real root device and calls /sbin/init with the specified arguments.
+ 
+ To ensure all files in the initramfs hierarchy can be removed, all processes
+ still running from the initramfs should not have any open file descriptors left.
+ 
+-
+-
+ == Network Infrastructure
+ 
+ FIXME
+ 
+-
+ == Writing a Module
+ 
+ A simple example module is _96insmodpost_, which modprobes a kernel module after
+@@ -926,8 +891,6 @@ First we create a check() function, which just exits with 0 indicating that this
+ module should be included by default.
+ 
+ check():
+-
+-
+ ----
+ return 0
+ ----
+@@ -937,8 +900,6 @@ priority number 20 called _parse-insmodpost.sh_. It also installs the
+ _insmodpost.sh_ script in _/sbin_.
+ 
+ install():
+-
+-
+ ----
+ inst_hook cmdline 20 "$moddir/parse-insmodpost.sh"
+ inst_simple "$moddir/insmodpost.sh" /sbin/insmodpost.sh
+@@ -949,8 +910,6 @@ rd.driver.post, blacklists the module from being autoloaded and installs the
+ hook _insmodpost.sh_ in the _initqueue/settled_.
+ 
+ _parse-insmodpost.sh_:
+-
+-
+ ----
+ for p in $(getargs rd.driver.post=); do
+     echo "blacklist $p" >> /etc/modprobe.d/initramfsblacklist.conf
+@@ -967,8 +926,6 @@ modprobe the kernel modules specified in all rd.driver.post kernel command line
+ parameters. It runs after udev has settled and is only called once (--onetime).
+ 
+ _insmodpost.sh_:
+-
+-
+ ----
+ . /lib/dracut-lib.sh
+ 
diff --git a/0010-systemd-dracut-initqueue.sh-continue-to-boot-if-fini.patch b/0010-systemd-dracut-initqueue.sh-continue-to-boot-if-fini.patch
new file mode 100644
index 0000000..d273a51
--- /dev/null
+++ b/0010-systemd-dracut-initqueue.sh-continue-to-boot-if-fini.patch
@@ -0,0 +1,31 @@
+From 226e3710b4236c69a8f821b6a5c53a264fe4892a Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald at redhat.com>
+Date: Mon, 5 Aug 2013 11:23:16 +0200
+Subject: [PATCH] systemd/dracut-initqueue.sh: continue to boot if finished
+ failed
+
+but /sysroot/etc/fstab exists.
+---
+ modules.d/98systemd/dracut-initqueue.sh | 9 ++++++++-
+ 1 file changed, 8 insertions(+), 1 deletion(-)
+
+diff --git a/modules.d/98systemd/dracut-initqueue.sh b/modules.d/98systemd/dracut-initqueue.sh
+index 35cd76f..893ebc4 100755
+--- a/modules.d/98systemd/dracut-initqueue.sh
++++ b/modules.d/98systemd/dracut-initqueue.sh
+@@ -62,7 +62,14 @@ while :; do
+     fi
+ 
+     main_loop=$(($main_loop+1))
+-    [ $main_loop -gt $RDRETRY ] && action_on_fail "Could not boot." && break
++    if [ $main_loop -gt $RDRETRY ];
++        if ! [ -d /sysroot/etc/fstab ] || ! [ -e /sysroot/sbin/init ] ; then
++            action_on_fail "Could not boot." && break
++        fi
++        warn "Not all disks have been found."
++        warn "You might want to regenerate your initramfs."
++        break
++    fi
+ done
+ 
+ unset job
diff --git a/0011-dracut.sh-dracut-functions.sh-handle-root-on-non-blo.patch b/0011-dracut.sh-dracut-functions.sh-handle-root-on-non-blo.patch
new file mode 100644
index 0000000..7c6ea1f
--- /dev/null
+++ b/0011-dracut.sh-dracut-functions.sh-handle-root-on-non-blo.patch
@@ -0,0 +1,42 @@
+From a4f7b504712bd7499d60d16f358ec89ab31bbb47 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald at redhat.com>
+Date: Mon, 5 Aug 2013 11:25:45 +0200
+Subject: [PATCH] dracut.sh/dracut-functions.sh: handle root on non-block
+ device
+
+---
+ dracut-functions.sh | 4 +++-
+ dracut.sh           | 5 ++++-
+ 2 files changed, 7 insertions(+), 2 deletions(-)
+
+diff --git a/dracut-functions.sh b/dracut-functions.sh
+index eb1278e..dee53bb 100755
+--- a/dracut-functions.sh
++++ b/dracut-functions.sh
+@@ -421,7 +421,9 @@ find_mp_fstype() {
+ find_dev_fstype() {
+     local _find_dev _fs
+     _find_dev="$1"
+-    [[ "$_find_dev" = /dev* ]] || _find_dev="/dev/block/$_find_dev"
++    if ! [[ "$_find_dev" = /dev* ]]; then
++        [[ -b "/dev/block/$_find_dev" ]] && _find_dev="/dev/block/$_find_dev"
++    fi
+ 
+     if [[ $use_fstab != yes ]]; then
+         findmnt -e -v -n -o 'FSTYPE' --source "$_find_dev" | { \
+diff --git a/dracut.sh b/dracut.sh
+index 3140b7e..c35d771 100755
+--- a/dracut.sh
++++ b/dracut.sh
+@@ -871,7 +871,10 @@ if [[ $hostonly ]]; then
+     do
+         mp=$(readlink -f "$mp")
+         mountpoint "$mp" >/dev/null 2>&1 || continue
+-        _dev="$(readlink -f "/dev/block/$(find_block_device "$mp")")"
++        _dev=$(find_block_device "$mp")
++        _bdev=$(readlink -f "/dev/block/$dev")
++        [[ -b $_bdev ]] && _dev=$_bdev
++        push host_devs $_dev
+         [[ "$_mp" == "/" ]] && root_dev="$_dev"
+         push host_devs "$_dev"
+     done
diff --git a/0012-dracut-functions.sh-removed-non-dracut-install-shell.patch b/0012-dracut-functions.sh-removed-non-dracut-install-shell.patch
new file mode 100644
index 0000000..72d0420
--- /dev/null
+++ b/0012-dracut-functions.sh-removed-non-dracut-install-shell.patch
@@ -0,0 +1,354 @@
+From 55a0b3abc7b8da4f3714cfcb5d34f7aa4e78e5bc Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald at redhat.com>
+Date: Mon, 5 Aug 2013 11:47:54 +0200
+Subject: [PATCH] dracut-functions.sh: removed non dracut-install shell
+ functions
+
+---
+ dracut-functions.sh | 315 ++++++++++------------------------------------------
+ 1 file changed, 56 insertions(+), 259 deletions(-)
+
+diff --git a/dracut-functions.sh b/dracut-functions.sh
+index dee53bb..c0a12cd 100755
+--- a/dracut-functions.sh
++++ b/dracut-functions.sh
+@@ -55,14 +55,6 @@ if ! [[ $dracutbasedir ]]; then
+     dracutbasedir="$(readlink -f $dracutbasedir)"
+ fi
+ 
+-if ! [[ $DRACUT_INSTALL ]]; then
+-    DRACUT_INSTALL=$(find_binary dracut-install)
+-fi
+-
+-if ! [[ $DRACUT_INSTALL ]] && [[ -x $dracutbasedir/dracut-install ]]; then
+-    DRACUT_INSTALL=$dracutbasedir/dracut-install
+-fi
+-
+ # Detect lib paths
+ if ! [[ $libdirs ]] ; then
+     if [[ "$(ldd /bin/sh)" == */lib64/* ]] &>/dev/null \
+@@ -588,268 +580,73 @@ fs_get_option() {
+     done
+ }
+ 
+-if [[ $DRACUT_INSTALL ]]; then
+-    [[ $DRACUT_RESOLVE_LAZY ]] || export DRACUT_RESOLVE_DEPS=1
+-    inst_dir() {
+-        [[ -e ${initdir}/"$1" ]] && return 0  # already there
+-        $DRACUT_INSTALL ${initdir+-D "$initdir"} -d "$@"
+-        (($? != 0)) && derror $DRACUT_INSTALL ${initdir+-D "$initdir"} -d "$@" || :
+-    }
+-
+-    inst() {
+-        [[ -e ${initdir}/"${2:-$1}" ]] && return 0  # already there
+-        #dinfo "$DRACUT_INSTALL -l $@"
+-        $DRACUT_INSTALL ${initdir+-D "$initdir"} ${DRACUT_RESOLVE_DEPS+-l} ${DRACUT_FIPS_MODE+-H} "$@"
+-        (($? != 0)) && derror $DRACUT_INSTALL ${initdir+-D "$initdir"} ${DRACUT_RESOLVE_DEPS+-l} ${DRACUT_FIPS_MODE+-H} "$@" || :
+-    }
+-
+-    inst_simple() {
+-        [[ -e ${initdir}/"${2:-$1}" ]] && return 0  # already there
+-        [[ -e $1 ]] || return 1  # no source
+-        $DRACUT_INSTALL ${initdir+-D "$initdir"} "$@"
+-        (($? != 0)) && derror $DRACUT_INSTALL ${initdir+-D "$initdir"} "$@" || :
+-    }
+-
+-    inst_symlink() {
+-        [[ -e ${initdir}/"${2:-$1}" ]] && return 0  # already there
+-        [[ -L $1 ]] || return 1
+-        $DRACUT_INSTALL ${initdir+-D "$initdir"} ${DRACUT_RESOLVE_DEPS+-l}  ${DRACUT_FIPS_MODE+-H} "$@"
+-        (($? != 0)) && derror $DRACUT_INSTALL ${initdir+-D "$initdir"} ${DRACUT_RESOLVE_DEPS+-l}  ${DRACUT_FIPS_MODE+-H} "$@" || :
+-    }
+-
+-    dracut_install() {
+-        local ret
+-        #dinfo "initdir=$initdir $DRACUT_INSTALL -l $@"
+-        $DRACUT_INSTALL ${initdir+-D "$initdir"} -a ${DRACUT_RESOLVE_DEPS+-l}  ${DRACUT_FIPS_MODE+-H} "$@"
+-        ret=$?
+-        (($ret != 0)) && derror $DRACUT_INSTALL ${initdir+-D "$initdir"} -a ${DRACUT_RESOLVE_DEPS+-l}  ${DRACUT_FIPS_MODE+-H} "$@" || :
+-        return $ret
+-    }
+-
+-    inst_library() {
+-        [[ -e ${initdir}/"${2:-$1}" ]] && return 0  # already there
+-        [[ -e $1 ]] || return 1  # no source
+-        $DRACUT_INSTALL ${initdir+-D "$initdir"} ${DRACUT_RESOLVE_DEPS+-l}  ${DRACUT_FIPS_MODE+-H} "$@"
+-        (($? != 0)) && derror $DRACUT_INSTALL ${initdir+-D "$initdir"} ${DRACUT_RESOLVE_DEPS+-l}  ${DRACUT_FIPS_MODE+-H} "$@" || :
+-    }
+-
+-    inst_binary() {
+-        $DRACUT_INSTALL ${initdir+-D "$initdir"} ${DRACUT_RESOLVE_DEPS+-l}  ${DRACUT_FIPS_MODE+-H} "$@"
+-        (($? != 0)) && derror $DRACUT_INSTALL ${initdir+-D "$initdir"} ${DRACUT_RESOLVE_DEPS+-l}  ${DRACUT_FIPS_MODE+-H} "$@" || :
+-    }
+-
+-    inst_script() {
+-        $DRACUT_INSTALL ${initdir+-D "$initdir"} ${DRACUT_RESOLVE_DEPS+-l}  ${DRACUT_FIPS_MODE+-H} "$@"
+-        (($? != 0)) && derror $DRACUT_INSTALL ${initdir+-D "$initdir"} ${DRACUT_RESOLVE_DEPS+-l}  ${DRACUT_FIPS_MODE+-H} "$@" || :
+-    }
+-
+-else
+-
+-    # Install a directory, keeping symlinks as on the original system.
+-    # Example: if /lib points to /lib64 on the host, "inst_dir /lib/file"
+-    # will create ${initdir}/lib64, ${initdir}/lib64/file,
+-    # and a symlink ${initdir}/lib -> lib64.
+-    inst_dir() {
+-        [[ -e ${initdir}/"$1" ]] && return 0  # already there
+-
+-        local _dir="$1" _part="${1%/*}" _file
+-        while [[ "$_part" != "${_part%/*}" ]] && ! [[ -e "${initdir}/${_part}" ]]; do
+-            _dir="$_part $_dir"
+-            _part=${_part%/*}
+-        done
+-
+-        # iterate over parent directories
+-        for _file in $_dir; do
+-            [[ -e "${initdir}/$_file" ]] && continue
+-            if [[ -L $_file ]]; then
+-                inst_symlink "$_file"
+-            else
+-            # create directory
+-                mkdir -m 0755 -p "${initdir}/$_file" || return 1
+-                [[ -e "$_file" ]] && chmod --reference="$_file" "${initdir}/$_file"
+-                chmod u+w "${initdir}/$_file"
+-            fi
+-        done
+-    }
+ 
+-    # $1 = file to copy to ramdisk
+-    # $2 (optional) Name for the file on the ramdisk
+-    # Location of the image dir is assumed to be $initdir
+-    # We never overwrite the target if it exists.
+-    inst_simple() {
+-        [[ -f "$1" ]] || return 1
+-        [[ "$1" == */* ]] || return 1
+-        local _src=$1 _target="${2:-$1}"
+-
+-        [[ -L $_src ]] && { inst_symlink $_src $_target; return $?; }
+-
+-        if ! [[ -d ${initdir}/$_target ]]; then
+-            [[ -e ${initdir}/$_target ]] && return 0
+-            [[ -L ${initdir}/$_target ]] && return 0
+-            [[ -d "${initdir}/${_target%/*}" ]] || inst_dir "${_target%/*}"
+-        fi
+-        if [[ $DRACUT_FIPS_MODE ]]; then
+-            # install checksum files also
+-            if [[ -e "${_src%/*}/.${_src##*/}.hmac" ]]; then
+-                inst "${_src%/*}/.${_src##*/}.hmac" "${_target%/*}/.${_target##*/}.hmac"
+-            fi
+-            if [[ -e "/lib/fipscheck/${_src##*/}.hmac" ]]; then
+-                inst "/lib/fipscheck/${_src##*/}.hmac" "/lib/fipscheck/${_target##*/}.hmac"
+-            fi
+-            if [[ -e "/lib64/fipscheck/${_src##*/}.hmac" ]]; then
+-                inst "/lib64/fipscheck/${_src##*/}.hmac" "/lib64/fipscheck/${_target##*/}.hmac"
+-            fi
+-        fi
+-        ddebug "Installing $_src"
+-        cp --reflink=auto --sparse=auto -pfL "$_src" "${initdir}/$_target"
+-    }
++if ! [[ $DRACUT_INSTALL ]]; then
++    DRACUT_INSTALL=$(find_binary dracut-install)
++fi
+ 
+-    # same as above, but specialized for symlinks
+-    inst_symlink() {
+-        local _src=$1 _target=${2:-$1} _realsrc
+-        [[ "$1" == */* ]] || return 1
+-        [[ -L $1 ]] || return 1
+-        [[ -L $initdir/$_target ]] && return 0
+-        _realsrc=$(readlink -f "$_src")
+-        if ! [[ -e $initdir/$_realsrc ]]; then
+-            if [[ -d $_realsrc ]]; then
+-                inst_dir "$_realsrc"
+-            else
+-                inst "$_realsrc"
+-            fi
+-        fi
+-        [[ ! -e $initdir/${_target%/*} ]] && inst_dir "${_target%/*}"
++if ! [[ $DRACUT_INSTALL ]] && [[ -x $dracutbasedir/dracut-install ]]; then
++    DRACUT_INSTALL=$dracutbasedir/dracut-install
++fi
+ 
+-        ln_r "${_realsrc}" "${_target}"
+-    }
++if ! [[ -x $DRACUT_INSTALL ]]; then
++    dfatal "dracut-install not found!"
++    exit 10
++fi
+ 
+-    # Same as above, but specialized to handle dynamic libraries.
+-    # It handles making symlinks according to how the original library
+-    # is referenced.
+-    inst_library() {
+-        local _src="$1" _dest=${2:-$1} _lib _reallib _symlink
+-        [[ "$1" == */* ]] || return 1
+-        [[ -e $initdir/$_dest ]] && return 0
+-        if [[ -L $_src ]]; then
+-            if [[ $DRACUT_FIPS_MODE ]]; then
+-                # install checksum files also
+-                if [[ -e "${_src%/*}/.${_src##*/}.hmac" ]]; then
+-                    inst "${_src%/*}/.${_src##*/}.hmac" "${_dest%/*}/.${_dest##*/}.hmac"
+-                fi
+-                if [[ -e "/lib/fipscheck/${_src##*/}.hmac" ]]; then
+-                    inst "/lib/fipscheck/${_src##*/}.hmac" "/lib/fipscheck/${_dest##*/}.hmac"
+-                fi
+-                if [[ -e "/lib64/fipscheck/${_src##*/}.hmac" ]]; then
+-                    inst "/lib64/fipscheck/${_src##*/}.hmac" "/lib64/fipscheck/${_dest##*/}.hmac"
+-                fi
+-            fi
+-            _reallib=$(readlink -f "$_src")
+-            inst_simple "$_reallib" "$_reallib"
+-            inst_dir "${_dest%/*}"
+-            ln_r "${_reallib}" "${_dest}"
+-        else
+-            inst_simple "$_src" "$_dest"
+-        fi
++[[ $DRACUT_RESOLVE_LAZY ]] || export DRACUT_RESOLVE_DEPS=1
++inst_dir() {
++    [[ -e ${initdir}/"$1" ]] && return 0  # already there
++    $DRACUT_INSTALL ${initdir+-D "$initdir"} -d "$@"
++    (($? != 0)) && derror $DRACUT_INSTALL ${initdir+-D "$initdir"} -d "$@" || :
++}
+ 
+-        # Create additional symlinks.  See rev_symlinks description.
+-        for _symlink in $(rev_lib_symlinks $_src) $(rev_lib_symlinks $_reallib); do
+-            [[ ! -e $initdir/$_symlink ]] && {
+-                ddebug "Creating extra symlink: $_symlink"
+-                inst_symlink $_symlink
+-            }
+-        done
+-    }
++inst() {
++    [[ -e ${initdir}/"${2:-$1}" ]] && return 0  # already there
++        #dinfo "$DRACUT_INSTALL -l $@"
++    $DRACUT_INSTALL ${initdir+-D "$initdir"} ${DRACUT_RESOLVE_DEPS+-l} ${DRACUT_FIPS_MODE+-H} "$@"
++    (($? != 0)) && derror $DRACUT_INSTALL ${initdir+-D "$initdir"} ${DRACUT_RESOLVE_DEPS+-l} ${DRACUT_FIPS_MODE+-H} "$@" || :
++}
+ 
+-    # Same as above, but specialized to install binary executables.
+-    # Install binary executable, and all shared library dependencies, if any.
+-    inst_binary() {
+-        local _bin _target
+-        _bin=$(find_binary "$1") || return 1
+-        _target=${2:-$_bin}
+-        [[ -e $initdir/$_target ]] && return 0
+-        local _file _line
+-        local _so_regex='([^ ]*/lib[^/]*/[^ ]*\.so[^ ]*)'
+-        # I love bash!
+-        LC_ALL=C ldd "$_bin" 2>/dev/null | while read _line; do
+-            [[ $_line = 'not a dynamic executable' ]] && break
+-
+-            if [[ $_line =~ $_so_regex ]]; then
+-                _file=${BASH_REMATCH[1]}
+-                [[ -e ${initdir}/$_file ]] && continue
+-                inst_library "$_file"
+-                continue
+-            fi
++inst_simple() {
++    [[ -e ${initdir}/"${2:-$1}" ]] && return 0  # already there
++    [[ -e $1 ]] || return 1  # no source
++    $DRACUT_INSTALL ${initdir+-D "$initdir"} "$@"
++    (($? != 0)) && derror $DRACUT_INSTALL ${initdir+-D "$initdir"} "$@" || :
++}
+ 
+-            if [[ $_line == *not\ found* ]]; then
+-                dfatal "Missing a shared library required by $_bin."
+-                dfatal "Run \"ldd $_bin\" to find out what it is."
+-                dfatal "$_line"
+-                dfatal "dracut cannot create an initrd."
+-                exit 1
+-            fi
+-        done
+-        inst_simple "$_bin" "$_target"
+-    }
++inst_symlink() {
++    [[ -e ${initdir}/"${2:-$1}" ]] && return 0  # already there
++    [[ -L $1 ]] || return 1
++    $DRACUT_INSTALL ${initdir+-D "$initdir"} ${DRACUT_RESOLVE_DEPS+-l}  ${DRACUT_FIPS_MODE+-H} "$@"
++    (($? != 0)) && derror $DRACUT_INSTALL ${initdir+-D "$initdir"} ${DRACUT_RESOLVE_DEPS+-l}  ${DRACUT_FIPS_MODE+-H} "$@" || :
++}
+ 
+-    # same as above, except for shell scripts.
+-    # If your shell script does not start with shebang, it is not a shell script.
+-    inst_script() {
+-        local _bin
+-        _bin=$(find_binary "$1") || return 1
+-        shift
+-        local _line _shebang_regex
+-        read -r -n 80 _line <"$_bin"
+-        # If debug is set, clean unprintable chars to prevent messing up the term
+-        [[ $debug ]] && _line=$(echo -n "$_line" | tr -c -d '[:print:][:space:]')
+-        _shebang_regex='(#! *)(/[^ ]+).*'
+-        [[ $_line =~ $_shebang_regex ]] || return 1
+-        inst "${BASH_REMATCH[2]}" && inst_simple "$_bin" "$@"
+-    }
++dracut_install() {
++    local ret
++        #dinfo "initdir=$initdir $DRACUT_INSTALL -l $@"
++    $DRACUT_INSTALL ${initdir+-D "$initdir"} -a ${DRACUT_RESOLVE_DEPS+-l}  ${DRACUT_FIPS_MODE+-H} "$@"
++    ret=$?
++    (($ret != 0)) && derror $DRACUT_INSTALL ${initdir+-D "$initdir"} -a ${DRACUT_RESOLVE_DEPS+-l}  ${DRACUT_FIPS_MODE+-H} "$@" || :
++    return $ret
++}
+ 
+-    # general purpose installation function
+-    # Same args as above.
+-    inst() {
+-        local _x
+-
+-        case $# in
+-            1) ;;
+-            2) [[ ! $initdir && -d $2 ]] && export initdir=$2
+-                [[ $initdir = $2 ]] && set $1;;
+-            3) [[ -z $initdir ]] && export initdir=$2
+-                set $1 $3;;
+-            *) dfatal "inst only takes 1 or 2 or 3 arguments"
+-                exit 1;;
+-        esac
+-        for _x in inst_symlink inst_script inst_binary inst_simple; do
+-            $_x "$@" && return 0
+-        done
+-        return 1
+-    }
++inst_library() {
++    [[ -e ${initdir}/"${2:-$1}" ]] && return 0  # already there
++    [[ -e $1 ]] || return 1  # no source
++    $DRACUT_INSTALL ${initdir+-D "$initdir"} ${DRACUT_RESOLVE_DEPS+-l}  ${DRACUT_FIPS_MODE+-H} "$@"
++    (($? != 0)) && derror $DRACUT_INSTALL ${initdir+-D "$initdir"} ${DRACUT_RESOLVE_DEPS+-l}  ${DRACUT_FIPS_MODE+-H} "$@" || :
++}
+ 
+-    # dracut_install [-o ] <file> [<file> ... ]
+-    # Install <file> to the initramfs image
+-    # -o optionally install the <file> and don't fail, if it is not there
+-    dracut_install() {
+-        local _optional=no
+-        if [[ $1 = '-o' ]]; then
+-            _optional=yes
+-            shift
+-        fi
+-        while (($# > 0)); do
+-            if ! inst "$1" ; then
+-                if [[ $_optional = yes ]]; then
+-                    dinfo "Skipping program $1 as it cannot be found and is" \
+-                        "flagged to be optional"
+-                else
+-                    dfatal "Failed to install $1"
+-                    exit 1
+-                fi
+-            fi
+-            shift
+-        done
+-    }
++inst_binary() {
++    $DRACUT_INSTALL ${initdir+-D "$initdir"} ${DRACUT_RESOLVE_DEPS+-l}  ${DRACUT_FIPS_MODE+-H} "$@"
++    (($? != 0)) && derror $DRACUT_INSTALL ${initdir+-D "$initdir"} ${DRACUT_RESOLVE_DEPS+-l}  ${DRACUT_FIPS_MODE+-H} "$@" || :
++}
+ 
+-fi
++inst_script() {
++    $DRACUT_INSTALL ${initdir+-D "$initdir"} ${DRACUT_RESOLVE_DEPS+-l}  ${DRACUT_FIPS_MODE+-H} "$@"
++    (($? != 0)) && derror $DRACUT_INSTALL ${initdir+-D "$initdir"} ${DRACUT_RESOLVE_DEPS+-l}  ${DRACUT_FIPS_MODE+-H} "$@" || :
++}
+ 
+ # find symlinks linked to given library file
+ # $1 = library file
diff --git a/0013-dracut-functions.sh-inst_multiple-dracut_install.patch b/0013-dracut-functions.sh-inst_multiple-dracut_install.patch
new file mode 100644
index 0000000..843ecd3
--- /dev/null
+++ b/0013-dracut-functions.sh-inst_multiple-dracut_install.patch
@@ -0,0 +1,1758 @@
+From af11946054193dbb13eec70cb62e6b0963c5fb41 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald at redhat.com>
+Date: Mon, 5 Aug 2013 12:10:12 +0200
+Subject: [PATCH] dracut-functions.sh: inst_multiple == dracut_install
+
+---
+ dracut-functions.sh                              | 12 +++++++----
+ dracut.asc                                       |  2 +-
+ dracut.sh                                        |  6 +++---
+ modules.d/00bootchart/module-setup.sh            |  2 +-
+ modules.d/00systemd-bootchart/module-setup.sh    |  2 +-
+ modules.d/01fips/module-setup.sh                 |  4 ++--
+ modules.d/03rescue/module-setup.sh               |  2 +-
+ modules.d/04watchdog/module-setup.sh             |  2 +-
+ modules.d/10i18n/module-setup.sh                 |  8 ++++----
+ modules.d/30convertfs/module-setup.sh            |  2 +-
+ modules.d/40network/module-setup.sh              |  8 ++++----
+ modules.d/45url-lib/module-setup.sh              |  2 +-
+ modules.d/50gensplash/module-setup.sh            |  2 +-
+ modules.d/50plymouth/module-setup.sh             |  2 +-
+ modules.d/50plymouth/plymouth-populate-initrd.sh |  6 +++---
+ modules.d/80cms/module-setup.sh                  |  2 +-
+ modules.d/90bcache/module-setup.sh               |  2 +-
+ modules.d/90btrfs/module-setup.sh                |  2 +-
+ modules.d/90crypt/module-setup.sh                |  4 ++--
+ modules.d/90dm/module-setup.sh                   |  4 ++--
+ modules.d/90dmraid/module-setup.sh               |  4 ++--
+ modules.d/90dmsquash-live/module-setup.sh        |  4 ++--
+ modules.d/90kernel-modules/module-setup.sh       |  4 ++--
+ modules.d/90lvm/module-setup.sh                  |  2 +-
+ modules.d/90mdraid/module-setup.sh               |  4 ++--
+ modules.d/90multipath/module-setup.sh            |  4 ++--
+ modules.d/91crypt-gpg/module-setup.sh            |  2 +-
+ modules.d/91crypt-loop/module-setup.sh           |  2 +-
+ modules.d/95cifs/module-setup.sh                 |  4 ++--
+ modules.d/95dasd/module-setup.sh                 |  2 +-
+ modules.d/95dasd_mod/module-setup.sh             |  2 +-
+ modules.d/95debug/module-setup.sh                |  2 +-
+ modules.d/95fcoe/module-setup.sh                 |  2 +-
+ modules.d/95iscsi/module-setup.sh                |  4 ++--
+ modules.d/95nfs/module-setup.sh                  |  6 +++---
+ modules.d/95rootfs-block/module-setup.sh         |  4 ++--
+ modules.d/95ssh-client/module-setup.sh           |  2 +-
+ modules.d/95udev-rules/module-setup.sh           |  6 +++---
+ modules.d/95zfcp/module-setup.sh                 |  2 +-
+ modules.d/95znet/module-setup.sh                 |  2 +-
+ modules.d/97biosdevname/module-setup.sh          |  2 +-
+ modules.d/97masterkey/module-setup.sh            |  2 +-
+ modules.d/98selinux/module-setup.sh              |  2 +-
+ modules.d/98syslog/module-setup.sh               |  2 +-
+ modules.d/98systemd/module-setup.sh              |  8 ++++----
+ modules.d/99base/module-setup.sh                 | 10 ++++-----
+ modules.d/99fs-lib/module-setup.sh               |  2 +-
+ modules.d/99img-lib/module-setup.sh              |  4 ++--
+ modules.d/99shutdown/module-setup.sh             |  4 ++--
+ test/TEST-01-BASIC/test.sh                       | 12 +++++------
+ test/TEST-02-SYSTEMD/test.sh                     | 12 +++++------
+ test/TEST-03-USR-MOUNT/test.sh                   | 12 +++++------
+ test/TEST-04-FULL-SYSTEMD/test.sh                | 26 ++++++++++++------------
+ test/TEST-10-RAID/test.sh                        | 14 ++++++-------
+ test/TEST-11-LVM/test.sh                         | 12 +++++------
+ test/TEST-12-RAID-DEG/test.sh                    | 12 +++++------
+ test/TEST-13-ENC-RAID-LVM/test.sh                | 12 +++++------
+ test/TEST-15-BTRFSRAID/test.sh                   | 12 +++++------
+ test/TEST-16-DMSQUASH/test.sh                    | 10 ++++-----
+ test/TEST-20-NFS/test.sh                         | 22 ++++++++++----------
+ test/TEST-30-ISCSI/test.sh                       | 20 +++++++++---------
+ test/TEST-40-NBD/test.sh                         | 20 +++++++++---------
+ test/TEST-50-MULTINIC/test.sh                    | 24 +++++++++++-----------
+ test/old.TEST-14-IMSM/test.sh                    | 12 +++++------
+ 64 files changed, 206 insertions(+), 202 deletions(-)
+
+diff --git a/dracut-functions.sh b/dracut-functions.sh
+index c0a12cd..fbe0633 100755
+--- a/dracut-functions.sh
++++ b/dracut-functions.sh
+@@ -622,7 +622,7 @@ inst_symlink() {
+     (($? != 0)) && derror $DRACUT_INSTALL ${initdir+-D "$initdir"} ${DRACUT_RESOLVE_DEPS+-l}  ${DRACUT_FIPS_MODE+-H} "$@" || :
+ }
+ 
+-dracut_install() {
++inst_multiple() {
+     local ret
+         #dinfo "initdir=$initdir $DRACUT_INSTALL -l $@"
+     $DRACUT_INSTALL ${initdir+-D "$initdir"} -a ${DRACUT_RESOLVE_DEPS+-l}  ${DRACUT_FIPS_MODE+-H} "$@"
+@@ -631,6 +631,10 @@ dracut_install() {
+     return $ret
+ }
+ 
++dracut_install() {
++    inst_multiple "$@"
++}
++
+ inst_library() {
+     [[ -e ${initdir}/"${2:-$1}" ]] && return 0  # already there
+     [[ -e $1 ]] || return 1  # no source
+@@ -689,7 +693,7 @@ inst_rule_programs() {
+                 }
+             fi
+ 
+-            [[ $_bin ]] && dracut_install "$_bin"
++            [[ $_bin ]] && inst_binary "$_bin"
+         done
+     fi
+     if grep -qE 'RUN[+=]=?"[^ "]+' "$1"; then
+@@ -704,7 +708,7 @@ inst_rule_programs() {
+                 }
+             fi
+ 
+-            [[ $_bin ]] && dracut_install "$_bin"
++            [[ $_bin ]] && inst_binary "$_bin"
+         done
+     fi
+     if grep -qE 'IMPORT\{program\}==?"[^ "]+' "$1"; then
+@@ -878,7 +882,7 @@ inst_libdir_file() {
+             done
+         done
+     fi
+-    [[ $_files ]] && dracut_install $_files
++    [[ $_files ]] && inst_multiple $_files
+ }
+ 
+ 
+diff --git a/dracut.asc b/dracut.asc
+index dfad67e..e0431dc 100644
+--- a/dracut.asc
++++ b/dracut.asc
+@@ -967,7 +967,7 @@ depends on.
+ 
+ === install()
+ 
+-dracut_install
++inst_multiple
+ 
+ inst
+ 
+diff --git a/dracut.sh b/dracut.sh
+index c35d771..e119bd2 100755
+--- a/dracut.sh
++++ b/dracut.sh
+@@ -1107,7 +1107,7 @@ if [[ $no_kernel != yes ]]; then
+ fi
+ 
+ if [[ $kernel_only != yes ]]; then
+-    (( ${#install_items[@]} > 0 )) && dracut_install ${install_items[@]}
++    (( ${#install_items[@]} > 0 )) && inst_multiple ${install_items[@]}
+ 
+     [[ $kernel_cmdline ]] && printf "%s\n" "$kernel_cmdline" >> "${initdir}/etc/cmdline.d/01-default.conf"
+ 
+@@ -1182,10 +1182,10 @@ PRELINK_BIN="$(command -v prelink)"
+ if [[ $UID = 0 ]] && [[ $PRELINK_BIN ]]; then
+     if [[ $DRACUT_FIPS_MODE ]]; then
+         dinfo "*** Installing prelink files ***"
+-        dracut_install -o prelink /etc/prelink.conf /etc/prelink.conf.d/*.conf /etc/prelink.cache
++        inst_multiple -o prelink /etc/prelink.conf /etc/prelink.conf.d/*.conf /etc/prelink.cache
+     else
+         dinfo "*** Pre-linking files ***"
+-        dracut_install -o prelink /etc/prelink.conf /etc/prelink.conf.d/*.conf
++        inst_multiple -o prelink /etc/prelink.conf /etc/prelink.conf.d/*.conf
+         chroot "$initdir" "$PRELINK_BIN" -a
+         rm -f -- "$initdir/$PRELINK_BIN"
+         rm -fr -- "$initdir"/etc/prelink.*
+diff --git a/modules.d/00bootchart/module-setup.sh b/modules.d/00bootchart/module-setup.sh
+index 8a9f470..72b6063 100755
+--- a/modules.d/00bootchart/module-setup.sh
++++ b/modules.d/00bootchart/module-setup.sh
+@@ -16,7 +16,7 @@ install() {
+     inst_symlink /init /sbin/init
+     inst_dir /lib/bootchart/tmpfs
+ 
+-    dracut_install bootchartd bash \
++    inst_multiple bootchartd bash \
+         /lib/bootchart/bootchart-collector /etc/bootchartd.conf \
+         accton \
+         echo \
+diff --git a/modules.d/00systemd-bootchart/module-setup.sh b/modules.d/00systemd-bootchart/module-setup.sh
+index 74935a9..3eb4de1 100755
+--- a/modules.d/00systemd-bootchart/module-setup.sh
++++ b/modules.d/00systemd-bootchart/module-setup.sh
+@@ -14,5 +14,5 @@ depends() {
+ 
+ install() {
+     inst_symlink /init /sbin/init
+-    dracut_install $systemdutildir/systemd-bootchart
++    inst_multiple $systemdutildir/systemd-bootchart
+ }
+diff --git a/modules.d/01fips/module-setup.sh b/modules.d/01fips/module-setup.sh
+index 6013318..d08e3f7 100755
+--- a/modules.d/01fips/module-setup.sh
++++ b/modules.d/01fips/module-setup.sh
+@@ -34,12 +34,12 @@ install() {
+     inst_hook pre-pivot 01 "$moddir/fips-noboot.sh"
+     inst_script "$moddir/fips.sh" /sbin/fips.sh
+ 
+-    dracut_install sha512hmac rmmod insmod mount uname umount fipscheck
++    inst_multiple sha512hmac rmmod insmod mount uname umount fipscheck
+ 
+     inst_libdir_file libsoftokn3.so libsoftokn3.so \
+         libsoftokn3.chk libfreebl3.so libfreebl3.chk \
+         libssl.so 'hmaccalc/sha512hmac.hmac' libssl.so.10
+ 
+-    dracut_install -o prelink
++    inst_multiple -o prelink
+ }
+ 
+diff --git a/modules.d/03rescue/module-setup.sh b/modules.d/03rescue/module-setup.sh
+index 3f10b7c..72a4287 100755
+--- a/modules.d/03rescue/module-setup.sh
++++ b/modules.d/03rescue/module-setup.sh
+@@ -12,7 +12,7 @@ depends() {
+ }
+ 
+ install() {
+-    dracut_install -o ps grep more cat rm strace free showmount \
++    inst_multiple -o ps grep more cat rm strace free showmount \
+         ping netstat rpcinfo vi scp ping6 ssh \
+         fsck fsck.ext2 fsck.ext4 fsck.ext3 fsck.ext4dev fsck.vfat e2fsck
+ }
+diff --git a/modules.d/04watchdog/module-setup.sh b/modules.d/04watchdog/module-setup.sh
+index 5eff390..b7725ef 100755
+--- a/modules.d/04watchdog/module-setup.sh
++++ b/modules.d/04watchdog/module-setup.sh
+@@ -23,6 +23,6 @@ install() {
+     inst_hook cleanup   00 "$moddir/watchdog.sh"
+     inst_hook cleanup   99 "$moddir/watchdog.sh"
+     inst_hook emergency 02 "$moddir/watchdog-stop.sh"
+-    dracut_install -o wdctl
++    inst_multiple -o wdctl
+ }
+ 
+diff --git a/modules.d/10i18n/module-setup.sh b/modules.d/10i18n/module-setup.sh
+index e7e5a1c..be9d90b 100755
+--- a/modules.d/10i18n/module-setup.sh
++++ b/modules.d/10i18n/module-setup.sh
+@@ -21,7 +21,7 @@ install() {
+         [[ $FONT ]] || [[ $KEYMAP ]] || return 0
+     fi
+ 
+-    dracut_install -o $systemdutildir/systemd-vconsole-setup
++    inst_multiple -o $systemdutildir/systemd-vconsole-setup
+     KBDSUBDIRS=consolefonts,consoletrans,keymaps,unimaps
+     DEFAULT_FONT="${i18n_default_font:-LatArCyrHeb-16}"
+     I18N_CONF="/etc/locale.conf"
+@@ -93,7 +93,7 @@ install() {
+     }
+ 
+     install_base() {
+-        dracut_install setfont loadkeys kbd_mode stty
++        inst_multiple setfont loadkeys kbd_mode stty
+ 
+         if ! dracut_module_included "systemd"; then
+             inst ${moddir}/console_init.sh /lib/udev/console_init
+@@ -115,12 +115,12 @@ install() {
+         find "${initdir}${kbddir}/" -name README\* -delete
+         find "${initdir}${kbddir}/" -name '*.gz' -print -quit \
+             | while read line; do
+-            dracut_install gzip
++            inst_multiple gzip
+             done
+ 
+         find "${initdir}${kbddir}/" -name '*.bz2' -print -quit \
+             | while read line; do
+-            dracut_install bzip2
++            inst_multiple bzip2
+             done
+     }
+ 
+diff --git a/modules.d/30convertfs/module-setup.sh b/modules.d/30convertfs/module-setup.sh
+index d87e935..9efd5dd 100755
+--- a/modules.d/30convertfs/module-setup.sh
++++ b/modules.d/30convertfs/module-setup.sh
+@@ -12,7 +12,7 @@ depends() {
+ }
+ 
+ install() {
+-    dracut_install bash find ldconfig mv rm cp ln
++    inst_multiple bash find ldconfig mv rm cp ln
+     inst_hook pre-pivot 99 "$moddir/do-convertfs.sh"
+     inst_script "$moddir/convertfs.sh" /usr/bin/convertfs
+ }
+diff --git a/modules.d/40network/module-setup.sh b/modules.d/40network/module-setup.sh
+index bd2542d..a5f635d 100755
+--- a/modules.d/40network/module-setup.sh
++++ b/modules.d/40network/module-setup.sh
+@@ -70,10 +70,10 @@ installkernel() {
+ 
+ install() {
+     local _arch _i _dir
+-    dracut_install ip arping dhclient sed
+-    dracut_install -o ping ping6
+-    dracut_install -o brctl
+-    dracut_install -o teamd teamdctl teamnl
++    inst_multiple ip arping dhclient sed
++    inst_multiple -o ping ping6
++    inst_multiple -o brctl
++    inst_multiple -o teamd teamdctl teamnl
+     inst_simple /etc/libnl/classid
+     inst_script "$moddir/ifup.sh" "/sbin/ifup"
+     inst_script "$moddir/netroot.sh" "/sbin/netroot"
+diff --git a/modules.d/45url-lib/module-setup.sh b/modules.d/45url-lib/module-setup.sh
+index 3e82548..b5cf36f 100755
+--- a/modules.d/45url-lib/module-setup.sh
++++ b/modules.d/45url-lib/module-setup.sh
+@@ -14,7 +14,7 @@ depends() {
+ install() {
+     local _dir _crt _found _lib
+     inst_simple "$moddir/url-lib.sh" "/lib/url-lib.sh"
+-    dracut_install curl
++    inst_multiple curl
+     # also install libs for curl https
+     inst_libdir_file "libnsspem.so*"
+     inst_libdir_file "libnsssysinit.so*"
+diff --git a/modules.d/50gensplash/module-setup.sh b/modules.d/50gensplash/module-setup.sh
+index 29b93cd..cfee55a 100755
+--- a/modules.d/50gensplash/module-setup.sh
++++ b/modules.d/50gensplash/module-setup.sh
+@@ -71,7 +71,7 @@ install() {
+     mv dev.old dev
+     popd >/dev/null
+ 
+-    dracut_install chvt
++    inst_multiple chvt
+     inst /usr/share/splashutils/initrd.splash /lib/gensplash-lib.sh
+     inst_hook pre-pivot 90 "${moddir}"/gensplash-newroot.sh
+     inst_hook pre-trigger 10 "${moddir}"/gensplash-pretrigger.sh
+diff --git a/modules.d/50plymouth/module-setup.sh b/modules.d/50plymouth/module-setup.sh
+index ae35b11..e0e6936 100755
+--- a/modules.d/50plymouth/module-setup.sh
++++ b/modules.d/50plymouth/module-setup.sh
+@@ -22,7 +22,7 @@ install() {
+ 
+     inst_hook emergency 50 "$moddir"/plymouth-emergency.sh
+ 
+-    dracut_install readlink
++    inst_multiple readlink
+ 
+     if ! dracut_module_included "systemd"; then
+         inst_hook pre-trigger 10 "$moddir"/plymouth-pretrigger.sh
+diff --git a/modules.d/50plymouth/plymouth-populate-initrd.sh b/modules.d/50plymouth/plymouth-populate-initrd.sh
+index 6e0f561..f8ef519 100755
+--- a/modules.d/50plymouth/plymouth-populate-initrd.sh
++++ b/modules.d/50plymouth/plymouth-populate-initrd.sh
+@@ -4,7 +4,7 @@
+ PLYMOUTH_LOGO_FILE="/usr/share/pixmaps/system-logo-white.png"
+ PLYMOUTH_THEME=$(plymouth-set-default-theme)
+ 
+-dracut_install plymouthd plymouth \
++inst_multiple plymouthd plymouth \
+     "${PLYMOUTH_LOGO_FILE}" \
+     /etc/system-release
+ 
+@@ -13,7 +13,7 @@ mkdir -m 0755 -p "${initdir}/usr/share/plymouth"
+ inst_libdir_file "plymouth/text.so" "plymouth/details.so"
+ 
+ if [[ $hostonly ]]; then
+-    dracut_install \
++    inst_multiple \
+         "/usr/share/plymouth/themes/details/details.plymouth" \
+         "/usr/share/plymouth/themes/text/text.plymouth" \
+ 
+@@ -35,7 +35,7 @@ else
+         [[ -f "$x" ]] || continue
+         THEME_DIR=$(dirname "$x")
+         mkdir -m 0755 -p "${initdir}/$THEME_DIR"
+-        dracut_install "$x"
++        inst_multiple "$x"
+     done
+     (
+         cd ${initdir}/usr/share/plymouth/themes;
+diff --git a/modules.d/80cms/module-setup.sh b/modules.d/80cms/module-setup.sh
+index dcba4c6..c99f236 100755
+--- a/modules.d/80cms/module-setup.sh
++++ b/modules.d/80cms/module-setup.sh
+@@ -23,7 +23,7 @@ install() {
+     inst_hook pre-trigger 30 "$moddir/cmssetup.sh"
+     inst_hook pre-pivot 95 "$moddir/cms-write-ifcfg.sh"
+     inst_script "$moddir/cmsifup.sh" /sbin/cmsifup
+-    dracut_install /etc/cmsfs-fuse/filetypes.conf /etc/udev/rules.d/99-fuse.rules /etc/fuse.conf \
++    inst_multiple /etc/cmsfs-fuse/filetypes.conf /etc/udev/rules.d/99-fuse.rules /etc/fuse.conf \
+         cmsfs-fuse fusermount ulockmgr_server bash insmod rmmod cat normalize_dasd_arg sed \
+         $(rpm -ql s390utils-base)
+ 
+diff --git a/modules.d/90bcache/module-setup.sh b/modules.d/90bcache/module-setup.sh
+index fb881cc..3bb03f4 100755
+--- a/modules.d/90bcache/module-setup.sh
++++ b/modules.d/90bcache/module-setup.sh
+@@ -24,7 +24,7 @@ installkernel() {
+ }
+ 
+ install() {
+-    dracut_install probe-bcache ${udevdir}/bcache-register
++    inst_multiple probe-bcache ${udevdir}/bcache-register
+     inst_rules 61-bcache.rules
+ }
+ 
+diff --git a/modules.d/90btrfs/module-setup.sh b/modules.d/90btrfs/module-setup.sh
+index e1c8577..638a050 100755
+--- a/modules.d/90btrfs/module-setup.sh
++++ b/modules.d/90btrfs/module-setup.sh
+@@ -43,7 +43,7 @@ install() {
+             /usr/lib/dracut/hooks/initqueue/timeout/btrfs_timeout.sh
+     fi
+ 
+-    dracut_install -o btrfsck btrfs-zero-log
++    inst_multiple -o btrfsck btrfs-zero-log
+     inst $(command -v btrfs) /sbin/btrfs
+ }
+ 
+diff --git a/modules.d/90crypt/module-setup.sh b/modules.d/90crypt/module-setup.sh
+index 6b32b6a..975f115 100755
+--- a/modules.d/90crypt/module-setup.sh
++++ b/modules.d/90crypt/module-setup.sh
+@@ -48,7 +48,7 @@ install() {
+ 
+     for_each_host_dev_fs check_crypt
+ 
+-    dracut_install cryptsetup rmdir readlink umount
++    inst_multiple cryptsetup rmdir readlink umount
+     inst_script "$moddir"/cryptroot-ask.sh /sbin/cryptroot-ask
+     inst_script "$moddir"/probe-keydev.sh /sbin/probe-keydev
+     inst_hook cmdline 10 "$moddir/parse-keydev.sh"
+@@ -78,7 +78,7 @@ install() {
+ 
+     inst_simple "$moddir/crypt-lib.sh" "/lib/dracut-crypt-lib.sh"
+ 
+-    dracut_install -o \
++    inst_multiple -o \
+         $systemdutildir/system-generators/systemd-cryptsetup-generator \
+         $systemdutildir/system-generators/systemd-cryptsetup-generator \
+         $systemdutildir/systemd-cryptsetup \
+diff --git a/modules.d/90dm/module-setup.sh b/modules.d/90dm/module-setup.sh
+index 5576b02..fa38e85 100755
+--- a/modules.d/90dm/module-setup.sh
++++ b/modules.d/90dm/module-setup.sh
+@@ -20,8 +20,8 @@ install() {
+     modinfo -k $kernel dm_mod >/dev/null 2>&1 && \
+         inst_hook pre-udev 30 "$moddir/dm-pre-udev.sh"
+ 
+-    dracut_install dmsetup
+-    dracut_install -o dmeventd
++    inst_multiple dmsetup
++    inst_multiple -o dmeventd
+ 
+     inst_libdir_file "libdevmapper-event.so*"
+ 
+diff --git a/modules.d/90dmraid/module-setup.sh b/modules.d/90dmraid/module-setup.sh
+index 76daa4a..cea7bd8 100755
+--- a/modules.d/90dmraid/module-setup.sh
++++ b/modules.d/90dmraid/module-setup.sh
+@@ -57,8 +57,8 @@ install() {
+ 
+     for_each_host_dev_fs check_dmraid
+ 
+-    dracut_install dmraid
+-    dracut_install -o kpartx
++    inst_multiple dmraid
++    inst_multiple -o kpartx
+     inst $(command -v partx) /sbin/partx
+ 
+     inst "$moddir/dmraid.sh" /sbin/dmraid_scan
+diff --git a/modules.d/90dmsquash-live/module-setup.sh b/modules.d/90dmsquash-live/module-setup.sh
+index 5b283d1..c6d1f9d 100755
+--- a/modules.d/90dmsquash-live/module-setup.sh
++++ b/modules.d/90dmsquash-live/module-setup.sh
+@@ -20,8 +20,8 @@ installkernel() {
+ }
+ 
+ install() {
+-    dracut_install umount dmsetup blkid dd losetup grep blockdev
+-    dracut_install -o checkisomd5
++    inst_multiple umount dmsetup blkid dd losetup grep blockdev
++    inst_multiple -o checkisomd5
+     inst_hook cmdline 30 "$moddir/parse-dmsquash-live.sh"
+     inst_hook cmdline 31 "$moddir/parse-iso-scan.sh"
+     inst_hook pre-udev 30 "$moddir/dmsquash-live-genrules.sh"
+diff --git a/modules.d/90kernel-modules/module-setup.sh b/modules.d/90kernel-modules/module-setup.sh
+index 0e7a9a1..e7e2ca0 100755
+--- a/modules.d/90kernel-modules/module-setup.sh
++++ b/modules.d/90kernel-modules/module-setup.sh
+@@ -74,8 +74,8 @@ installkernel() {
+ }
+ 
+ install() {
+-    dracut_install -o /lib/modprobe.d/*.conf
+-    [[ $hostonly ]] && dracut_install -o /etc/modprobe.d/*.conf /etc/modprobe.conf
++    inst_multiple -o /lib/modprobe.d/*.conf
++    [[ $hostonly ]] && inst_multiple -o /etc/modprobe.d/*.conf /etc/modprobe.conf
+     if ! dracut_module_included "systemd"; then
+         inst_hook cmdline 01 "$moddir/parse-kernel.sh"
+     fi
+diff --git a/modules.d/90lvm/module-setup.sh b/modules.d/90lvm/module-setup.sh
+index d714c13..00eb66d 100755
+--- a/modules.d/90lvm/module-setup.sh
++++ b/modules.d/90lvm/module-setup.sh
+@@ -74,7 +74,7 @@ install() {
+     inst_libdir_file "libdevmapper-event-lvm*.so"
+ 
+     if [[ $_needthin ]]; then
+-        dracut_install -o thin_dump thin_restore thin_check
++        inst_multiple -o thin_dump thin_restore thin_check
+     fi
+ 
+ }
+diff --git a/modules.d/90mdraid/module-setup.sh b/modules.d/90mdraid/module-setup.sh
+index 8d63028..b44ce50 100755
+--- a/modules.d/90mdraid/module-setup.sh
++++ b/modules.d/90mdraid/module-setup.sh
+@@ -27,8 +27,8 @@ installkernel() {
+ }
+ 
+ install() {
+-    dracut_install cat
+-    dracut_install -o mdmon
++    inst_multiple cat
++    inst_multiple -o mdmon
+     inst $(command -v partx) /sbin/partx
+     inst $(command -v mdadm) /sbin/mdadm
+ 
+diff --git a/modules.d/90multipath/module-setup.sh b/modules.d/90multipath/module-setup.sh
+index 28fc48d..6cdc511 100755
+--- a/modules.d/90multipath/module-setup.sh
++++ b/modules.d/90multipath/module-setup.sh
+@@ -69,7 +69,7 @@ installkernel() {
+ 
+ install() {
+     local _f
+-    dracut_install -o  \
++    inst_multiple -o  \
+         dmsetup \
+         kpartx \
+         mpath_wait \
+@@ -87,7 +87,7 @@ install() {
+     inst_libdir_file "libmultipath*" "multipath/*"
+ 
+     if dracut_module_included "systemd"; then
+-        dracut_install \
++        inst_multiple \
+             $systemdsystemunitdir/multipathd.service
+         mkdir -p "${initdir}${systemdsystemconfdir}/sysinit.target.wants"
+         ln -rfs "${initdir}${systemdsystemunitdir}/multipathd.service" "${initdir}${systemdsystemconfdir}/sysinit.target.wants/multipathd.service"
+diff --git a/modules.d/91crypt-gpg/module-setup.sh b/modules.d/91crypt-gpg/module-setup.sh
+index 3adb3a6..43a5a00 100755
+--- a/modules.d/91crypt-gpg/module-setup.sh
++++ b/modules.d/91crypt-gpg/module-setup.sh
+@@ -14,6 +14,6 @@ depends() {
+ }
+ 
+ install() {
+-    dracut_install gpg
++    inst_multiple gpg
+     inst "$moddir/crypt-gpg-lib.sh" "/lib/dracut-crypt-gpg-lib.sh"
+ }
+diff --git a/modules.d/91crypt-loop/module-setup.sh b/modules.d/91crypt-loop/module-setup.sh
+index 218d27a..c14fd45 100644
+--- a/modules.d/91crypt-loop/module-setup.sh
++++ b/modules.d/91crypt-loop/module-setup.sh
+@@ -13,7 +13,7 @@ installkernel() {
+ }
+ 
+ install() {
+-	dracut_install losetup
++	inst_multiple losetup
+ 	inst "$moddir/crypt-loop-lib.sh" "/lib/dracut-crypt-loop-lib.sh"
+         dracut_need_initqueue
+ }
+diff --git a/modules.d/95cifs/module-setup.sh b/modules.d/95cifs/module-setup.sh
+index bf0eddf..c17b973 100755
+--- a/modules.d/95cifs/module-setup.sh
++++ b/modules.d/95cifs/module-setup.sh
+@@ -28,8 +28,8 @@ installkernel() {
+ install() {
+     local _i
+     local _nsslibs
+-    dracut_install -o mount.cifs
+-    dracut_install /etc/services /etc/nsswitch.conf /etc/protocols
++    inst_multiple -o mount.cifs
++    inst_multiple /etc/services /etc/nsswitch.conf /etc/protocols
+ 
+     inst_libdir_file 'libcap-ng.so*'
+ 
+diff --git a/modules.d/95dasd/module-setup.sh b/modules.d/95dasd/module-setup.sh
+index 62bf18c..3b8396d 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 dasdinfo dasdconf.sh normalize_dasd_arg
++    inst_multiple dasdinfo dasdconf.sh normalize_dasd_arg
+     if [[ $hostonly ]]; then
+         inst /etc/dasd.conf
+     fi
+diff --git a/modules.d/95dasd_mod/module-setup.sh b/modules.d/95dasd_mod/module-setup.sh
+index 2c98fff..9c9eeea 100755
+--- a/modules.d/95dasd_mod/module-setup.sh
++++ b/modules.d/95dasd_mod/module-setup.sh
+@@ -19,6 +19,6 @@ installkernel() {
+ 
+ install() {
+     inst_hook cmdline 31 "$moddir/parse-dasd-mod.sh"
+-    dracut_install dasd_cio_free grep sed seq
++    inst_multiple dasd_cio_free grep sed seq
+ }
+ 
+diff --git a/modules.d/95debug/module-setup.sh b/modules.d/95debug/module-setup.sh
+index f8be7a5..1a554c6 100755
+--- a/modules.d/95debug/module-setup.sh
++++ b/modules.d/95debug/module-setup.sh
+@@ -12,7 +12,7 @@ depends() {
+ }
+ 
+ install() {
+-    dracut_install -o ps grep more cat rm strace free showmount \
++    inst_multiple -o ps grep more cat rm strace free showmount \
+         ping netstat rpcinfo vi scp ping6 ssh \
+         fsck fsck.ext2 fsck.ext4 fsck.ext3 fsck.ext4dev fsck.vfat e2fsck
+ 
+diff --git a/modules.d/95fcoe/module-setup.sh b/modules.d/95fcoe/module-setup.sh
+index 227035f..d3c58cc 100755
+--- a/modules.d/95fcoe/module-setup.sh
++++ b/modules.d/95fcoe/module-setup.sh
+@@ -25,7 +25,7 @@ installkernel() {
+ }
+ 
+ install() {
+-    dracut_install ip dcbtool fipvlan lldpad readlink
++    inst_multiple ip dcbtool fipvlan lldpad readlink
+ 
+     mkdir -m 0755 -p "$initdir/var/lib/lldpad"
+ 
+diff --git a/modules.d/95iscsi/module-setup.sh b/modules.d/95iscsi/module-setup.sh
+index a9afefd..3f817ec 100755
+--- a/modules.d/95iscsi/module-setup.sh
++++ b/modules.d/95iscsi/module-setup.sh
+@@ -75,8 +75,8 @@ installkernel() {
+ }
+ 
+ install() {
+-    dracut_install umount iscsistart hostname iscsi-iname
+-    dracut_install -o iscsiuio
++    inst_multiple umount iscsistart hostname iscsi-iname
++    inst_multiple -o iscsiuio
+     inst_hook cmdline 90 "$moddir/parse-iscsiroot.sh"
+     inst_hook cleanup 90 "$moddir/cleanup-iscsi.sh"
+     inst "$moddir/iscsiroot.sh" "/sbin/iscsiroot"
+diff --git a/modules.d/95nfs/module-setup.sh b/modules.d/95nfs/module-setup.sh
+index 6d4d412..75beb74 100755
+--- a/modules.d/95nfs/module-setup.sh
++++ b/modules.d/95nfs/module-setup.sh
+@@ -31,12 +31,12 @@ installkernel() {
+ install() {
+     local _i
+     local _nsslibs
+-    dracut_install -o portmap rpcbind rpc.statd mount.nfs \
++    inst_multiple -o portmap rpcbind rpc.statd mount.nfs \
+         mount.nfs4 umount rpc.idmapd sed /etc/netconfig
+-    dracut_install /etc/services /etc/nsswitch.conf /etc/rpc /etc/protocols /etc/idmapd.conf
++    inst_multiple /etc/services /etc/nsswitch.conf /etc/rpc /etc/protocols /etc/idmapd.conf
+ 
+     if [ -f /lib/modprobe.d/nfs.conf ]; then
+-        dracut_install /lib/modprobe.d/nfs.conf
++        inst_multiple /lib/modprobe.d/nfs.conf
+     else
+         [ -d $initdir/etc/modprobe.d/ ] || mkdir $initdir/etc/modprobe.d
+         echo "alias nfs4 nfs" > $initdir/etc/modprobe.d/nfs.conf
+diff --git a/modules.d/95rootfs-block/module-setup.sh b/modules.d/95rootfs-block/module-setup.sh
+index 6167beb..d2e1019 100755
+--- a/modules.d/95rootfs-block/module-setup.sh
++++ b/modules.d/95rootfs-block/module-setup.sh
+@@ -30,8 +30,8 @@ depends() {
+ }
+ 
+ install() {
+-    dracut_install umount
+-    dracut_install tr
++    inst_multiple umount
++    inst_multiple tr
+     if ! dracut_module_included "systemd"; then
+         inst_hook cmdline 95 "$moddir/parse-block.sh"
+         inst_hook pre-udev 30 "$moddir/block-genrules.sh"
+diff --git a/modules.d/95ssh-client/module-setup.sh b/modules.d/95ssh-client/module-setup.sh
+index 536c8d0..66e5307 100755
+--- a/modules.d/95ssh-client/module-setup.sh
++++ b/modules.d/95ssh-client/module-setup.sh
+@@ -47,7 +47,7 @@ inst_sshenv()
+ }
+ 
+ install() {
+-    dracut_install ssh scp
++    inst_multiple ssh scp
+     inst_sshenv
+ }
+ 
+diff --git a/modules.d/95udev-rules/module-setup.sh b/modules.d/95udev-rules/module-setup.sh
+index 1e9a055..2cdcc1b 100755
+--- a/modules.d/95udev-rules/module-setup.sh
++++ b/modules.d/95udev-rules/module-setup.sh
+@@ -8,7 +8,7 @@ install() {
+     # Fixme: would be nice if we didn't have to know which rules to grab....
+     # ultimately, /lib/initramfs/rules.d or somesuch which includes links/copies
+     # of the rules we want so that we just copy those in would be best
+-    dracut_install udevadm cat uname blkid \
++    inst_multiple udevadm cat uname blkid \
+         /etc/udev/udev.conf
+ 
+     [ -d ${initdir}/$systemdutildir ] || mkdir -p ${initdir}/$systemdutildir
+@@ -54,7 +54,7 @@ install() {
+         done
+     } >> "$initdir/etc/group"
+ 
+-    dracut_install -o \
++    inst_multiple -o \
+         ${udevdir}/ata_id \
+         ${udevdir}/cdrom_id \
+         ${udevdir}/create_floppy_devices \
+@@ -72,7 +72,7 @@ install() {
+         ${udevdir}/pcmcia-socket-startup \
+         ${udevdir}/pcmcia-check-broken-cis
+ 
+-    dracut_install -o /etc/pcmcia/config.opts
++    inst_multiple -o /etc/pcmcia/config.opts
+ 
+     [ -f /etc/arch-release ] && \
+         inst_script "$moddir/load-modules.sh" /lib/udev/load-modules.sh
+diff --git a/modules.d/95zfcp/module-setup.sh b/modules.d/95zfcp/module-setup.sh
+index fc8f422..9906695 100755
+--- a/modules.d/95zfcp/module-setup.sh
++++ b/modules.d/95zfcp/module-setup.sh
+@@ -22,7 +22,7 @@ installkernel() {
+ 
+ install() {
+     inst_hook cmdline 30 "$moddir/parse-zfcp.sh"
+-    dracut_install zfcp_cio_free grep sed seq
++    inst_multiple zfcp_cio_free grep sed seq
+ 
+     inst_script /sbin/zfcpconf.sh
+     inst_rules 56-zfcp.rules
+diff --git a/modules.d/95znet/module-setup.sh b/modules.d/95znet/module-setup.sh
+index 406d139..16f8493 100755
+--- a/modules.d/95znet/module-setup.sh
++++ b/modules.d/95znet/module-setup.sh
+@@ -20,6 +20,6 @@ installkernel() {
+ install() {
+     inst_hook cmdline 30 "$moddir/parse-ccw.sh"
+     inst_rules 81-ccw.rules
+-    dracut_install znet_cio_free grep sed seq readlink /lib/udev/ccw_init
++    inst_multiple znet_cio_free grep sed seq readlink /lib/udev/ccw_init
+ }
+ 
+diff --git a/modules.d/97biosdevname/module-setup.sh b/modules.d/97biosdevname/module-setup.sh
+index 4d492a9..4a0b4f4 100755
+--- a/modules.d/97biosdevname/module-setup.sh
++++ b/modules.d/97biosdevname/module-setup.sh
+@@ -13,7 +13,7 @@ depends() {
+ }
+ 
+ install() {
+-    dracut_install biosdevname
++    inst_multiple biosdevname
+     inst_rules 71-biosdevname.rules
+ }
+ 
+diff --git a/modules.d/97masterkey/module-setup.sh b/modules.d/97masterkey/module-setup.sh
+index fe6d5f4..a94c4f5 100755
+--- a/modules.d/97masterkey/module-setup.sh
++++ b/modules.d/97masterkey/module-setup.sh
+@@ -19,6 +19,6 @@ installkernel() {
+ }
+ 
+ install() {
+-    dracut_install keyctl uname
++    inst_multiple keyctl uname
+     inst_hook pre-pivot 60 "$moddir/masterkey.sh"
+ }
+diff --git a/modules.d/98selinux/module-setup.sh b/modules.d/98selinux/module-setup.sh
+index 78e8cf8..4d5147b 100755
+--- a/modules.d/98selinux/module-setup.sh
++++ b/modules.d/98selinux/module-setup.sh
+@@ -12,6 +12,6 @@ depends() {
+ 
+ install() {
+     inst_hook pre-pivot 50 "$moddir/selinux-loadpolicy.sh"
+-    dracut_install setenforce
++    inst_multiple setenforce
+ }
+ 
+diff --git a/modules.d/98syslog/module-setup.sh b/modules.d/98syslog/module-setup.sh
+index f73c2c8..daa9021 100755
+--- a/modules.d/98syslog/module-setup.sh
++++ b/modules.d/98syslog/module-setup.sh
+@@ -26,7 +26,7 @@ install() {
+             "is selected to be installed. Please check."
+     fi
+     if [ -n "$_installs" ]; then
+-        dracut_install cat $_installs
++        inst_multiple cat $_installs
+         inst_hook cmdline  90 "$moddir/parse-syslog-opts.sh"
+         inst_hook pre-udev 61 "$moddir/syslog-genrules.sh"
+         inst_hook cleanup 99 "$moddir/syslog-cleanup.sh"
+diff --git a/modules.d/98systemd/module-setup.sh b/modules.d/98systemd/module-setup.sh
+index 8775fd2..a5ac2a5 100755
+--- a/modules.d/98systemd/module-setup.sh
++++ b/modules.d/98systemd/module-setup.sh
+@@ -25,7 +25,7 @@ install() {
+         exit 1
+     fi
+ 
+-    dracut_install -o \
++    inst_multiple -o \
+         $systemdutildir/systemd \
+         $systemdutildir/systemd-cgroups-agent \
+         $systemdutildir/systemd-shutdown \
+@@ -111,7 +111,7 @@ install() {
+         \
+         journalctl systemctl echo swapoff systemd-cgls systemd-tmpfiles
+ 
+-    dracut_install -o \
++    inst_multiple -o \
+         /usr/lib/modules-load.d/*.conf \
+         /usr/lib/sysctl.d/*.conf
+ 
+@@ -136,7 +136,7 @@ install() {
+     [[ $_mods ]] && instmods $_mods
+ 
+     if [[ $hostonly ]]; then
+-        dracut_install -o \
++        inst_multiple -o \
+             /etc/systemd/journald.conf \
+             /etc/systemd/system.conf \
+             /etc/hostname \
+@@ -156,7 +156,7 @@ install() {
+     fi
+ 
+     # install adm user/group for journald
+-    dracut_install nologin
++    inst_multiple nologin
+     egrep '^systemd-journal:' "$initdir/etc/passwd" 2>/dev/null >> "$initdir/etc/passwd"
+     egrep '^systemd-journal:' /etc/group >> "$initdir/etc/group"
+ 
+diff --git a/modules.d/99base/module-setup.sh b/modules.d/99base/module-setup.sh
+index 842dde6..f217ccb 100755
+--- a/modules.d/99base/module-setup.sh
++++ b/modules.d/99base/module-setup.sh
+@@ -14,14 +14,14 @@ depends() {
+ install() {
+     local _d
+ 
+-    dracut_install mount mknod mkdir sleep chroot \
++    inst_multiple mount mknod mkdir sleep chroot \
+         sed ls flock cp mv dmesg rm ln rmmod mkfifo umount readlink setsid
+     inst $(command -v modprobe) /sbin/modprobe
+ 
+-    dracut_install -o findmnt less kmod
++    inst_multiple -o findmnt less kmod
+ 
+     if [ ! -e "${initdir}/bin/sh" ]; then
+-        dracut_install bash
++        inst_multiple bash
+         (ln -s bash "${initdir}/bin/sh" || :)
+     fi
+ 
+@@ -41,7 +41,7 @@ install() {
+ 
+     mkdir -p ${initdir}/tmp
+ 
+-    dracut_install switch_root || dfatal "Failed to install switch_root"
++    inst_multiple switch_root || dfatal "Failed to install switch_root"
+ 
+     inst_simple "$moddir/dracut-lib.sh" "/lib/dracut-lib.sh"
+ 
+@@ -52,7 +52,7 @@ install() {
+     mkdir -p "${initdir}/var"
+ 
+     if ! dracut_module_included "systemd"; then
+-        dracut_install -o $systemdutildir/systemd-timestamp
++        inst_multiple -o $systemdutildir/systemd-timestamp
+     fi
+ 
+     if [[ $realinitpath ]]; then
+diff --git a/modules.d/99fs-lib/module-setup.sh b/modules.d/99fs-lib/module-setup.sh
+index b04b2cb..9539f63 100755
+--- a/modules.d/99fs-lib/module-setup.sh
++++ b/modules.d/99fs-lib/module-setup.sh
+@@ -80,5 +80,5 @@ install() {
+         inst_simple /etc/e2fsck.conf
+     fi
+ 
+-    dracut_install -o $_helpers
++    inst_multiple -o $_helpers
+ }
+diff --git a/modules.d/99img-lib/module-setup.sh b/modules.d/99img-lib/module-setup.sh
+index ebd0436..28bfc2a 100755
+--- a/modules.d/99img-lib/module-setup.sh
++++ b/modules.d/99img-lib/module-setup.sh
+@@ -13,9 +13,9 @@ depends() {
+ }
+ 
+ install() {
+-    dracut_install tar gzip dd bash
++    inst_multiple tar gzip dd bash
+     # TODO: make this conditional on a cmdline flag / config option
+-    dracut_install -o cpio xz bzip2
++    inst_multiple -o cpio xz bzip2
+     inst_simple "$moddir/img-lib.sh" "/lib/img-lib.sh"
+ }
+ 
+diff --git a/modules.d/99shutdown/module-setup.sh b/modules.d/99shutdown/module-setup.sh
+index fb0b7ad..5361936 100755
+--- a/modules.d/99shutdown/module-setup.sh
++++ b/modules.d/99shutdown/module-setup.sh
+@@ -13,8 +13,8 @@ depends() {
+ 
+ install() {
+     local _d
+-    dracut_install umount poweroff reboot halt losetup
+-    dracut_install -o kexec
++    inst_multiple umount poweroff reboot halt losetup
++    inst_multiple -o kexec
+     inst "$moddir/shutdown.sh" "$prefix/shutdown"
+     [ -e "${initdir}/lib" ] || mkdir -m 0755 -p ${initdir}/lib
+     mkdir -m 0755 -p ${initdir}/lib/dracut
+diff --git a/test/TEST-01-BASIC/test.sh b/test/TEST-01-BASIC/test.sh
+index 161fcf3..f857fd4 100755
+--- a/test/TEST-01-BASIC/test.sh
++++ b/test/TEST-01-BASIC/test.sh
+@@ -30,19 +30,19 @@ test_setup() {
+ 	export initdir=$TESTDIR/overlay/source
+ 	mkdir -p $initdir
+ 	. $basedir/dracut-functions.sh
+-	dracut_install sh df free ls shutdown poweroff stty cat ps ln ip route \
++	inst_multiple sh df free ls shutdown poweroff stty cat ps ln ip route \
+ 	    mount dmesg ifconfig dhclient mkdir cp ping dhclient \
+ 	    umount strace less setsid
+ 	for _terminfodir in /lib/terminfo /etc/terminfo /usr/share/terminfo; do
+             [ -f ${_terminfodir}/l/linux ] && break
+ 	done
+-	dracut_install -o ${_terminfodir}/l/linux
++	inst_multiple -o ${_terminfodir}/l/linux
+ 	inst "$basedir/modules.d/40network/dhclient-script.sh" "/sbin/dhclient-script"
+ 	inst "$basedir/modules.d/40network/ifup.sh" "/sbin/ifup"
+-	dracut_install grep
++	inst_multiple grep
+         inst_simple /etc/os-release
+ 	inst ./test-init.sh /sbin/init
+-	find_binary plymouth >/dev/null && dracut_install plymouth
++	find_binary plymouth >/dev/null && inst_multiple plymouth
+ 	(cd "$initdir"; mkdir -p dev sys proc etc var/run tmp )
+ 	cp -a /etc/ld.so.conf* $initdir/etc
+ 	sudo ldconfig -r "$initdir"
+@@ -52,7 +52,7 @@ test_setup() {
+     (
+ 	export initdir=$TESTDIR/overlay
+ 	. $basedir/dracut-functions.sh
+-	dracut_install sfdisk mkfs.ext3 poweroff cp umount sync
++	inst_multiple sfdisk mkfs.ext3 poweroff cp umount sync
+ 	inst_hook initqueue 01 ./create-root.sh
+         inst_hook initqueue/finished 01 ./finished-false.sh
+ 	inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules
+@@ -81,7 +81,7 @@ test_setup() {
+     (
+ 	export initdir=$TESTDIR/overlay
+ 	. $basedir/dracut-functions.sh
+-	dracut_install poweroff shutdown
++	inst_multiple poweroff shutdown
+ 	inst_hook emergency 000 ./hard-off.sh
+ 	inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules
+     )
+diff --git a/test/TEST-02-SYSTEMD/test.sh b/test/TEST-02-SYSTEMD/test.sh
+index 155982c..cc9da27 100755
+--- a/test/TEST-02-SYSTEMD/test.sh
++++ b/test/TEST-02-SYSTEMD/test.sh
+@@ -26,19 +26,19 @@ test_setup() {
+ 	export initdir=$TESTDIR/overlay/source
+ 	mkdir -p $initdir
+ 	. $basedir/dracut-functions.sh
+-	dracut_install sh df free ls shutdown poweroff stty cat ps ln ip route \
++	inst_multiple sh df free ls shutdown poweroff stty cat ps ln ip route \
+ 	    mount dmesg ifconfig dhclient mkdir cp ping dhclient \
+ 	    umount strace less setsid
+ 	for _terminfodir in /lib/terminfo /etc/terminfo /usr/share/terminfo; do
+             [ -f ${_terminfodir}/l/linux ] && break
+ 	done
+-	dracut_install -o ${_terminfodir}/l/linux
++	inst_multiple -o ${_terminfodir}/l/linux
+ 	inst "$basedir/modules.d/40network/dhclient-script.sh" "/sbin/dhclient-script"
+ 	inst "$basedir/modules.d/40network/ifup.sh" "/sbin/ifup"
+-	dracut_install grep
++	inst_multiple grep
+         inst_simple /etc/os-release
+ 	inst ./test-init.sh /sbin/init
+-	find_binary plymouth >/dev/null && dracut_install plymouth
++	find_binary plymouth >/dev/null && inst_multiple plymouth
+ 	(cd "$initdir"; mkdir -p dev sys proc etc var/run tmp )
+ 	cp -a /etc/ld.so.conf* $initdir/etc
+ 	sudo ldconfig -r "$initdir"
+@@ -48,7 +48,7 @@ test_setup() {
+     (
+ 	export initdir=$TESTDIR/overlay
+ 	. $basedir/dracut-functions.sh
+-	dracut_install sfdisk mkfs.ext3 poweroff cp umount
++	inst_multiple sfdisk mkfs.ext3 poweroff cp umount
+ 	inst_hook initqueue 01 ./create-root.sh
+         inst_hook initqueue/finished 01 ./finished-false.sh
+ 	inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules
+@@ -77,7 +77,7 @@ test_setup() {
+     (
+ 	export initdir=$TESTDIR/overlay
+ 	. $basedir/dracut-functions.sh
+-	dracut_install poweroff shutdown
++	inst_multiple poweroff shutdown
+ 	inst_hook emergency 000 ./hard-off.sh
+ 	inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules
+     )
+diff --git a/test/TEST-03-USR-MOUNT/test.sh b/test/TEST-03-USR-MOUNT/test.sh
+index 246fc9a..b3d709e 100755
+--- a/test/TEST-03-USR-MOUNT/test.sh
++++ b/test/TEST-03-USR-MOUNT/test.sh
+@@ -57,20 +57,20 @@ test_setup() {
+ 	export initdir=$TESTDIR/overlay/source
+ 	mkdir -p $initdir
+ 	. $basedir/dracut-functions.sh
+-	dracut_install sh df free ls shutdown poweroff stty cat ps ln ip route \
++	inst_multiple sh df free ls shutdown poweroff stty cat ps ln ip route \
+ 	    mount dmesg ifconfig dhclient mkdir cp ping dhclient \
+ 	    umount strace less setsid
+ 	for _terminfodir in /lib/terminfo /etc/terminfo /usr/share/terminfo; do
+             [ -f ${_terminfodir}/l/linux ] && break
+ 	done
+-	dracut_install -o ${_terminfodir}/l/linux
++	inst_multiple -o ${_terminfodir}/l/linux
+ 	inst "$basedir/modules.d/40network/dhclient-script.sh" "/sbin/dhclient-script"
+ 	inst "$basedir/modules.d/40network/ifup.sh" "/sbin/ifup"
+-	dracut_install grep
++	inst_multiple grep
+         inst_simple ./fstab /etc/fstab
+         inst_simple /etc/os-release
+ 	inst ./test-init.sh /sbin/init
+-	find_binary plymouth >/dev/null && dracut_install plymouth
++	find_binary plymouth >/dev/null && inst_multiple plymouth
+ 	(cd "$initdir"; mkdir -p dev sys proc etc var/run tmp )
+ 	cp -a /etc/ld.so.conf* $initdir/etc
+ 	sudo ldconfig -r "$initdir"
+@@ -80,7 +80,7 @@ test_setup() {
+     (
+ 	export initdir=$TESTDIR/overlay
+ 	. $basedir/dracut-functions.sh
+-	dracut_install sfdisk mkfs.btrfs btrfs poweroff cp umount sync
++	inst_multiple sfdisk mkfs.btrfs btrfs poweroff cp umount sync
+ 	inst_hook initqueue 01 ./create-root.sh
+         inst_hook initqueue/finished 01 ./finished-false.sh
+ 	inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules
+@@ -116,7 +116,7 @@ test_setup() {
+     (
+ 	export initdir=$TESTDIR/overlay
+ 	. $basedir/dracut-functions.sh
+-	dracut_install poweroff shutdown
++	inst_multiple poweroff shutdown
+ 	inst_hook emergency 000 ./hard-off.sh
+ 	inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules
+     )
+diff --git a/test/TEST-04-FULL-SYSTEMD/test.sh b/test/TEST-04-FULL-SYSTEMD/test.sh
+index 92c2f8d..d4998d8 100755
+--- a/test/TEST-04-FULL-SYSTEMD/test.sh
++++ b/test/TEST-04-FULL-SYSTEMD/test.sh
+@@ -70,17 +70,17 @@ test_setup() {
+         ln -sfn /run "$initdir/var/run"
+         ln -sfn /run/lock "$initdir/var/lock"
+ 
+-	dracut_install sh df free ls shutdown poweroff stty cat ps ln ip route \
++	inst_multiple sh df free ls shutdown poweroff stty cat ps ln ip route \
+ 	    mount dmesg ifconfig dhclient mkdir cp ping dhclient \
+ 	    umount strace less setsid tree systemctl reset
+ 
+ 	for _terminfodir in /lib/terminfo /etc/terminfo /usr/share/terminfo; do
+             [ -f ${_terminfodir}/l/linux ] && break
+ 	done
+-	dracut_install -o ${_terminfodir}/l/linux
++	inst_multiple -o ${_terminfodir}/l/linux
+ 	inst "$basedir/modules.d/40network/dhclient-script.sh" "/sbin/dhclient-script"
+ 	inst "$basedir/modules.d/40network/ifup.sh" "/sbin/ifup"
+-	dracut_install grep
++	inst_multiple grep
+         inst_simple ./fstab /etc/fstab
+         rpm -ql systemd | xargs -r $DRACUT_INSTALL ${initdir+-D "$initdir"} -o -a -l
+         inst /lib/systemd/system/systemd-remount-fs.service
+@@ -89,13 +89,13 @@ test_setup() {
+         inst /etc/sysconfig/init
+ 	inst /lib/systemd/system/slices.target
+ 	inst /lib/systemd/system/system.slice
+-	dracut_install -o /lib/systemd/system/dracut*
++	inst_multiple -o /lib/systemd/system/dracut*
+ 
+         # make a journal directory
+         mkdir -p $initdir/var/log/journal
+ 
+         # install some basic config files
+-        dracut_install -o  \
++        inst_multiple -o  \
+ 	    /etc/machine-id \
+ 	    /etc/adjtime \
+             /etc/sysconfig/init \
+@@ -149,9 +149,9 @@ EOF
+ # EOF
+ 
+         # install basic tools needed
+-        dracut_install sh bash setsid loadkeys setfont \
++        inst_multiple sh bash setsid loadkeys setfont \
+             login sushell sulogin gzip sleep echo mount umount
+-        dracut_install modprobe
++        inst_multiple modprobe
+ 
+         # install libnss_files for login
+         inst_libdir_file "libnss_files*"
+@@ -164,7 +164,7 @@ EOF
+             /lib64/security \
+             /lib/security -xtype f \
+             | while read file; do
+-            dracut_install -o $file
++            inst_multiple -o $file
+         done
+ 
+         # install dbus socket and service file
+@@ -185,7 +185,7 @@ EOF
+         for _terminfodir in /lib/terminfo /etc/terminfo /usr/share/terminfo; do
+             [ -f ${_terminfodir}/l/linux ] && break
+         done
+-        dracut_install -o ${_terminfodir}/l/linux
++        inst_multiple -o ${_terminfodir}/l/linux
+ 
+         # softlink mtab
+         ln -fs /proc/self/mounts $initdir/etc/mtab
+@@ -194,11 +194,11 @@ EOF
+         egrep -ho '^Exec[^ ]*=[^ ]+' $initdir/lib/systemd/system/*.service \
+             | while read i; do
+             i=${i##Exec*=}; i=${i##-}
+-            dracut_install -o $i
++            inst_multiple -o $i
+         done
+ 
+         # some helper tools for debugging
+-        [[ $DEBUGTOOLS ]] && dracut_install $DEBUGTOOLS
++        [[ $DEBUGTOOLS ]] && inst_multiple $DEBUGTOOLS
+ 
+         # install ld.so.conf* and run ldconfig
+         cp -a /etc/ld.so.conf* $initdir/etc
+@@ -222,7 +222,7 @@ EOF
+     (
+ 	export initdir=$TESTDIR/overlay
+ 	. $basedir/dracut-functions.sh
+-	dracut_install sfdisk mkfs.btrfs btrfs poweroff cp umount sync
++	inst_multiple sfdisk mkfs.btrfs btrfs poweroff cp umount sync
+ 	inst_hook initqueue 01 ./create-root.sh
+         inst_hook initqueue/finished 01 ./finished-false.sh
+ 	inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules
+@@ -257,7 +257,7 @@ EOF
+     (
+ 	export initdir=$TESTDIR/overlay
+ 	. $basedir/dracut-functions.sh
+-	dracut_install poweroff shutdown
++	inst_multiple poweroff shutdown
+ 	inst_hook emergency 000 ./hard-off.sh
+ 	inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules
+     )
+diff --git a/test/TEST-10-RAID/test.sh b/test/TEST-10-RAID/test.sh
+index b6af703..a2226cd 100755
+--- a/test/TEST-10-RAID/test.sh
++++ b/test/TEST-10-RAID/test.sh
+@@ -29,19 +29,19 @@ test_setup() {
+ 	export initdir=$TESTDIR/overlay/source
+ 	(mkdir -p "$initdir"; cd "$initdir"; mkdir -p dev sys proc etc var/run tmp run)
+ 	. $basedir/dracut-functions.sh
+-	dracut_install sh df free ls shutdown poweroff stty cat ps ln ip route \
++	inst_multiple sh df free ls shutdown poweroff stty cat ps ln ip route \
+ 	    mount dmesg ifconfig dhclient mkdir cp ping dhclient
+         for _terminfodir in /lib/terminfo /etc/terminfo /usr/share/terminfo; do
+ 	    [ -f ${_terminfodir}/l/linux ] && break
+ 	done
+-	dracut_install -o ${_terminfodir}/l/linux
++	inst_multiple -o ${_terminfodir}/l/linux
+         inst_simple /etc/os-release
+ 	inst ./test-init.sh /sbin/init
+ 	inst "$basedir/modules.d/40network/dhclient-script.sh" "/sbin/dhclient-script"
+ 	inst "$basedir/modules.d/40network/ifup.sh" "/sbin/ifup"
+-	dracut_install grep
+-	dracut_install -o /lib/systemd/systemd-shutdown
+-	find_binary plymouth >/dev/null && dracut_install plymouth
++	inst_multiple grep
++	inst_multiple -o /lib/systemd/systemd-shutdown
++	find_binary plymouth >/dev/null && inst_multiple plymouth
+ 	cp -a /etc/ld.so.conf* $initdir/etc
+ 	sudo ldconfig -r "$initdir"
+     )
+@@ -50,7 +50,7 @@ test_setup() {
+     (
+ 	export initdir=$TESTDIR/overlay
+ 	. $basedir/dracut-functions.sh
+-	dracut_install sfdisk mke2fs poweroff cp umount
++	inst_multiple sfdisk mke2fs poweroff cp umount
+ 	inst_hook initqueue 01 ./create-root.sh
+         inst_hook initqueue/finished 01 ./finished-false.sh
+ 	inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules
+@@ -78,7 +78,7 @@ test_setup() {
+     (
+ 	export initdir=$TESTDIR/overlay
+ 	. $basedir/dracut-functions.sh
+-	dracut_install poweroff shutdown
++	inst_multiple poweroff shutdown
+ 	inst_hook emergency 000 ./hard-off.sh
+ 	inst ./cryptroot-ask.sh /sbin/cryptroot-ask
+         mkdir -p $initdir/etc
+diff --git a/test/TEST-11-LVM/test.sh b/test/TEST-11-LVM/test.sh
+index 47761b3..6f2461c 100755
+--- a/test/TEST-11-LVM/test.sh
++++ b/test/TEST-11-LVM/test.sh
+@@ -25,18 +25,18 @@ test_setup() {
+     (
+ 	export initdir=$TESTDIR/overlay/source
+ 	. $basedir/dracut-functions.sh
+-	dracut_install sh df free ls shutdown poweroff stty cat ps ln ip route \
++	inst_multiple sh df free ls shutdown poweroff stty cat ps ln ip route \
+ 	    mount dmesg ifconfig dhclient mkdir cp ping dhclient
+         for _terminfodir in /lib/terminfo /etc/terminfo /usr/share/terminfo; do
+ 	    [ -f ${_terminfodir}/l/linux ] && break
+ 	done
+-	dracut_install -o ${_terminfodir}/l/linux
++	inst_multiple -o ${_terminfodir}/l/linux
+ 	inst "$basedir/modules.d/40network/dhclient-script.sh" "/sbin/dhclient-script"
+ 	inst "$basedir/modules.d/40network/ifup.sh" "/sbin/ifup"
+-	dracut_install grep
++	inst_multiple grep
+         inst_simple /etc/os-release
+ 	inst ./test-init.sh /sbin/init
+-	find_binary plymouth >/dev/null && dracut_install plymouth
++	find_binary plymouth >/dev/null && inst_multiple plymouth
+ 	(cd "$initdir"; mkdir -p dev sys proc etc var/run tmp )
+ 	cp -a /etc/ld.so.conf* $initdir/etc
+ 	mkdir $initdir/run
+@@ -47,7 +47,7 @@ test_setup() {
+     (
+ 	export initdir=$TESTDIR/overlay
+ 	. $basedir/dracut-functions.sh
+-	dracut_install sfdisk mke2fs poweroff cp umount
++	inst_multiple sfdisk mke2fs poweroff cp umount
+ 	inst_hook initqueue 01 ./create-root.sh
+         inst_hook initqueue/finished 01 ./finished-false.sh
+ 	inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules
+@@ -70,7 +70,7 @@ test_setup() {
+     (
+ 	export initdir=$TESTDIR/overlay
+ 	. $basedir/dracut-functions.sh
+-	dracut_install poweroff shutdown
++	inst_multiple poweroff shutdown
+ 	inst_hook emergency 000 ./hard-off.sh
+ 	inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules
+     )
+diff --git a/test/TEST-12-RAID-DEG/test.sh b/test/TEST-12-RAID-DEG/test.sh
+index 3eabbd5..6ddff3f 100755
+--- a/test/TEST-12-RAID-DEG/test.sh
++++ b/test/TEST-12-RAID-DEG/test.sh
+@@ -66,18 +66,18 @@ test_setup() {
+     (
+ 	export initdir=$TESTDIR/overlay/source
+ 	. $basedir/dracut-functions.sh
+-	dracut_install sh df free ls shutdown poweroff stty cat ps ln ip route \
++	inst_multiple sh df free ls shutdown poweroff stty cat ps ln ip route \
+ 	    mount dmesg ifconfig dhclient mkdir cp ping dhclient
+         for _terminfodir in /lib/terminfo /etc/terminfo /usr/share/terminfo; do
+ 	    [ -f ${_terminfodir}/l/linux ] && break
+ 	done
+-	dracut_install -o ${_terminfodir}/l/linux
++	inst_multiple -o ${_terminfodir}/l/linux
+ 	inst "$basedir/modules.d/40network/dhclient-script.sh" "/sbin/dhclient-script"
+ 	inst "$basedir/modules.d/40network/ifup.sh" "/sbin/ifup"
+-	dracut_install grep
++	inst_multiple grep
+         inst_simple /etc/os-release
+ 	inst ./test-init.sh /sbin/init
+-	find_binary plymouth >/dev/null && dracut_install plymouth
++	find_binary plymouth >/dev/null && inst_multiple plymouth
+ 	(cd "$initdir"; mkdir -p dev sys proc etc var/run tmp )
+ 	cp -a /etc/ld.so.conf* $initdir/etc
+ 	sudo ldconfig -r "$initdir"
+@@ -87,7 +87,7 @@ test_setup() {
+     (
+ 	export initdir=$TESTDIR/overlay
+ 	. $basedir/dracut-functions.sh
+-	dracut_install sfdisk mke2fs poweroff cp umount dd grep
++	inst_multiple sfdisk mke2fs poweroff cp umount dd grep
+ 	inst_hook initqueue 01 ./create-root.sh
+         inst_hook initqueue/finished 01 ./finished-false.sh
+  	inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules
+@@ -120,7 +120,7 @@ test_setup() {
+     (
+ 	export initdir=$TESTDIR/overlay
+ 	. $basedir/dracut-functions.sh
+-	dracut_install poweroff shutdown
++	inst_multiple poweroff shutdown
+ 	inst_hook emergency 000 ./hard-off.sh
+ 	inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules
+ 	inst ./cryptroot-ask.sh /sbin/cryptroot-ask
+diff --git a/test/TEST-13-ENC-RAID-LVM/test.sh b/test/TEST-13-ENC-RAID-LVM/test.sh
+index d069293..5102142 100755
+--- a/test/TEST-13-ENC-RAID-LVM/test.sh
++++ b/test/TEST-13-ENC-RAID-LVM/test.sh
+@@ -63,18 +63,18 @@ test_setup() {
+     (
+ 	export initdir=$TESTDIR/overlay/source
+ 	. $basedir/dracut-functions.sh
+-	dracut_install sh df free ls shutdown poweroff stty cat ps ln ip route \
++	inst_multiple sh df free ls shutdown poweroff stty cat ps ln ip route \
+ 	    mount dmesg ifconfig dhclient mkdir cp ping dhclient
+         for _terminfodir in /lib/terminfo /etc/terminfo /usr/share/terminfo; do
+ 	    [ -f ${_terminfodir}/l/linux ] && break
+ 	done
+-	dracut_install -o ${_terminfodir}/l/linux
++	inst_multiple -o ${_terminfodir}/l/linux
+ 	inst "$basedir/modules.d/40network/dhclient-script.sh" "/sbin/dhclient-script"
+ 	inst "$basedir/modules.d/40network/ifup.sh" "/sbin/ifup"
+-	dracut_install grep
++	inst_multiple grep
+         inst_simple /etc/os-release
+ 	inst ./test-init.sh /sbin/init
+-	find_binary plymouth >/dev/null && dracut_install plymouth
++	find_binary plymouth >/dev/null && inst_multiple plymouth
+ 	(cd "$initdir"; mkdir -p dev sys proc etc var/run tmp )
+ 	cp -a /etc/ld.so.conf* $initdir/etc
+ 	sudo ldconfig -r "$initdir"
+@@ -84,7 +84,7 @@ test_setup() {
+     (
+ 	export initdir=$TESTDIR/overlay
+ 	. $basedir/dracut-functions.sh
+-	dracut_install sfdisk mke2fs poweroff cp umount grep
++	inst_multiple sfdisk mke2fs poweroff cp umount grep
+ 	inst_hook initqueue 01 ./create-root.sh
+         inst_hook initqueue/finished 01 ./finished-false.sh
+ 	inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules
+@@ -114,7 +114,7 @@ test_setup() {
+     (
+ 	export initdir=$TESTDIR/overlay
+ 	. $basedir/dracut-functions.sh
+-	dracut_install poweroff shutdown
++	inst_multiple poweroff shutdown
+ 	inst_hook emergency 000 ./hard-off.sh
+ 	inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules
+ 	inst ./cryptroot-ask.sh /sbin/cryptroot-ask
+diff --git a/test/TEST-15-BTRFSRAID/test.sh b/test/TEST-15-BTRFSRAID/test.sh
+index 6f66875..e6ff351 100755
+--- a/test/TEST-15-BTRFSRAID/test.sh
++++ b/test/TEST-15-BTRFSRAID/test.sh
+@@ -27,17 +27,17 @@ test_setup() {
+     (
+ 	export initdir=$TESTDIR/overlay/source
+ 	. $basedir/dracut-functions.sh
+-	dracut_install sh df free ls shutdown poweroff stty cat ps ln ip route \
++	inst_multiple sh df free ls shutdown poweroff stty cat ps ln ip route \
+ 	    mount dmesg ifconfig dhclient mkdir cp ping dhclient
+         for _terminfodir in /lib/terminfo /etc/terminfo /usr/share/terminfo; do
+ 	    [ -f ${_terminfodir}/l/linux ] && break
+ 	done
+-	dracut_install -o ${_terminfodir}/l/linux
++	inst_multiple -o ${_terminfodir}/l/linux
+ 	inst "$basedir/modules.d/40network/dhclient-script.sh" "/sbin/dhclient-script"
+ 	inst "$basedir/modules.d/40network/ifup.sh" "/sbin/ifup"
+-	dracut_install grep
++	inst_multiple grep
+ 	inst ./test-init.sh /sbin/init
+-	find_binary plymouth >/dev/null && dracut_install plymouth
++	find_binary plymouth >/dev/null && inst_multiple plymouth
+ 	(cd "$initdir"; mkdir -p dev sys proc etc var/run tmp )
+ 	cp -a /etc/ld.so.conf* $initdir/etc
+ 	sudo ldconfig -r "$initdir"
+@@ -47,7 +47,7 @@ test_setup() {
+     (
+ 	export initdir=$TESTDIR/overlay
+ 	. $basedir/dracut-functions.sh
+-	dracut_install sfdisk mkfs.btrfs poweroff cp umount
++	inst_multiple sfdisk mkfs.btrfs poweroff cp umount
+ 	inst_hook initqueue 01 ./create-root.sh
+         inst_hook initqueue/finished 01 ./finished-false.sh
+ 	inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules
+@@ -77,7 +77,7 @@ test_setup() {
+    (
+         export initdir=$TESTDIR/overlay
+ 	. $basedir/dracut-functions.sh
+-	dracut_install poweroff shutdown
++	inst_multiple poweroff shutdown
+ 	inst_hook emergency 000 ./hard-off.sh
+ 	inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules
+     )
+diff --git a/test/TEST-16-DMSQUASH/test.sh b/test/TEST-16-DMSQUASH/test.sh
+index e9d9655..252e845 100755
+--- a/test/TEST-16-DMSQUASH/test.sh
++++ b/test/TEST-16-DMSQUASH/test.sh
+@@ -31,7 +31,7 @@ test_setup() {
+     (
+ 	export initdir="$TESTDIR"/overlay
+ 	. "$basedir"/dracut-functions.sh
+-	dracut_install poweroff shutdown
++	inst_multiple poweroff shutdown
+ 	inst_hook emergency 000 ./hard-off.sh
+ 	inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules
+     )
+@@ -49,16 +49,16 @@ test_setup() {
+     (
+ 	export initdir="$TESTDIR"/root-source
+ 	. "$basedir"/dracut-functions.sh
+-	dracut_install sh df free ls shutdown poweroff stty cat ps ln ip route \
++	inst_multiple sh df free ls shutdown poweroff stty cat ps ln ip route \
+ 	    mount dmesg ifconfig dhclient mkdir cp ping dhclient \
+ 	    umount strace less
+         for _terminfodir in /lib/terminfo /etc/terminfo /usr/share/terminfo; do
+ 	    [[ -f ${_terminfodir}/l/linux ]] && break
+ 	done
+-	dracut_install -o "${_terminfodir}"/l/linux
++	inst_multiple -o "${_terminfodir}"/l/linux
+ 	inst "$basedir/modules.d/40network/dhclient-script.sh" "/sbin/dhclient-script"
+ 	inst "$basedir/modules.d/40network/ifup.sh" "/sbin/ifup"
+-	dracut_install grep syslinux isohybrid
++	inst_multiple grep syslinux isohybrid
+ 	for f in /usr/share/syslinux/*; do
+ 	    inst_simple "$f"
+ 	done
+@@ -66,7 +66,7 @@ test_setup() {
+ 	inst ./test-init.sh /sbin/init
+ 	inst "$TESTDIR"/initramfs.testing "/boot/initramfs-$KVERSION.img"
+ 	inst /boot/vmlinuz-"$KVERSION"
+-	find_binary plymouth >/dev/null && dracut_install plymouth
++	find_binary plymouth >/dev/null && inst_multiple plymouth
+ 	(cd "$initdir"; mkdir -p -- dev sys proc etc var/run tmp )
+ 	cp -a -- /etc/ld.so.conf* "$initdir"/etc
+ 	sudo ldconfig -r -- "$initdir"
+diff --git a/test/TEST-20-NFS/test.sh b/test/TEST-20-NFS/test.sh
+index 2c8ee18..bd3cd3f 100755
+--- a/test/TEST-20-NFS/test.sh
++++ b/test/TEST-20-NFS/test.sh
+@@ -235,18 +235,18 @@ test_setup() {
+             [[ $srcmods/$_f ]] && inst_simple "$srcmods/$_f" "/lib/modules/$kernel/$_f"
+         done
+ 
+-        dracut_install sh ls shutdown poweroff stty cat ps ln ip \
++        inst_multiple sh ls shutdown poweroff stty cat ps ln ip \
+             dmesg mkdir cp ping exportfs \
+             modprobe rpc.nfsd rpc.mountd showmount tcpdump \
+             /etc/services sleep mount chmod
+         for _terminfodir in /lib/terminfo /etc/terminfo /usr/share/terminfo; do
+             [ -f ${_terminfodir}/l/linux ] && break
+         done
+-        dracut_install -o ${_terminfodir}/l/linux
+-        type -P portmap >/dev/null && dracut_install portmap
+-        type -P rpcbind >/dev/null && dracut_install rpcbind
+-        [ -f /etc/netconfig ] && dracut_install /etc/netconfig
+-        type -P dhcpd >/dev/null && dracut_install dhcpd
++        inst_multiple -o ${_terminfodir}/l/linux
++        type -P portmap >/dev/null && inst_multiple portmap
++        type -P rpcbind >/dev/null && inst_multiple rpcbind
++        [ -f /etc/netconfig ] && inst_multiple /etc/netconfig
++        type -P dhcpd >/dev/null && inst_multiple dhcpd
+         [ -x /usr/sbin/dhcpd3 ] && inst /usr/sbin/dhcpd3 /usr/sbin/dhcpd
+         instmods nfsd sunrpc ipv6 lockd af_packet
+         inst ./server-init.sh /sbin/init
+@@ -254,8 +254,8 @@ test_setup() {
+         inst ./hosts /etc/hosts
+         inst ./exports /etc/exports
+         inst ./dhcpd.conf /etc/dhcpd.conf
+-        dracut_install /etc/nsswitch.conf /etc/rpc /etc/protocols
+-        dracut_install rpc.idmapd /etc/idmapd.conf
++        inst_multiple /etc/nsswitch.conf /etc/rpc /etc/protocols
++        inst_multiple rpc.idmapd /etc/idmapd.conf
+ 
+         inst_libdir_file 'libnfsidmap_nsswitch.so*'
+         inst_libdir_file 'libnfsidmap/*.so*'
+@@ -290,12 +290,12 @@ test_setup() {
+         export initdir=$TESTDIR/mnt/nfs/client
+         . $basedir/dracut-functions.sh
+ 
+-        dracut_install sh shutdown poweroff stty cat ps ln ip \
++        inst_multiple sh shutdown poweroff stty cat ps ln ip \
+             mount dmesg mkdir cp ping grep
+         for _terminfodir in /lib/terminfo /etc/terminfo /usr/share/terminfo; do
+             [ -f ${_terminfodir}/l/linux ] && break
+         done
+-        dracut_install -o ${_terminfodir}/l/linux
++        inst_multiple -o ${_terminfodir}/l/linux
+         inst ./client-init.sh /sbin/init
+         inst_simple /etc/os-release
+         (
+@@ -334,7 +334,7 @@ test_setup() {
+         export initdir=$TESTDIR/overlay
+         . $basedir/dracut-functions.sh
+         mkdir $TESTDIR/overlay
+-        dracut_install poweroff shutdown
++        inst_multiple poweroff shutdown
+         inst_hook emergency 000 ./hard-off.sh
+         inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules
+     )
+diff --git a/test/TEST-30-ISCSI/test.sh b/test/TEST-30-ISCSI/test.sh
+index 29c8d0c..4c29956 100755
+--- a/test/TEST-30-ISCSI/test.sh
++++ b/test/TEST-30-ISCSI/test.sh
+@@ -105,12 +105,12 @@ test_setup() {
+     (
+         export initdir=$TESTDIR/overlay/source
+         . $basedir/dracut-functions.sh
+-        dracut_install sh shutdown poweroff stty cat ps ln ip \
++        inst_multiple sh shutdown poweroff stty cat ps ln ip \
+             mount dmesg mkdir cp ping grep
+         for _terminfodir in /lib/terminfo /etc/terminfo /usr/share/terminfo; do
+             [ -f ${_terminfodir}/l/linux ] && break
+         done
+-        dracut_install -o ${_terminfodir}/l/linux
++        inst_multiple -o ${_terminfodir}/l/linux
+         inst_simple /etc/os-release
+         inst ./client-init.sh /sbin/init
+         (cd "$initdir"; mkdir -p dev sys proc etc var/run tmp )
+@@ -122,7 +122,7 @@ test_setup() {
+     (
+         export initdir=$TESTDIR/overlay
+         . $basedir/dracut-functions.sh
+-        dracut_install sfdisk mkfs.ext3 poweroff cp umount
++        inst_multiple sfdisk mkfs.ext3 poweroff cp umount
+         inst_hook initqueue 01 ./create-root.sh
+         inst_hook initqueue/finished 01 ./finished-false.sh
+         inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules
+@@ -158,7 +158,7 @@ test_setup() {
+     (
+         export initdir=$TESTDIR/overlay
+         . $basedir/dracut-functions.sh
+-        dracut_install poweroff shutdown
++        inst_multiple poweroff shutdown
+         inst_hook emergency 000 ./hard-off.sh
+         inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules
+     )
+@@ -183,25 +183,25 @@ test_setup() {
+             mkdir -p dev sys proc etc var/run tmp var/lib/dhcpd /etc/iscsi
+         )
+         inst /etc/passwd /etc/passwd
+-        dracut_install sh ls shutdown poweroff stty cat ps ln ip \
++        inst_multiple sh ls shutdown poweroff stty cat ps ln ip \
+             dmesg mkdir cp ping \
+             modprobe tcpdump \
+             /etc/services sleep mount chmod
+-        dracut_install /usr/sbin/iscsi-target
++        inst_multiple /usr/sbin/iscsi-target
+         for _terminfodir in /lib/terminfo /etc/terminfo /usr/share/terminfo; do
+             [ -f ${_terminfodir}/l/linux ] && break
+         done
+-        dracut_install -o ${_terminfodir}/l/linux
++        inst_multiple -o ${_terminfodir}/l/linux
+         instmods iscsi_tcp crc32c ipv6
+         inst ./targets /etc/iscsi/targets
+-        [ -f /etc/netconfig ] && dracut_install /etc/netconfig
+-        type -P dhcpd >/dev/null && dracut_install dhcpd
++        [ -f /etc/netconfig ] && inst_multiple /etc/netconfig
++        type -P dhcpd >/dev/null && inst_multiple dhcpd
+         [ -x /usr/sbin/dhcpd3 ] && inst /usr/sbin/dhcpd3 /usr/sbin/dhcpd
+         inst_simple /etc/os-release
+         inst ./server-init.sh /sbin/init
+         inst ./hosts /etc/hosts
+         inst ./dhcpd.conf /etc/dhcpd.conf
+-        dracut_install /etc/nsswitch.conf /etc/rpc /etc/protocols
++        inst_multiple /etc/nsswitch.conf /etc/rpc /etc/protocols
+         inst /etc/group /etc/group
+ 
+         cp -a /etc/ld.so.conf* $initdir/etc
+diff --git a/test/TEST-40-NBD/test.sh b/test/TEST-40-NBD/test.sh
+index 124682a..7cf64b1 100755
+--- a/test/TEST-40-NBD/test.sh
++++ b/test/TEST-40-NBD/test.sh
+@@ -198,15 +198,15 @@ make_encrypted_root() {
+         . $basedir/dracut-functions.sh
+         mkdir -p "$initdir"
+         (cd "$initdir"; mkdir -p dev sys proc etc var/run tmp )
+-        dracut_install sh df free ls shutdown poweroff stty cat ps ln ip \
++        inst_multiple sh df free ls shutdown poweroff stty cat ps ln ip \
+             mount dmesg mkdir cp ping
+         for _terminfodir in /lib/terminfo /etc/terminfo /usr/share/terminfo; do
+             [ -f ${_terminfodir}/l/linux ] && break
+         done
+-        dracut_install -o ${_terminfodir}/l/linux
++        inst_multiple -o ${_terminfodir}/l/linux
+         inst ./client-init.sh /sbin/init
+         inst_simple /etc/os-release
+-        find_binary plymouth >/dev/null && dracut_install plymouth
++        find_binary plymouth >/dev/null && inst_multiple plymouth
+         cp -a /etc/ld.so.conf* $initdir/etc
+         sudo ldconfig -r "$initdir"
+     )
+@@ -215,7 +215,7 @@ make_encrypted_root() {
+     (
+         export initdir=$TESTDIR/overlay
+         . $basedir/dracut-functions.sh
+-        dracut_install mke2fs poweroff cp umount tune2fs
++        inst_multiple mke2fs poweroff cp umount tune2fs
+         inst_hook emergency 000 ./hard-off.sh
+         inst_hook initqueue 01 ./create-root.sh
+         inst_hook initqueue/finished 01 ./finished-false.sh
+@@ -256,12 +256,12 @@ make_client_root() {
+         . $basedir/dracut-functions.sh
+         mkdir -p "$initdir"
+         (cd "$initdir"; mkdir -p dev sys proc etc var/run tmp )
+-        dracut_install sh ls shutdown poweroff stty cat ps ln ip \
++        inst_multiple sh ls shutdown poweroff stty cat ps ln ip \
+             dmesg mkdir cp ping
+         for _terminfodir in /lib/terminfo /etc/terminfo /usr/share/terminfo; do
+             [ -f ${_terminfodir}/l/linux ] && break
+         done
+-        dracut_install -o ${_terminfodir}/l/linux
++        inst_multiple -o ${_terminfodir}/l/linux
+         inst ./client-init.sh /sbin/init
+         inst_simple /etc/os-release
+         inst /etc/nsswitch.conf /etc/nsswitch.conf
+@@ -294,15 +294,15 @@ make_server_root() {
+             cd "$initdir";
+             mkdir -p dev sys proc etc var/run var/lib/dhcpd tmp
+         )
+-        dracut_install sh ls shutdown poweroff stty cat ps ln ip \
++        inst_multiple sh ls shutdown poweroff stty cat ps ln ip \
+             dmesg mkdir cp ping grep \
+             sleep nbd-server chmod
+         for _terminfodir in /lib/terminfo /etc/terminfo /usr/share/terminfo; do
+             [ -f ${_terminfodir}/l/linux ] && break
+         done
+-        dracut_install -o ${_terminfodir}/l/linux
++        inst_multiple -o ${_terminfodir}/l/linux
+         instmods af_packet
+-        type -P dhcpd >/dev/null && dracut_install dhcpd
++        type -P dhcpd >/dev/null && inst_multiple dhcpd
+         [ -x /usr/sbin/dhcpd3 ] && inst /usr/sbin/dhcpd3 /usr/sbin/dhcpd
+         inst ./server-init.sh /sbin/init
+         inst_simple /etc/os-release
+@@ -336,7 +336,7 @@ test_setup() {
+     (
+         export initdir=$TESTDIR/overlay
+         . $basedir/dracut-functions.sh
+-        dracut_install poweroff shutdown
++        inst_multiple poweroff shutdown
+         inst_hook emergency 000 ./hard-off.sh
+         inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules
+         inst ./cryptroot-ask.sh /sbin/cryptroot-ask
+diff --git a/test/TEST-50-MULTINIC/test.sh b/test/TEST-50-MULTINIC/test.sh
+index 6e991d3..b616e6b 100755
+--- a/test/TEST-50-MULTINIC/test.sh
++++ b/test/TEST-50-MULTINIC/test.sh
+@@ -156,18 +156,18 @@ test_setup() {
+             [[ $srcmods/$_f ]] && inst_simple "$srcmods/$_f" "/lib/modules/$kernel/$_f"
+         done
+ 
+-        dracut_install sh ls shutdown poweroff stty cat ps ln ip \
++        inst_multiple sh ls shutdown poweroff stty cat ps ln ip \
+             dmesg mkdir cp ping exportfs \
+             modprobe rpc.nfsd rpc.mountd showmount tcpdump \
+             /etc/services sleep mount chmod
+         for _terminfodir in /lib/terminfo /etc/terminfo /usr/share/terminfo; do
+             [ -f "${_terminfodir}"/l/linux ] && break
+         done
+-        dracut_install -o "${_terminfodir}"/l/linux
+-        type -P portmap >/dev/null && dracut_install portmap
+-        type -P rpcbind >/dev/null && dracut_install rpcbind
+-        [ -f /etc/netconfig ] && dracut_install /etc/netconfig
+-        type -P dhcpd >/dev/null && dracut_install dhcpd
++        inst_multiple -o "${_terminfodir}"/l/linux
++        type -P portmap >/dev/null && inst_multiple portmap
++        type -P rpcbind >/dev/null && inst_multiple rpcbind
++        [ -f /etc/netconfig ] && inst_multiple /etc/netconfig
++        type -P dhcpd >/dev/null && inst_multiple dhcpd
+         [ -x /usr/sbin/dhcpd3 ] && inst /usr/sbin/dhcpd3 /usr/sbin/dhcpd
+         instmods nfsd sunrpc ipv6 lockd af_packet
+         inst_simple /etc/os-release
+@@ -175,9 +175,9 @@ test_setup() {
+         inst ./hosts /etc/hosts
+         inst ./exports /etc/exports
+         inst ./dhcpd.conf /etc/dhcpd.conf
+-        dracut_install /etc/nsswitch.conf /etc/rpc /etc/protocols
++        inst_multiple /etc/nsswitch.conf /etc/rpc /etc/protocols
+ 
+-        dracut_install rpc.idmapd /etc/idmapd.conf
++        inst_multiple rpc.idmapd /etc/idmapd.conf
+ 
+         inst_libdir_file 'libnfsidmap_nsswitch.so*'
+         inst_libdir_file 'libnfsidmap/*.so*'
+@@ -203,12 +203,12 @@ test_setup() {
+     (
+         export initdir="$TESTDIR"/mnt/nfs/client
+         . "$basedir"/dracut-functions.sh
+-        dracut_install sh shutdown poweroff stty cat ps ln ip \
++        inst_multiple sh shutdown poweroff stty cat ps ln ip \
+             mount dmesg mkdir cp ping grep ls
+         for _terminfodir in /lib/terminfo /etc/terminfo /usr/share/terminfo; do
+             [[ -f ${_terminfodir}/l/linux ]] && break
+         done
+-        dracut_install -o "${_terminfodir}"/l/linux
++        inst_multiple -o "${_terminfodir}"/l/linux
+         inst_simple /etc/os-release
+         inst ./client-init.sh /sbin/init
+         (
+@@ -220,7 +220,7 @@ test_setup() {
+         inst /etc/passwd /etc/passwd
+         inst /etc/group /etc/group
+ 
+-        dracut_install rpc.idmapd /etc/idmapd.conf
++        inst_multiple rpc.idmapd /etc/idmapd.conf
+         inst_libdir_file 'libnfsidmap_nsswitch.so*'
+         inst_libdir_file 'libnfsidmap/*.so*'
+         inst_libdir_file 'libnfsidmap*.so*'
+@@ -243,7 +243,7 @@ test_setup() {
+     (
+         export initdir="$TESTDIR"/overlay
+         . "$basedir"/dracut-functions.sh
+-        dracut_install poweroff shutdown
++        inst_multiple poweroff shutdown
+         inst_hook emergency 000 ./hard-off.sh
+         inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules
+     )
+diff --git a/test/old.TEST-14-IMSM/test.sh b/test/old.TEST-14-IMSM/test.sh
+index fbb459d..434283b 100755
+--- a/test/old.TEST-14-IMSM/test.sh
++++ b/test/old.TEST-14-IMSM/test.sh
+@@ -59,17 +59,17 @@ test_setup() {
+     (
+ 	export initdir=$TESTDIR/overlay/source
+ 	. $basedir/dracut-functions.sh
+-	dracut_install sh df free ls shutdown poweroff stty cat ps ln ip route \
++	inst_multiple sh df free ls shutdown poweroff stty cat ps ln ip route \
+ 	    mount dmesg ifconfig dhclient mkdir cp ping dhclient
+         for _terminfodir in /lib/terminfo /etc/terminfo /usr/share/terminfo; do
+ 	    [ -f ${_terminfodir}/l/linux ] && break
+ 	done
+-	dracut_install -o ${_terminfodir}/l/linux
++	inst_multiple -o ${_terminfodir}/l/linux
+ 	inst "$basedir/modules.d/40network/dhclient-script.sh" "/sbin/dhclient-script"
+ 	inst "$basedir/modules.d/40network/ifup.sh" "/sbin/ifup"
+-	dracut_install grep
++	inst_multiple grep
+ 	inst ./test-init.sh /sbin/init
+-	find_binary plymouth >/dev/null && dracut_install plymouth
++	find_binary plymouth >/dev/null && inst_multiple plymouth
+ 	(cd "$initdir"; mkdir -p dev sys proc etc var/run tmp )
+ 	cp -a /etc/ld.so.conf* $initdir/etc
+ 	mkdir $initdir/run
+@@ -80,7 +80,7 @@ test_setup() {
+     (
+ 	export initdir=$TESTDIR/overlay
+ 	. $basedir/dracut-functions.sh
+-	dracut_install sfdisk mke2fs poweroff cp umount
++	inst_multiple sfdisk mke2fs poweroff cp umount
+ 	inst_hook initqueue 01 ./create-root.sh
+ 	inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules
+     )
+@@ -106,7 +106,7 @@ test_setup() {
+     (
+ 	export initdir=$TESTDIR/overlay
+ 	. $basedir/dracut-functions.sh
+-	dracut_install poweroff shutdown
++	inst_multiple poweroff shutdown
+ 	inst_hook emergency 000 ./hard-off.sh
+ 	inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules
+     )
diff --git a/0014-51-dracut-rescue.install-fixed-rescue-image-creation.patch b/0014-51-dracut-rescue.install-fixed-rescue-image-creation.patch
new file mode 100644
index 0000000..6d8c5a1
--- /dev/null
+++ b/0014-51-dracut-rescue.install-fixed-rescue-image-creation.patch
@@ -0,0 +1,31 @@
+From 8652d5493d139105620ab82f34334f8acae13f13 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald at redhat.com>
+Date: Tue, 6 Aug 2013 11:01:45 +0200
+Subject: [PATCH] 51-dracut-rescue.install: fixed rescue image creation
+
+---
+ 51-dracut-rescue.install | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/51-dracut-rescue.install b/51-dracut-rescue.install
+index 39d01a7..b655bc2 100755
+--- a/51-dracut-rescue.install
++++ b/51-dracut-rescue.install
+@@ -6,6 +6,9 @@ export LANG=C
+ 
+ COMMAND="$1"
+ KERNEL_VERSION="$2"
++BOOT_DIR_ABS="${3%/*}/0-rescue"
++KERNEL_IMAGE="$4"
++
+ 
+ dropindirs_sort()
+ {
+@@ -50,7 +53,6 @@ fi
+ 
+ LOADER_ENTRY="/boot/loader/entries/${MACHINE_ID}-0-rescue.conf"
+ BOOT_DIR="/${MACHINE_ID}/0-rescue"
+-BOOT_DIR_ABS="/boot${BOOT_DIR}"
+ 
+ ret=0
+ 
diff --git a/0015-dracut.sh-do-not-strip-in-FIPS-mode.patch b/0015-dracut.sh-do-not-strip-in-FIPS-mode.patch
new file mode 100644
index 0000000..32c4ca3
--- /dev/null
+++ b/0015-dracut.sh-do-not-strip-in-FIPS-mode.patch
@@ -0,0 +1,43 @@
+From 5ae33613ab3145db12f21bca491d97832160cc1a Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald at redhat.com>
+Date: Tue, 6 Aug 2013 11:43:58 +0200
+Subject: [PATCH] dracut.sh: do not strip in FIPS mode
+
+---
+ dracut.sh | 22 ++++------------------
+ 1 file changed, 4 insertions(+), 18 deletions(-)
+
+diff --git a/dracut.sh b/dracut.sh
+index e119bd2..4ef71f3 100755
+--- a/dracut.sh
++++ b/dracut.sh
+@@ -1209,25 +1209,11 @@ if [[ $do_strip = yes ]] ; then
+     done
+ fi
+ 
+-if [[ $do_strip = yes ]] ; then
++if [[ $do_strip = yes ]] && ! [[ $DRACUT_FIPS_MODE ]]; then
+     dinfo "*** Stripping files ***"
+-    if [[ $DRACUT_FIPS_MODE ]]; then
+-        find "$initdir" -type f \
+-            -executable -not -path '*/lib/modules/*.ko' -print0 \
+-            | while read -r -d $'\0' f; do
+-            if ! [[ -e "${f%/*}/.${f##*/}.hmac" ]] \
+-                && ! [[ -e "/lib/hmaccalc/${f##*/}.hmac" ]] \
+-                && ! [[ -e "/lib64/hmaccalc/${f##*/}.hmac" ]] \
+-                && ! [[ -e "/lib/fipscheck/${f##*/}.hmac" ]] \
+-                && ! [[ -e "/lib64/fipscheck/${f##*/}.hmac" ]]; then
+-                printf "%s\000" "$f";
+-            fi
+-        done | xargs -r -0 strip -g 2>/dev/null
+-    else
+-        find "$initdir" -type f \
+-            -executable -not -path '*/lib/modules/*.ko' -print0 \
+-            | xargs -r -0 strip -g 2>/dev/null
+-    fi
++    find "$initdir" -type f \
++        -executable -not -path '*/lib/modules/*.ko' -print0 \
++        | xargs -r -0 strip -g 2>/dev/null
+ 
+     # strip kernel modules, but do not touch signed modules
+     find "$initdir" -type f -path '*/lib/modules/*.ko' -print0 \
diff --git a/0016-dracut.sh-check-the-value-of-kver.patch b/0016-dracut.sh-check-the-value-of-kver.patch
new file mode 100644
index 0000000..208eb46
--- /dev/null
+++ b/0016-dracut.sh-check-the-value-of-kver.patch
@@ -0,0 +1,26 @@
+From aacdba2bdb3efddd7b3b9cdb149204d86f5020b0 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald at redhat.com>
+Date: Tue, 6 Aug 2013 16:56:42 +0200
+Subject: [PATCH] dracut.sh: check the value of --kver
+
+https://bugzilla.redhat.com/show_bug.cgi?id=993327
+---
+ dracut.sh | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/dracut.sh b/dracut.sh
+index 4ef71f3..0b674ae 100755
+--- a/dracut.sh
++++ b/dracut.sh
+@@ -478,6 +478,11 @@ if [[ $regenerate_all == "yes" ]]; then
+         ((ret+=$?))
+     done
+     exit $ret
++elif [[ $kernel ]]; then
++    if ! [[ -d /lib/modules/$kernel ]] && [[ $no_kernel != yes ]]; then
++        printf -- "Kernel version $kernel has no modules in /lib/modules/$kernel\n" >&2
++        exit 1
++    fi
+ fi
+ 
+ if ! [[ $kernel ]]; then
diff --git a/0017-crypt-Fix-typo-etc-crypttab-not-etc-cryptab.patch b/0017-crypt-Fix-typo-etc-crypttab-not-etc-cryptab.patch
new file mode 100644
index 0000000..8074530
--- /dev/null
+++ b/0017-crypt-Fix-typo-etc-crypttab-not-etc-cryptab.patch
@@ -0,0 +1,24 @@
+From 7deba0428a23b3f410a7cf8cac7cf8355e4dc150 Mon Sep 17 00:00:00 2001
+From: James Lee <jlee at thestaticvoid.com>
+Date: Tue, 6 Aug 2013 11:25:58 -0400
+Subject: [PATCH] crypt: Fix typo--/etc/crypttab not /etc/cryptab
+
+1ae8b8a breaks the crypt module for those who use keyfiles due to a
+typo leading to the exclusion of /etc/crypttab from the initrd.
+---
+ modules.d/90crypt/module-setup.sh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/modules.d/90crypt/module-setup.sh b/modules.d/90crypt/module-setup.sh
+index 975f115..68b5fbe 100755
+--- a/modules.d/90crypt/module-setup.sh
++++ b/modules.d/90crypt/module-setup.sh
+@@ -57,7 +57,7 @@ install() {
+         inst_hook cleanup 30 "$moddir/crypt-cleanup.sh"
+     fi
+ 
+-    if [[ $hostonly ]] && [[ -f /etc/cryptab ]]; then
++    if [[ $hostonly ]] && [[ -f /etc/crypttab ]]; then
+         # filter /etc/crypttab for the devices we need
+         while read _mapper _dev _rest; do
+             [[ $_mapper = \#* ]] && continue
diff --git a/0018-network-net-lib.sh-fix-ibft-interface-configuration.patch b/0018-network-net-lib.sh-fix-ibft-interface-configuration.patch
new file mode 100644
index 0000000..fa20e3b
--- /dev/null
+++ b/0018-network-net-lib.sh-fix-ibft-interface-configuration.patch
@@ -0,0 +1,58 @@
+From 0b11ea71996a7b804afbc38d1d5461fb0f4ef882 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald at redhat.com>
+Date: Wed, 7 Aug 2013 16:05:03 +0200
+Subject: [PATCH] network/net-lib.sh: fix ibft interface configuration
+
+also skip ibft$num names, which have been already given
+
+https://bugzilla.redhat.com/show_bug.cgi?id=989944
+---
+ modules.d/40network/net-lib.sh | 16 ++++++++++++++--
+ 1 file changed, 14 insertions(+), 2 deletions(-)
+
+diff --git a/modules.d/40network/net-lib.sh b/modules.d/40network/net-lib.sh
+index 494960c..ca4b393 100644
+--- a/modules.d/40network/net-lib.sh
++++ b/modules.d/40network/net-lib.sh
+@@ -172,13 +172,20 @@ save_netinfo() {
+ }
+ 
+ set_ifname() {
+-    local name="$1" mac="$2" num=0 n=""
++    local name="$1" mac="$2" num=-1 n=""
+     # if it's already set, return the existing name
+     for n in $(getargs ifname=); do
+         strstr "$n" "$mac" && echo ${n%%:*} && return
+     done
+     # otherwise, pick a new name and use that
+-    while [ -e /sys/class/net/$name$num ]; do num=$(($num+1)); done
++    while :; do
++        num=$(($num+1));
++        [ -e /sys/class/net/$name$num ] && continue
++        for n in $(getargs ifname=); do
++            [ "$name$num" = "${n%%:*}" ] && continue 2
++        done
++        break
++    done
+     echo "ifname=$name$num:$mac" >> /etc/cmdline.d/45-ifname.conf
+     echo "$name$num"
+ }
+@@ -205,6 +212,9 @@ ibft_to_cmdline() {
+             mac=$(read a < ${iface}/mac; echo $a)
+             [ -z "$mac" ] && continue
+             dev=$(set_ifname ibft $mac)
++
++            [ -e /tmp/net.${dev}.has_ibft_config ] && continue
++
+             [ -e ${iface}/dhcp ] && dhcp=$(read a < ${iface}/dhcp; echo $a)
+             if [ -e ${iface}/vlan ]; then
+                vlan=$(read a < ${iface}/vlan; echo $a)
+@@ -215,6 +225,8 @@ ibft_to_cmdline() {
+                 echo "ip=$dev:dhcp"
+             elif [ -e ${iface}/ip-addr ]; then
+                 [ -e ${iface}/ip-addr ] && ip=$(read a < ${iface}/ip-addr; echo $a)
++                # skip not assigned ip adresses
++                [ "$ip" = "0.0.0.0" ] && continue
+                 [ -e ${iface}/gateway ] && gw=$(read a < ${iface}/gateway; echo $a)
+                 [ -e ${iface}/subnet-mask ] && mask=$(read a < ${iface}/subnet-mask; echo $a)
+                 [ -e ${iface}/hostname ] && hostname=$(read a < ${iface}/hostname; echo $a)
diff --git a/0019-iscsi-module-setup.sh-install-some-modules-regardles.patch b/0019-iscsi-module-setup.sh-install-some-modules-regardles.patch
new file mode 100644
index 0000000..dfae8d8
--- /dev/null
+++ b/0019-iscsi-module-setup.sh-install-some-modules-regardles.patch
@@ -0,0 +1,24 @@
+From 7929ec198fa693f07160518b6858e967fdd53f48 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald at redhat.com>
+Date: Fri, 9 Aug 2013 10:33:27 +0200
+Subject: [PATCH] iscsi/module-setup.sh: install some modules regardless of
+ hostonly
+
+---
+ modules.d/95iscsi/module-setup.sh | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/modules.d/95iscsi/module-setup.sh b/modules.d/95iscsi/module-setup.sh
+index 3f817ec..502e834 100755
+--- a/modules.d/95iscsi/module-setup.sh
++++ b/modules.d/95iscsi/module-setup.sh
+@@ -36,7 +36,8 @@ depends() {
+ installkernel() {
+     local _arch=$(uname -m)
+ 
+-    instmods iscsi_tcp iscsi_ibft crc32c bnx2i iscsi_boot_sysfs qla4xxx cxgb3i cxgb4i be2iscsi
++    instmods bnx2i qla4xxx cxgb3i cxgb4i be2iscsi
++    hostonly="" instmods iscsi_tcp iscsi_ibft crc32c iscsi_boot_sysfs
+     iscsi_module_filter() {
+         local _funcs='iscsi_register_transport'
+         # subfunctions inherit following FDs
diff --git a/0020-multipath-need_shutdown-if-multipath-devices-exist.patch b/0020-multipath-need_shutdown-if-multipath-devices-exist.patch
new file mode 100644
index 0000000..f446e15
--- /dev/null
+++ b/0020-multipath-need_shutdown-if-multipath-devices-exist.patch
@@ -0,0 +1,41 @@
+From e84d115b93428bf93e82a2c808721aadc048b163 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald at redhat.com>
+Date: Fri, 9 Aug 2013 10:44:34 +0200
+Subject: [PATCH] multipath: need_shutdown if multipath devices exist
+
+https://bugzilla.redhat.com/show_bug.cgi?id=994913
+---
+ modules.d/90multipath/module-setup.sh            | 3 +++
+ modules.d/90multipath/multipathd-needshutdown.sh | 9 +++++++++
+ 2 files changed, 12 insertions(+)
+ create mode 100755 modules.d/90multipath/multipathd-needshutdown.sh
+
+diff --git a/modules.d/90multipath/module-setup.sh b/modules.d/90multipath/module-setup.sh
+index 6cdc511..feb58dc 100755
+--- a/modules.d/90multipath/module-setup.sh
++++ b/modules.d/90multipath/module-setup.sh
+@@ -95,6 +95,9 @@ install() {
+         inst_hook pre-trigger 02 "$moddir/multipathd.sh"
+         inst_hook cleanup   02 "$moddir/multipathd-stop.sh"
+     fi
++
++    inst_hook cleanup   80 "$moddir/multipathd-needshutdown.sh"
++
+     inst_rules 40-multipath.rules 62-multipath.rules 65-multipath.rules 66-kpartx.rules
+ }
+ 
+diff --git a/modules.d/90multipath/multipathd-needshutdown.sh b/modules.d/90multipath/multipathd-needshutdown.sh
+new file mode 100755
+index 0000000..1565d4d
+--- /dev/null
++++ b/modules.d/90multipath/multipathd-needshutdown.sh
+@@ -0,0 +1,9 @@
++#!/bin/sh
++# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
++# ex: ts=8 sw=4 sts=4 et filetype=sh
++
++for i in /dev/mapper/mpath*; do
++    [ -b "$i" ] || continue
++    need_shutdown
++    break
++done
diff --git a/0021-omit-drivers-fix.patch b/0021-omit-drivers-fix.patch
new file mode 100644
index 0000000..36aa478
--- /dev/null
+++ b/0021-omit-drivers-fix.patch
@@ -0,0 +1,30 @@
+From beb26a084794a4bc8baffc8384cb8e41844f89f9 Mon Sep 17 00:00:00 2001
+From: "dyoung at redhat.com" <dyoung at redhat.com>
+Date: Thu, 8 Aug 2013 14:05:02 +0800
+Subject: [PATCH] omit drivers fix
+
+Because omit_drivers list use underline always, so when maching with it
+the _mod need to be converted as well or sometimes omit-drivers will fail
+silently.
+
+Fix this by replace '-' with '_' in instmods function.
+
+Signed-off-by: Dave Young <dyoung at redhat.com>
+---
+ dracut-functions.sh | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/dracut-functions.sh b/dracut-functions.sh
+index fbe0633..6033a1a 100755
+--- a/dracut-functions.sh
++++ b/dracut-functions.sh
+@@ -1420,7 +1420,8 @@ instmods() {
+                     return $_ret
+                 fi
+ 
+-                if [[ $omit_drivers ]] && [[ "$1" =~ $omit_drivers ]]; then
++                _mod=${_mod/-/_}
++                if [[ $omit_drivers ]] && [[ "$_mod" =~ $omit_drivers ]]; then
+                     dinfo "Omitting driver ${_mod##$srcmods}"
+                     return 0
+                 fi
diff --git a/dracut.spec b/dracut.spec
index edaea2a..44c2c7c 100644
--- a/dracut.spec
+++ b/dracut.spec
@@ -10,7 +10,7 @@
 
 Name: dracut
 Version: 031
-Release: 7.git20130801%{?dist}
+Release: 22.git20130809%{?dist}
 
 Summary: Initramfs generator using udev
 %if 0%{?fedora} || 0%{?rhel}
@@ -35,6 +35,21 @@ Patch3: 0003-Change-the-implementation-of-action_on_fail.patch
 Patch4: 0004-lvm-add-yes-to-lvm-lvchange.patch
 Patch5: 0005-cms-cmssetup.sh-correct-port-for-zfcp.conf.patch
 Patch6: 0006-95terminfo-install-vt102.patch
+Patch7: 0007-lsinitrd.sh-add-old-cpio-signature.patch
+Patch8: 0008-dracut.sh-call-find-with-print0-and-cpio-with-null.patch
+Patch9: 0009-dracut.asc-small-corrections.patch
+Patch10: 0010-systemd-dracut-initqueue.sh-continue-to-boot-if-fini.patch
+Patch11: 0011-dracut.sh-dracut-functions.sh-handle-root-on-non-blo.patch
+Patch12: 0012-dracut-functions.sh-removed-non-dracut-install-shell.patch
+Patch13: 0013-dracut-functions.sh-inst_multiple-dracut_install.patch
+Patch14: 0014-51-dracut-rescue.install-fixed-rescue-image-creation.patch
+Patch15: 0015-dracut.sh-do-not-strip-in-FIPS-mode.patch
+Patch16: 0016-dracut.sh-check-the-value-of-kver.patch
+Patch17: 0017-crypt-Fix-typo-etc-crypttab-not-etc-cryptab.patch
+Patch18: 0018-network-net-lib.sh-fix-ibft-interface-configuration.patch
+Patch19: 0019-iscsi-module-setup.sh-install-some-modules-regardles.patch
+Patch20: 0020-multipath-need_shutdown-if-multipath-devices-exist.patch
+Patch21: 0021-omit-drivers-fix.patch
 
 
 BuildRequires: bash git
@@ -450,6 +465,25 @@ rm -rf -- $RPM_BUILD_ROOT
 %endif
 
 %changelog
+* Fri Aug 09 2013 Harald Hoyer <harald at redhat.com> 031-22.git20130809
+- lsinitrd.sh: add old cpio signature
+- dracut.sh: call find with -print0 and cpio with --null
+- dracut.asc: small corrections
+- systemd/dracut-initqueue.sh: continue to boot if finished failed
+- dracut.sh/dracut-functions.sh: handle root on non-block device
+- dracut-functions.sh: removed non dracut-install shell functions
+- dracut-functions.sh: inst_multiple == dracut_install
+- 51-dracut-rescue.install: fixed rescue image creation
+- dracut.sh: do not strip in FIPS mode
+Resolves: rhbz#990250
+- dracut.sh: check the value of --kver
+- crypt: Fix typo--/etc/crypttab not /etc/cryptab
+- network/net-lib.sh: fix ibft interface configuration
+- iscsi/module-setup.sh: install some modules regardless of hostonly
+- multipath: need_shutdown if multipath devices exist
+Resolves: rhbz#994913
+- omit drivers fix
+
 * Thu Aug 01 2013 Harald Hoyer <harald at redhat.com> 031-7.git20130801
 - also install vt102 terminfo
 


More information about the scm-commits mailing list