From f8c4a0f4e5e46e7b415502f39eb98c7f261086a3 Mon Sep 17 00:00:00 2001 From: Harald Hoyer Date: Aug 09 2013 12:21:29 +0000 Subject: 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 --- 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 +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 +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 +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 +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 +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 +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 ] [ ... ] +- # Install to the initramfs image +- # -o optionally install the 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 +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 +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 +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 +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 +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 +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 +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 +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@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 +--- + 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 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 031-7.git20130801 - also install vt102 terminfo