From 29b10e65b12988db162b463ebee9c8ced56a7dbb Mon Sep 17 00:00:00 2001 From: Harald Hoyer Date: Thu, 12 May 2011 11:03:30 +0200 Subject: [PATCH] dracut-functions: make local vars local and prefix with "_" --- dracut-functions | 546 +++++++++++---------- modules.d/01fips/module-setup.sh | 24 +- modules.d/05busybox/module-setup.sh | 13 +- modules.d/10rpmversion/module-setup.sh | 10 +- modules.d/40network/module-setup.sh | 24 +- modules.d/50gensplash/module-setup.sh | 36 +- modules.d/50plymouth/module-setup.sh | 5 +- modules.d/60xen/module-setup.sh | 5 +- modules.d/90btrfs/module-setup.sh | 7 +- modules.d/90crypt/module-setup.sh | 7 +- modules.d/90dmraid/module-setup.sh | 12 +- modules.d/90kernel-modules/module-setup.sh | 5 +- modules.d/90lvm/module-setup.sh | 12 +- modules.d/90mdraid/module-setup.sh | 7 +- modules.d/90multipath/module-setup.sh | 12 +- modules.d/95dasd/module-setup.sh | 4 +- modules.d/95dasd_mod/module-setup.sh | 4 +- modules.d/95iscsi/module-setup.sh | 11 +- modules.d/95nbd/module-setup.sh | 7 +- modules.d/95nfs/module-setup.sh | 14 +- modules.d/95resume/module-setup.sh | 7 +- modules.d/95terminfo/module-setup.sh | 9 +- modules.d/95udev-rules/module-setup.sh | 9 +- modules.d/98syslog/module-setup.sh | 16 +- modules.d/99base/module-setup.sh | 5 +- 25 files changed, 428 insertions(+), 383 deletions(-) diff --git a/dracut-functions b/dracut-functions index ae3d2656..52f19824 100755 --- a/dracut-functions +++ b/dracut-functions @@ -44,25 +44,25 @@ mksubdirs() { mkdir -m 0755 -p ${1%/*}; } # $2 = comparision op (gt, ge, eq, le, lt, ne) # $3 = version b vercmp() { - local n1=(${1//./ }) op=$2 n2=(${3//./ }) i res + local _n1=(${1//./ }) _op=$2 _n2=(${3//./ }) _i _res - for ((i=0; ; i++)) + for ((_i=0; ; _i++)) do - if [[ ! ${n1[i]}${n2[i]} ]]; then res=0 - elif ((${n1[i]:-0} > ${n2[i]:-0})); then res=1 - elif ((${n1[i]:-0} < ${n2[i]:-0})); then res=2 + if [[ ! ${_n1[_i]}${_n2[_i]} ]]; then _res=0 + elif ((${_n1[_i]:-0} > ${_n2[_i]:-0})); then _res=1 + elif ((${_n1[_i]:-0} < ${_n2[_i]:-0})); then _res=2 else continue fi break done - case $op in - gt) ((res == 1));; - ge) ((res != 2));; - eq) ((res == 0));; - le) ((res != 1));; - lt) ((res == 2));; - ne) ((res != 0));; + case $_op in + gt) ((_res == 1));; + ge) ((_res != 2));; + eq) ((_res == 0));; + le) ((_res != 1));; + lt) ((_res == 2));; + ne) ((_res != 0));; esac } @@ -73,17 +73,19 @@ is_func() { # Function prints global variables in format name=value line by line. # $@ = list of global variables' name print_vars() { - local var value + local _var _value - for var in $@ + for _var in $@ do - value=$(eval echo \$$var) - [[ ${value} ]] && echo "${var}=\"${value}\"" + _value=$(eval echo \$$_var) + [[ ${_value} ]] && echo "${_var}=\"${_value}\"" done } get_fs_env() { [[ $1 ]] || return + unset ID_FS_TYPE + unset ID_FS_UUID eval $(udevadm info --query=env --name=$1|egrep 'ID_FS_(TYPE|UUID)=') [[ $ID_FS_TYPE ]] && return @@ -115,38 +117,38 @@ get_fs_uuid() ( # finds the major:minor of the block device backing the root filesystem. find_block_device() { - local x mpt majmin dev fs misc maj min + local _x _mpt _majmin _dev _fs _maj _min if [[ $use_fstab != yes ]]; then - while read x x majmin x mpt x x fs dev misc; do - [[ $fs = nfs ]] && { echo $dev; return 0;} - [[ $fs = nfs3 ]] && { echo $dev; return 0;} - [[ $fs = nfs4 ]] && { echo $dev; return 0;} - [[ $fs = btrfs ]] && { - ls -nLl "$dev" | { - read x x x x maj min x - maj=${maj//,/} - echo $maj:$min + while read _x _x _majmin _x _mpt _x _x _fs _dev _x; do + [[ $_fs = nfs ]] && { echo $_dev; return 0;} + [[ $_fs = nfs3 ]] && { echo $_dev; return 0;} + [[ $_fs = nfs4 ]] && { echo $_dev; return 0;} + [[ $_fs = btrfs ]] && { + ls -nLl "$_dev" | { + read _x _x _x _x _maj _min _x + _maj=${_maj//,/} + echo $_maj:$_min } && return 0 } - if [[ $mpt = $1 ]] && [[ ${majmin#0:} = $majmin ]]; then - echo $majmin + if [[ $_mpt = $1 ]] && [[ ${_majmin#0:} = $_majmin ]]; then + echo $_majmin return 0 # we have a winner! fi done < /proc/self/mountinfo fi # fall back to /etc/fstab - while read dev mpt fs misc; do - if [[ $mpt = $1 ]]; then - [[ $fs = nfs ]] && { echo $dev; return 0;} - [[ $fs = nfs3 ]] && { echo $dev; return 0;} - [[ $fs = nfs4 ]] && { echo $dev; return 0;} - [[ $dev != ${dev#UUID=} ]] && dev=/dev/disk/by-uuid/${dev#UUID=} - [[ $dev != ${dev#LABEL=} ]] && dev=/dev/disk/by-label/${dev#LABEL=} - [[ -b $dev ]] || return 1 # oops, not a block device. - ls -nLl "$dev" | { - read x x x x maj min x - maj=${maj//,/} - echo $maj:$min + while read _dev _mpt _fs _x; do + if [[ $_mpt = $1 ]]; then + [[ $_fs = nfs ]] && { echo $_dev; return 0;} + [[ $_fs = nfs3 ]] && { echo $_dev; return 0;} + [[ $_fs = nfs4 ]] && { echo $_dev; return 0;} + [[ $_dev != ${_dev#UUID=} ]] && _dev=/dev/disk/by-uuid/${_dev#UUID=} + [[ $_dev != ${_dev#LABEL=} ]] && _dev=/dev/disk/by-label/${_dev#LABEL=} + [[ -b $_dev ]] || return 1 # oops, not a block device. + ls -nLl "$_dev" | { + read _x _x _x _x _maj _min _x + _maj=${_maj//,/} + echo $_maj:$_min } && return 0 fi done < /etc/fstab @@ -161,7 +163,7 @@ find_root_block_device() { find_block_device /; } # $1 = function to call on every found block device # $2 = block device in major:minor format check_block_and_slaves() { - local x + local _x [[ -b /dev/block/$2 ]] || return 1 # Not a block device? So sorry. "$1" $2 && return check_vol_slaves "$@" && return 0 @@ -169,15 +171,16 @@ check_block_and_slaves() { check_block_and_slaves $1 $(cat "/sys/dev/block/$2/../dev") && return 0 fi [[ -d /sys/dev/block/$2/slaves ]] || return 1 - for x in /sys/dev/block/$2/slaves/*/dev; do - [[ -f $x ]] || continue - check_block_and_slaves $1 $(cat "$x") && return 0 + for _x in /sys/dev/block/$2/slaves/*/dev; do + [[ -f $_x ]] || continue + check_block_and_slaves $1 $(cat "$_x") && return 0 done return 1 } get_numeric_dev() { - ls -lH "$1" | { read a b c d maj min rest; printf "%d:%d" ${maj%%,} $min; } + local _x _maj _min + ls -lH "$1" | { read _x _x _x _x _maj _min _x; printf "%d:%d" ${_maj%%,} $_min; } } # ugly workaround for the lvm design @@ -187,16 +190,17 @@ get_numeric_dev() { # but you cannot create the logical volume without the volume group. # And the volume group might be bigger than the devices the LV needs. check_vol_slaves() { + local _lv _vg _pv for i in /dev/mapper/*; do - lv=$(get_numeric_dev $i) - if [[ $lv = $2 ]]; then - vg=$(lvm lvs --noheadings -o vg_name $i 2>/dev/null) + _lv=$(get_numeric_dev $i) + if [[ $_lv = $2 ]]; then + _vg=$(lvm lvs --noheadings -o vg_name $i 2>/dev/null) # strip space - vg=$(echo $vg) - if [[ $vg ]]; then - for pv in $(lvm vgs --noheadings -o pv_name "$vg" 2>/dev/null) + _vg=$(echo $_vg) + if [[ $_vg ]]; then + for _pv in $(lvm vgs --noheadings -o pv_name "$_vg" 2>/dev/null) do - check_block_and_slaves $1 $(get_numeric_dev $pv) && return 0 + check_block_and_slaves $1 $(get_numeric_dev $_pv) && return 0 done fi fi @@ -209,27 +213,28 @@ check_vol_slaves() { # will create ${initdir}/lib64, ${initdir}/lib64/file, # and a symlink ${initdir}/lib -> lib64. inst_dir() { - local dir="$1" - [[ -e ${initdir}$dir ]] && return 0 + local _dir="$1" + local _file="" + local IFS="/" + local _part + [[ -e ${initdir}$_dir ]] && return 0 # iterate over parent directories - local file="" - local IFS="/" - for part in $dir; do - [[ $part ]] || continue - file="$file/$part" - [[ -e ${initdir}$file ]] && continue + for _part in $_dir; do + [[ $_part ]] || continue + _file="$_file/$_part" + [[ -e ${initdir}$_file ]] && continue - if [[ -L $file ]]; then + if [[ -L $_file ]]; then # create link as the original - local target=$(readlink "$file") - ln -sfn "$target" "${initdir}$file" || return 1 + local target=$(readlink "$_file") + ln -sfn "$target" "${initdir}$_file" || return 1 # resolve relative path and recursively install destination - [[ $target == ${target#/} ]] && target="$(dirname "$file")/$target" + [[ $target == ${target#/} ]] && target="$(dirname "$_file")/$target" inst_dir "$target" else # create directory - mkdir -m 0755 -p "${initdir}$file" || return 1 + mkdir -m 0755 -p "${initdir}$_file" || return 1 fi done } @@ -239,19 +244,19 @@ inst_dir() { # Location of the image dir is assumed to be $initdir # We never overwrite the target if it exists. inst_simple() { - local src target + local _src target [[ -f $1 ]] || return 1 - src=$1 target="${2:-$1}" + _src=$1 target="${2:-$1}" if ! [[ -d ${initdir}$target ]]; then [[ -e ${initdir}$target ]] && return 0 inst_dir "${target%/*}" fi # install checksum files also - if [[ -e "${src%/*}/.${src##*/}.hmac" ]]; then - inst "${src%/*}/.${src##*/}.hmac" "${target%/*}/.${target##*/}.hmac" + if [[ -e "${_src%/*}/.${_src##*/}.hmac" ]]; then + inst "${_src%/*}/.${_src##*/}.hmac" "${target%/*}/.${target##*/}.hmac" fi - ddebug "Installing $src" - cp -pfL "$src" "${initdir}$target" + ddebug "Installing $_src" + cp -pfL "$_src" "${initdir}$target" } # find symlinks linked to given library file @@ -283,27 +288,27 @@ rev_lib_symlinks() { # It handles making symlinks according to how the original library # is referenced. inst_library() { - local src=$1 dest=${2:-$1} lib reallib symlink - [[ -e $initdir$dest ]] && return 0 - if [[ -L $src ]]; then + local _src=$1 _dest=${2:-$1} _lib _reallib _symlink + [[ -e $initdir$_dest ]] && return 0 + if [[ -L $_src ]]; then # install checksum files also - if [[ -e "${src%/*}/.${src##*/}.hmac" ]]; then - inst "${src%/*}/.${src##*/}.hmac" "${dest%/*}/.${dest##*/}.hmac" + if [[ -e "${_src%/*}/.${_src##*/}.hmac" ]]; then + inst "${_src%/*}/.${_src##*/}.hmac" "${_dest%/*}/.${_dest##*/}.hmac" fi - reallib=$(readlink -f "$src") - lib=${src##*/} - inst_simple "$reallib" "$reallib" - inst_dir "${dest%/*}" - (cd "${initdir}${dest%/*}" && ln -sfn "$reallib" "$lib") + _reallib=$(readlink -f "$_src") + _lib=${_src##*/} + inst_simple "$_reallib" "$_reallib" + inst_dir "${_dest%/*}" + (cd "${initdir}${_dest%/*}" && ln -sfn "$_reallib" "$_lib") else - inst_simple "$src" "$dest" + inst_simple "$_src" "$_dest" fi # 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 + for _symlink in $(rev_lib_symlinks $_src) $(rev_lib_symlinks $_reallib); do + [[ ! -e $initdir$_symlink ]] && { + ddebug "Creating extra symlink: $_symlink" + inst_symlink $_symlink } done } @@ -311,15 +316,15 @@ inst_library() { # find a binary. If we were not passed the full path directly, # search in the usual places to find the binary. find_binary() { - local binpath="/bin /sbin /usr/bin /usr/sbin" p + local _binpath="/bin /sbin /usr/bin /usr/sbin" _p if [[ -z ${1##/*} ]]; then if [[ -x $1 ]] || ldd $1 &>/dev/null; then echo $1 return 0 fi fi - for p in $binpath; do - [[ -x $p/$1 ]] && { echo "$p/$1"; return 0; } + for _p in $_binpath; do + [[ -x $_p/$1 ]] && { echo "$_p/$1"; return 0; } done return 1 } @@ -327,102 +332,104 @@ find_binary() { # Same as above, but specialized to install binary executables. # Install binary executable, and all shared library dependencies, if any. inst_binary() { - local bin target f self so_regex lib_regex TLIBDIR BASE FILE + local _bin _target _f _self _so_regex _lib_regex _tlibdir _base _file _line - bin=$(find_binary "$1") || return 1 - target=${2:-$bin} - inst_symlink $bin $target && return 0 - [[ -e $initdir$target ]] && return 0 + _bin=$(find_binary "$1") || return 1 + _target=${2:-$_bin} + inst_symlink $_bin $_target && return 0 + [[ -e $initdir$_target ]] && return 0 # If the binary being installed is also a library, add it to the loop. - so_regex='([^ ]*/lib[^/]*/[^ ]*\.so[^ ]*)' - [[ $bin =~ $so_regex ]] && self="\t${bin##*/} => ${bin} (0x0)\n" + _so_regex='([^ ]*/lib[^/]*/[^ ]*\.so[^ ]*)' + [[ $_bin =~ $_so_regex ]] && _self="\t${_bin##*/} => ${_bin} (0x0)\n" - lib_regex='^(/lib[^/]*).*' + _lib_regex='^(/lib[^/]*).*' # I love bash! - { LC_ALL=C ldd $bin 2>/dev/null; echo -en "$self"; } | while read line; do - [[ $line = 'not a dynamic executable' ]] && return 1 - if [[ $line =~ not\ found ]]; then - dfatal "Missing a shared library required by $bin." - dfatal "Run \"ldd $bin\" to find out what it is." + { LC_ALL=C ldd $_bin 2>/dev/null; echo -en "$_self"; } | while read _line; do + [[ $_line = 'not a dynamic executable' ]] && return 1 + if [[ $_line =~ not\ found ]]; then + dfatal "Missing a shared library required by $_bin." + dfatal "Run \"ldd $_bin\" to find out what it is." dfatal "dracut cannot create an initrd." exit 1 fi - [[ $line =~ $so_regex ]] || continue - FILE=${BASH_REMATCH[1]} - [[ -e ${initdir}$FILE ]] && continue + [[ $_line =~ $_so_regex ]] || continue + _file=${BASH_REMATCH[1]} + [[ -e ${initdir}$_file ]] && continue # See if we are loading an optimized version of a shared lib. - if [[ $FILE =~ $lib_regex ]]; then - TLIBDIR=${BASH_REMATCH[1]} - BASE=${FILE##*/} + if [[ $_file =~ $_lib_regex ]]; then + _tlibdir=${BASH_REMATCH[1]} + _base=${_file##*/} # Prefer nosegneg libs to unoptimized ones. - for f in "$TLIBDIR/i686/nosegneg" "$TLIBDIR"; do - [[ -e $f/$BASE ]] || continue - FILE=$f/$BASE + for _f in "$_tlibdir/i686/nosegneg" "$_tlibdir"; do + [[ -e $_f/$_base ]] || continue + _file=$_f/$_base break done - inst_library "$FILE" "$TLIBDIR/$BASE" + inst_library "$_file" "$_tlibdir/$_base" else - inst_library "$FILE" + inst_library "$_file" fi done # Install the binary if it wasn't handled in the above loop. - [[ -z $self ]] && inst_simple "$bin" "$target" + [[ -z $_self ]] && inst_simple "$_bin" "$_target" } # same as above, except for shell scripts. # If your shell script does not start with shebang, it is not a shell script. inst_script() { [[ -f $1 ]] || return 1 - local line - read -r -n 80 line <"$1" + local _line _shebang_regex + read -r -n 80 _line <"$1" # 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 + [[ $debug ]] && _line=$(echo -n "$_line" | tr -c -d '[:print:][:space:]') + _shebang_regex='(#! *)(/[^ ]+).*' + [[ $_line =~ $_shebang_regex ]] || return 1 inst "${BASH_REMATCH[2]}" && inst_simple "$@" } # same as above, but specialized for symlinks inst_symlink() { - local src=$1 target=$initdir${2:-$1} realsrc + local _src=$1 _target=$initdir${2:-$1} _realsrc [[ -L $1 ]] || return 1 - [[ -L $target ]] && return 0 - realsrc=$(readlink -f "$src") - [[ $realsrc = ${realsrc##*/} ]] && realsrc=${src%/*}/$realsrc - inst "$realsrc" && mkdir -m 0755 -p "${target%/*}" && \ - ln -sfn "$realsrc" "$target" + [[ -L $_target ]] && return 0 + _realsrc=$(readlink -f "$_src") + [[ $_realsrc = ${_realsrc##*/} ]] && _realsrc=${_src%/*}/$_realsrc + inst "$_realsrc" && mkdir -m 0755 -p "${_target%/*}" && \ + ln -sfn "$_realsrc" "$_target" } # udev rules always get installed in the same place, so # create a function to install them to make life simpler. inst_rules() { - local target=/etc/udev/rules.d rule found + local _target=/etc/udev/rules.d _rule _found inst_dir "/lib/udev/rules.d" - inst_dir "$target" - for rule in "$@"; do + inst_dir "$_target" + for _rule in "$@"; do for r in /lib/udev/rules.d /etc/udev/rules.d; do - if [[ -f $r/$rule ]]; then - found="$r/$rule" - inst_simple "$found" + if [[ -f $r/$_rule ]]; then + _found="$r/$_rule" + inst_simple "$_found" fi done for r in '' ./ $dracutbasedir/rules.d/; do - if [[ -f ${r}$rule ]]; then - found="${r}$rule" - inst_simple "$found" "$target/${found##*/}" + if [[ -f ${r}$_rule ]]; then + _found="${r}$_rule" + inst_simple "$_found" "$_target/${_found##*/}" fi done - [[ $found ]] || dinfo "Skipping udev rule: $rule" + [[ $_found ]] || dinfo "Skipping udev rule: $_rule" done } # general purpose installation function # Same args as above. inst() { + local _x + case $# in 1) ;; 2) [[ ! $initdir && -d $2 ]] && export initdir=$2 @@ -432,8 +439,8 @@ inst() { *) 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 + for _x in inst_symlink inst_script inst_binary inst_simple; do + $_x "$@" && return 0 done return 1 } @@ -460,13 +467,14 @@ inst_hook() { } dracut_install() { + local _optional=no if [[ $1 = '-o' ]]; then - local optional=yes + _optional=yes shift fi while (($# > 0)); do if ! inst "$1" ; then - if [[ $optional = yes ]]; then + if [[ $_optional = yes ]]; then dwarn "Skipping program $1 as it cannot be found and is" \ "flagged to be optional" else @@ -484,32 +492,32 @@ dracut_install() { # Function install targets in the same paths inside overlay but decompressed # and without extensions (.gz, .bz2). inst_decompress() { - local src dst realsrc realdst cmd + local _src _dst _realsrc _realdst _cmd - for src in $@ + for _src in $@ do - case ${src} in - *.gz) cmd='gzip -d' ;; - *.bz2) cmd='bzip2 -d' ;; + case ${_src} in + *.gz) _cmd='gzip -d' ;; + *.bz2) _cmd='bzip2 -d' ;; *) return 1 ;; esac - if [[ -L ${src} ]] + if [[ -L ${_src} ]] then - realsrc="$(readlink -f ${src})" # symlink target with extension - dst="${src%.*}" # symlink without extension - realdst="${realsrc%.*}" # symlink target without extension - mksubdirs "${initdir}/${src}" + _realsrc="$(readlink -f ${_src})" # symlink target with extension + _dst="${_src%.*}" # symlink without extension + _realdst="${_realsrc%.*}" # symlink target without extension + mksubdirs "${initdir}/${_src}" # Create symlink without extension to target without extension. - ln -sfn "${realdst}" "${initdir}/${dst}" + ln -sfn "${_realdst}" "${initdir}/${_dst}" fi # If the source is symlink we operate on its target. - [[ ${realsrc} ]] && src=${realsrc} - inst ${src} + [[ ${_realsrc} ]] && _src=${_realsrc} + inst ${_src} # Decompress with chosen tool. We assume that tool changes name e.g. # from 'name.gz' to 'name'. - ${cmd} "${initdir}${src}" + ${_cmd} "${initdir}${_src}" done } @@ -517,174 +525,180 @@ inst_decompress() { # install. # $@ = list of files inst_opt_decompress() { - local src + local _src - for src in $@ + for _src in $@ do - inst_decompress "${src}" || inst "${src}" + inst_decompress "${_src}" || inst "${_src}" done } module_check() { - local moddir=$(echo ${dracutbasedir}/modules.d/??${1}) - [[ -d $moddir ]] || return 1 - if [[ ! -f $moddir/module-setup.sh ]]; then + local _moddir=$(echo ${dracutbasedir}/modules.d/??${1}) + local _ret + [[ -d $_moddir ]] || return 1 + if [[ ! -f $_moddir/module-setup.sh ]]; then # if we do not have a check script, we are unconditionally included - [[ -x $moddir/check ]] || return 0 - $moddir/check $hostonly + [[ -x $_moddir/check ]] || return 0 + $_moddir/check $hostonly return $? else unset check depends install installkernel - . $moddir/module-setup.sh + . $_moddir/module-setup.sh is_func check || return 0 check - ret=$? + _ret=$? unset check depends install installkernel - return $ret + return $_ret fi } module_depends() { - local moddir=$(echo ${dracutbasedir}/modules.d/??${1}) - [[ -d $moddir ]] || return 1 - if [[ ! -f $moddir/module-setup.sh ]]; then + local _moddir=$(echo ${dracutbasedir}/modules.d/??${1}) + local _ret + [[ -d $_moddir ]] || return 1 + if [[ ! -f $_moddir/module-setup.sh ]]; then # if we do not have a check script, we have no deps - [[ -x $moddir/check ]] || return 0 - $moddir/check -d + [[ -x $_moddir/check ]] || return 0 + $_moddir/check -d return $? else unset check depends install installkernel - . $moddir/module-setup.sh + . $_moddir/module-setup.sh is_func depends || return 0 depends - ret=$? + _ret=$? unset check depends install installkernel - return $ret + return $_ret fi } module_install() { - local moddir=$(echo ${dracutbasedir}/modules.d/??${1}) - [[ -d $moddir ]] || return 1 - if [[ ! -f $moddir/module-setup.sh ]]; then - [[ -x $moddir/install ]] && . "$moddir/install" + local _moddir=$(echo ${dracutbasedir}/modules.d/??${1}) + local _ret + [[ -d $_moddir ]] || return 1 + if [[ ! -f $_moddir/module-setup.sh ]]; then + [[ -x $_moddir/install ]] && . "$_moddir/install" return $? else unset check depends install installkernel - . $moddir/module-setup.sh + . $_moddir/module-setup.sh is_func install || return 0 install - ret=$? + _ret=$? unset check depends install installkernel - return $ret + return $_ret fi } module_installkernel() { - local moddir=$(echo ${dracutbasedir}/modules.d/??${1}) - [[ -d $moddir ]] || return 1 - if [[ ! -f $moddir/module-setup.sh ]]; then - [[ -x $moddir/installkernel ]] && . "$moddir/installkernel" + local _moddir=$(echo ${dracutbasedir}/modules.d/??${1}) + local _ret + [[ -d $_moddir ]] || return 1 + if [[ ! -f $_moddir/module-setup.sh ]]; then + [[ -x $_moddir/installkernel ]] && . "$_moddir/installkernel" return $? else unset check depends install installkernel - . $moddir/module-setup.sh + . $_moddir/module-setup.sh is_func installkernel || return 0 installkernel - ret=$? + _ret=$? unset check depends install installkernel - return $ret + return $_ret fi } check_module() { - local mod=$1; - local moddir=$(echo ${dracutbasedir}/modules.d/??${1}) - local moddep; + local _mod=$1 + local _moddir=$(echo ${dracutbasedir}/modules.d/??${1}) + local _ret + local _moddep # If we are already scheduled to be loaded, no need to check again. - strstr " $mods_to_load " " $mod " && return 0 - strstr " $mods_checked_as_dep " " $mod " && return 1 + strstr " $mods_to_load " " $_mod " && return 0 + strstr " $mods_checked_as_dep " " $_mod " && return 1 # This should never happen, but... - [[ -d $moddir ]] || return 1 + [[ -d $_moddir ]] || return 1 - [[ $2 ]] || mods_checked_as_dep+=" $mod " + [[ $2 ]] || mods_checked_as_dep+=" $_mod " - strstr " $omit_dracutmodules " " $mod " && return 1 + strstr " $omit_dracutmodules " " $_mod " && return 1 - if strstr " $dracutmodules $add_dracutmodules " " $mod "; then - module_check $mod; ret=$? + if strstr " $dracutmodules $add_dracutmodules " " $_mod "; then + module_check $_mod; ret=$? # explicit module, so also accept ret=255 [[ $ret = 0 || $ret = 255 ]] || return 1 else # module not in our list if [[ $dracutmodules = all ]]; then # check, if we can and should install this module - module_check $mod || return 1 + module_check $_mod || return 1 else # skip this module return 1 fi fi - for moddep in $(module_depends $mod); do + for _moddep in $(module_depends $_mod); do # handle deps as if they were manually added - strstr " $add_dracutmodules " " $moddep " || \ - add_dracutmodules+=" $moddep " + strstr " $add_dracutmodules " " $_moddep " || \ + add_dracutmodules+=" $_moddep " # if a module we depend on fail, fail also - check_module $moddep || return 1 + check_module $_moddep || return 1 done - strstr " $mods_to_load " " $mod " || \ - mods_to_load+=" $mod " + strstr " $mods_to_load " " $_mod " || \ + mods_to_load+=" $_mod " return 0 } check_module_dir() { - local modcheck; - local mod; + local _modcheck + local _mod + local _moddir mods_to_load="" - for moddir in "$dracutbasedir/modules.d"/[0-9][0-9]*; do - local mod=${moddir##*/}; mod=${mod#[0-9][0-9]} - check_module $mod 1 + for _moddir in "$dracutbasedir/modules.d"/[0-9][0-9]*; do + _mod=${_moddir##*/}; _mod=${_mod#[0-9][0-9]} + check_module $_mod 1 done # Report any missing dracut modules, the user has specified - modcheck=$add_dracutmodules - [[ $dracutmodules != all ]] && modcheck="$m $dracutmodules" - for mod in $modcheck; do - strstr "$mods_to_load" "$mod" && continue - strstr "$omit_dracutmodules" "$mod" && continue - derror "Dracut module \"$mod\" cannot be found." + _modcheck=$add_dracutmodules + [[ $dracutmodules != all ]] && _modcheck="$m $dracutmodules" + for _mod in $_modcheck; do + strstr "$mods_to_load" "$_mod" && continue + strstr "$omit_dracutmodules" "$_mod" && continue + derror "Dracut module \"$_mod\" cannot be found." done } # Install a single kernel module along with any firmware it may require. # $1 = full path to kernel module to install install_kmod_with_fw() { - local modname=${1##*/} fwdir found - modname=${modname%.ko*} + local _modname=${1##*/} _fwdir _found _fw + _modname=${_modname%.ko*} # no need to go further if the module is already installed [[ -e "${initdir}/lib/modules/$kernel/${1##*/lib/modules/$kernel/}" ]] \ && return 0 inst_simple "$1" "/lib/modules/$kernel/${1##*/lib/modules/$kernel/}" \ || return $? - for fw in $(modinfo -k $kernel -F firmware $1 2>/dev/null); do - found='' - for fwdir in $fw_dir; do - if [[ -d $fwdir && -f $fwdir/$fw ]]; then - inst_simple "$fwdir/$fw" "/lib/firmware/$fw" - found=yes + for _fw in $(modinfo -k $kernel -F firmware $1 2>/dev/null); do + _found='' + for _fwdir in $fw_dir; do + if [[ -d $_fwdir && -f $_fwdir/$_fw ]]; then + inst_simple "$_fwdir/$_fw" "/lib/firmware/$_fw" + _found=yes fi done - if [[ $found != yes ]]; then - if ! grep -qe "\<${modname//-/_}\>" /proc/modules; then - dinfo "Possible missing firmware \"${fw}\" for kernel module" \ - "\"${modname}.ko\"" + if [[ $_found != yes ]]; then + if ! grep -qe "\<${_modname//-/_}\>" /proc/modules; then + dinfo "Possible missing firmware \"${_fw}\" for kernel module" \ + "\"${_modname}.ko\"" else - dwarn "Possible missing firmware \"${fw}\" for kernel module" \ - "\"${modname}.ko\"" + dwarn "Possible missing firmware \"${_fw}\" for kernel module" \ + "\"${_modname}.ko\"" fi fi done @@ -698,16 +712,15 @@ install_kmod_with_fw() { # $2 = module to get dependencies for # rest of args = arguments to modprobe for_each_kmod_dep() { - local func=$1 kmod=$2 cmd modpapth options + local _func=$1 _kmod=$2 _cmd _modpath _options _found=0 shift 2 - modprobe "$@" --ignore-install --show-depends $kmod 2>/dev/null | ( - local found=0 - while read cmd modpath options; do - [[ $cmd = insmod ]] || continue - $func ${modpath} || exit $? - found=1 + modprobe "$@" --ignore-install --show-depends $_kmod 2>/dev/null | ( + while read _cmd _modpath _options; do + [[ $_cmd = insmod ]] || continue + $_func ${_modpath} || exit $? + _found=1 done - [[ $found -eq 0 ]] && exit 1 + [[ $_found -eq 0 ]] && exit 1 exit 0 ) return $? @@ -722,19 +735,20 @@ for_each_kmod_dep() { # If it is not, we will look at all kernel modules # This function returns the full filenames of modules that match $1 filter_kernel_modules () ( + local _modname _filtercmd if ! [[ $hostonly ]]; then - filtercmd='find "$srcmods/kernel/drivers" "$srcmods/extra"' - filtercmd+=' "$srcmods/weak-updates" -name "*.ko" -o -name "*.ko.gz"' - filtercmd+=' 2>/dev/null' + _filtercmd='find "$srcmods/kernel/drivers" "$srcmods/extra"' + _filtercmd+=' "$srcmods/weak-updates" -name "*.ko" -o -name "*.ko.gz"' + _filtercmd+=' 2>/dev/null' else - filtercmd='cut -d " " -f 1 $initdir/$$.ko - $1 $initdir/$$.ko && echo "$modname" + for _modname in $(eval $_filtercmd); do + case $_modname in + *.ko) "$1" "$_modname" && echo "$_modname";; + *.ko.gz) gzip -dc "$_modname" > $initdir/$$.ko + $1 $initdir/$$.ko && echo "$_modname" rm -f $initdir/$$.ko ;; esac @@ -744,52 +758,52 @@ filter_kernel_modules () ( # install kernel modules along with all their dependencies. instmods() { [[ $no_kernel = yes ]] && return - local mod mpargs modpath modname cmd moddirname - local ret=0 + local _mod _mpargs _moddirname + local _ret=0 while (($# > 0)); do - mod=${1%.ko*} - case $mod in + _mod=${1%.ko*} + case $_mod in =*) # This introduces 2 incompatible meanings for =* arguments # to instmods. We need to decide which one to keep. - if [[ $mod = =ata && -f $srcmods/modules.block ]]; then - instmods $mpargs \ + if [[ $_mod = =ata && -f $srcmods/modules.block ]]; then + instmods $_mpargs \ $(egrep 'ata|ahci' "${srcmods}/modules.block") - elif [ -f $srcmods/modules.${mod#=} ]; then - instmods $mpargs $(cat ${srcmods}/modules.${mod#=} ) + elif [ -f $srcmods/modules.${_mod#=} ]; then + instmods $_mpargs $(cat ${srcmods}/modules.${_mod#=} ) else - instmods $mpargs $(find "$srcmods" -path "*/${mod#=}/*") + instmods $_mpargs $(find "$srcmods" -path "*/${_mod#=}/*") fi ;; --*) - mod=${mod##*/} - mpargs+=" $mod";; + _mod=${_mod##*/} + _mpargs+=" $_mod";; i2o_scsi) shift; continue;; # Do not load this diagnostic-only module - *) mod=${mod##*/} + *) _mod=${_mod##*/} # if we are already installed, skip this module and go on # to the next one. [[ -f $initdir/$1 ]] && { shift; continue; } # If we are building a host-specific initramfs and this # module is not already loaded, move on to the next one. - [[ $hostonly ]] && ! grep -qe "\<${mod//-/_}\>" /proc/modules \ - && ! echo $add_drivers | grep -qe "\<${mod}\>" && { + [[ $hostonly ]] && ! grep -qe "\<${_mod//-/_}\>" /proc/modules \ + && ! echo $add_drivers | grep -qe "\<${_mod}\>" && { shift; continue } # We use '-d' option in modprobe only if modules prefix path # differs from default '/'. This allows us to use Dracut with # old version of modprobe which doesn't have '-d' option. - moddirname=${srcmods%%/lib/modules/*} - [[ -n ${moddirname} ]] && moddirname="-d ${moddirname}/" + _moddirname=${srcmods%%/lib/modules/*} + [[ -n ${_moddirname} ]] && _moddirname="-d ${_moddirname}/" # ok, load the module, all its dependencies, and any firmware # it may require - for_each_kmod_dep install_kmod_with_fw $mod \ - --set-version $kernel ${moddirname} - ((ret+=$?)) + for_each_kmod_dep install_kmod_with_fw $_mod \ + --set-version $kernel ${_moddirname} + ((_ret+=$?)) ;; esac shift done - return $ret + return $_ret } diff --git a/modules.d/01fips/module-setup.sh b/modules.d/01fips/module-setup.sh index f038c73a..b0b498ac 100755 --- a/modules.d/01fips/module-setup.sh +++ b/modules.d/01fips/module-setup.sh @@ -11,31 +11,33 @@ depends() { } installkernel() { - FIPSMODULES="aead aes_generici aes-xts aes-x86_64 ansi_cprng cbc ccm chainiv ctr" - FIPSMODULES="$FIPSMODULES des deflate ecb eseqiv hmac seqiv sha256 sha512" - FIPSMODULES="$FIPSMODULES cryptomgr crypto_null tcrypt" + local _fipsmodules _mod + _fipsmodules="aead aes_generici aes-xts aes-x86_64 ansi_cprng cbc ccm chainiv ctr" + _fipsmodules+=" des deflate ecb eseqiv hmac seqiv sha256 sha512" + _fipsmodules+=" cryptomgr crypto_null tcrypt" mkdir -m 0755 -p "${initdir}/etc/modprobe.d" - for mod in $FIPSMODULES; do - if instmods $mod; then - echo $mod >> "${initdir}/etc/fipsmodules" - echo "blacklist $mod" >> "${initdir}/etc/modprobe.d/fips.conf" + for _mod in $_fipsmodules; do + if instmods $_mod; then + echo $_mod >> "${initdir}/etc/fipsmodules" + echo "blacklist $_mod" >> "${initdir}/etc/modprobe.d/fips.conf" fi done } install() { + local _dir inst_hook pre-trigger 01 "$moddir/fips-boot.sh" inst_hook pre-pivot 01 "$moddir/fips-noboot.sh" inst "$moddir/fips.sh" /sbin/fips.sh dracut_install sha512hmac rmmod insmod mount uname umount - for dir in "$usrlibdir" "$libdir"; do - [[ -e $dir/libsoftokn3.so ]] && \ - dracut_install $dir/libsoftokn3.so $dir/libsoftokn3.chk \ - $dir/libfreebl3.so $dir/libfreebl3.chk && \ + for _dir in "$usrlibdir" "$libdir"; do + [[ -e $_dir/libsoftokn3.so ]] && \ + dracut_install $_dir/libsoftokn3.so $_dir/libsoftokn3.chk \ + $_dir/libfreebl3.so $_dir/libfreebl3.chk && \ break done diff --git a/modules.d/05busybox/module-setup.sh b/modules.d/05busybox/module-setup.sh index c64ac4a3..10afc98b 100755 --- a/modules.d/05busybox/module-setup.sh +++ b/modules.d/05busybox/module-setup.sh @@ -13,21 +13,22 @@ depends() { } install() { + local _i _progs _path inst busybox /sbin/busybox # List of shell programs that we use in other official dracut modules, that # must be supported by the busybox installed on the host system - progs="echo grep usleep [ rmmod insmod mount uname umount setfont kbd_mode stty gzip bzip2 chvt readlink blkid dd losetup tr sed seq ps more cat rm free ping netstat vi ping6 fsck ip hostname basename mknod mkdir pidof sleep chroot ls cp mv dmesg mkfifo less ln modprobe" + _progs="echo grep usleep [ rmmod insmod mount uname umount setfont kbd_mode stty gzip bzip2 chvt readlink blkid dd losetup tr sed seq ps more cat rm free ping netstat vi ping6 fsck ip hostname basename mknod mkdir pidof sleep chroot ls cp mv dmesg mkfifo less ln modprobe" # FIXME: switch_root should be in the above list, but busybox version hangs # (using busybox-1.15.1-7.fc14.i686 at the time of writing) - for i in $progs; do - path=$(find_binary "$i") - if [[ $path != ${path#/usr} ]]; then - ln -s ../../sbin/busybox "$initdir/$path" + for _i in $_progs; do + _path=$(find_binary "$_i") + if [[ $_path != ${_path#/usr} ]]; then + ln -s ../../sbin/busybox "$initdir/$_path" else - ln -s ../sbin/busybox "$initdir/$path" + ln -s ../sbin/busybox "$initdir/$_path" fi done diff --git a/modules.d/10rpmversion/module-setup.sh b/modules.d/10rpmversion/module-setup.sh index 2b32e275..676775f9 100755 --- a/modules.d/10rpmversion/module-setup.sh +++ b/modules.d/10rpmversion/module-setup.sh @@ -11,14 +11,16 @@ depends() { } install() { + local _line + local _dracut_rpm_version if [ -e "$moddir/dracut-version" ]; then - dracut_rpm_version=$(cat "$moddir/dracut-version") - inst "$moddir/dracut-version" /lib/dracut/$dracut_rpm_version + _dracut_rpm_version=$(cat "$moddir/dracut-version") + inst "$moddir/dracut-version" /lib/dracut/$_dracut_rpm_version else if rpm -qf $(type -P $0) &>/dev/null; then - dracut_rpm_version=$(rpm -qf --qf '%{name}-%{version}-%{release}\n' $(type -P $0) | { ver="";while read line;do ver=$line;done;echo $ver;} ) + _dracut_rpm_version=$(rpm -qf --qf '%{name}-%{version}-%{release}\n' $(type -P $0) | { ver="";while read _line;do ver=$_line;done;echo $ver;} ) mkdir -m 0755 -p $initdir/lib/dracut - echo $dracut_rpm_version > $initdir/lib/dracut/$dracut_rpm_version + echo $_dracut_rpm_version > $initdir/lib/dracut/$_dracut_rpm_version fi fi inst_hook cmdline 01 "$moddir/version.sh" diff --git a/modules.d/40network/module-setup.sh b/modules.d/40network/module-setup.sh index d75114f8..33135404 100755 --- a/modules.d/40network/module-setup.sh +++ b/modules.d/40network/module-setup.sh @@ -3,11 +3,12 @@ # ex: ts=8 sw=4 sts=4 et filetype=sh check() { + local _program . $dracutfunctions - for program in ip arping dhclient ; do - if ! type -P $program >/dev/null; then - derror "Could not find program \"$program\" required by network." + for _program in ip arping dhclient ; do + if ! type -P $_program >/dev/null; then + derror "Could not find program \"$_program\" required by network." return 1 fi done @@ -24,11 +25,11 @@ installkernel() { # Include wired net drivers, excluding wireless net_module_test() { - local net_drivers='eth_type_trans|register_virtio_device' - local unwanted_drivers='/(wireless|isdn|uwb)/' - egrep -q $net_drivers "$1" && \ + local _net_drivers='eth_type_trans|register_virtio_device' + local _unwanted_drivers='/(wireless|isdn|uwb)/' + egrep -q $_net_drivers "$1" && \ egrep -qv 'iw_handler_get_spy' "$1" && \ - [[ ! $1 =~ $unwanted_drivers ]] + [[ ! $1 =~ $_unwanted_drivers ]] } instmods $(filter_kernel_modules net_module_test) @@ -42,6 +43,7 @@ installkernel() { } install() { + local _arch _i _dir dracut_install ip arping tr dhclient dracut_install -o brctl ifenslave inst "$moddir/ifup" "/sbin/ifup" @@ -57,12 +59,12 @@ install() { inst_hook cmdline 99 "$moddir/parse-ifname.sh" inst_hook pre-pivot 10 "$moddir/kill-dhclient.sh" - arch=$(uname -m) + _arch=$(uname -m) - for dir in "$usrlibdir/tls/$arch" "$usrlibdir/tls" "$usrlibdir/$arch" \ + for _dir in "$usrlibdir/tls/$_arch" "$usrlibdir/tls" "$usrlibdir/$_arch" \ "$usrlibdir" "$libdir"; do - for i in "$dir"/libnss_dns.so.* "$dir"/libnss_mdns4_minimal.so.*; do - [ -e "$i" ] && dracut_install "$i" + for _i in "$_dir"/libnss_dns.so.* "$_dir"/libnss_mdns4_minimal.so.*; do + [ -e "$_i" ] && dracut_install "$_i" done done diff --git a/modules.d/50gensplash/module-setup.sh b/modules.d/50gensplash/module-setup.sh index eea063b9..29b93cde 100755 --- a/modules.d/50gensplash/module-setup.sh +++ b/modules.d/50gensplash/module-setup.sh @@ -13,55 +13,57 @@ depends() { } install() { + local _opts + local _splash_theme + local _splash_res + call_splash_geninitramfs() { - local out ret + local _out _ret - out=$(splash_geninitramfs -c "$1" ${@:2} 2>&1) - ret=$? + _out=$(splash_geninitramfs -c "$1" ${@:2} 2>&1) + _ret=$? - if [[ ${out} ]]; then + if [[ ${_out} ]]; then local IFS=' ' - for line in ${out}; do + for line in ${_out}; do if [[ ${line} =~ ^Warning ]]; then dwarn "${line}" else derror "${line}" - (( ret == 0 )) && ret=1 + (( $_ret == 0 )) && _ret=1 fi done fi - return ${ret} + return ${_ret} } - type -P splash_geninitramfs >/dev/null || return 1 - opts='' - + _opts='' if [[ ${DRACUT_GENSPLASH_THEME} ]]; then # Variables from the environment # They're supposed to be set up by e.g. Genkernel in basis of cmdline args. # If user set them he/she would expect to be included only given theme # rather then all even if we're building generic initramfs. - SPLASH_THEME=${DRACUT_GENSPLASH_THEME} - SPLASH_RES=${DRACUT_GENSPLASH_RES} + _splash_theme=${DRACUT_GENSPLASH_THEME} + _splash_res=${DRACUT_GENSPLASH_RES} elif [[ ${hostonly} ]]; then # Settings from config only in hostonly [[ -e /etc/conf.d/splash ]] && source /etc/conf.d/splash - [[ ! ${SPLASH_THEME} ]] && SPLASH_THEME=default - [[ ${SPLASH_RES} ]] && opts+=" -r ${SPLASH_RES}" + [[ ! ${_splash_theme} ]] && _splash_theme=default + [[ ${_splash_res} ]] && _opts+=" -r ${_splash_res}" else # generic - SPLASH_THEME=--all + _splash_theme=--all fi - dinfo "Installing Gentoo Splash (using the ${SPLASH_THEME} theme)" + dinfo "Installing Gentoo Splash (using the ${_splash_theme} theme)" pushd "${initdir}" >/dev/null mv dev dev.old - call_splash_geninitramfs "${initdir}" ${opts} ${SPLASH_THEME} || { + call_splash_geninitramfs "${initdir}" ${_opts} ${_splash_theme} || { derror "Could not build splash" return 1 } diff --git a/modules.d/50plymouth/module-setup.sh b/modules.d/50plymouth/module-setup.sh index 9a62617f..338371f9 100755 --- a/modules.d/50plymouth/module-setup.sh +++ b/modules.d/50plymouth/module-setup.sh @@ -11,9 +11,10 @@ depends() { } installkernel() { + local _modname # Include KMS capable drm drivers - for modname in $(find "$srcmods/kernel/drivers/gpu/drm" "$srcmods/extra" -name '*.ko' 2>/dev/null); do - grep -q drm_crtc_init $modname && instmods $modname + for _modname in $(find "$srcmods/kernel/drivers/gpu/drm" "$srcmods/extra" -name '*.ko' 2>/dev/null); do + grep -q drm_crtc_init $_modname && instmods $_modname done } diff --git a/modules.d/60xen/module-setup.sh b/modules.d/60xen/module-setup.sh index 52b20508..75309bec 100755 --- a/modules.d/60xen/module-setup.sh +++ b/modules.d/60xen/module-setup.sh @@ -23,11 +23,12 @@ depends() { } installkernel() { - for i in \ + local _i + for _i in \ xenbus_probe_frontend xen-pcifront \ xen-fbfront xen-kbdfront xen-blkfront xen-netfront \ ; do - modinfo -k $kernel $i >/dev/null 2>&1 && instmods $i + modinfo -k $kernel $_i >/dev/null 2>&1 && instmods $_i done } diff --git a/modules.d/90btrfs/module-setup.sh b/modules.d/90btrfs/module-setup.sh index 765d9609..c5ea6bf0 100755 --- a/modules.d/90btrfs/module-setup.sh +++ b/modules.d/90btrfs/module-setup.sh @@ -3,6 +3,7 @@ # ex: ts=8 sw=4 sts=4 et filetype=sh check() { + local _rootdev # if we don't have btrfs installed on the host system, # no point in trying to support it in the initramfs. type -P btrfs >/dev/null || return 1 @@ -13,9 +14,9 @@ check() { is_btrfs() { get_fs_type /dev/block/$1 | grep -q btrfs; } if [[ $hostonly ]]; then - rootdev=$(find_root_block_device) - if [[ $rootdev ]]; then - is_btrfs "$rootdev" || return 1 + _rootdev=$(find_root_block_device) + if [[ $_rootdev ]]; then + is_btrfs "$_rootdev" || return 1 fi fi diff --git a/modules.d/90crypt/module-setup.sh b/modules.d/90crypt/module-setup.sh index c07aa6ab..3eac9bb1 100755 --- a/modules.d/90crypt/module-setup.sh +++ b/modules.d/90crypt/module-setup.sh @@ -3,6 +3,7 @@ # ex: ts=8 sw=4 sts=4 et filetype=sh check() { + local _rootdev # if cryptsetup is not installed, then we cannot support encrypted devices. type -P cryptsetup >/dev/null || return 1 @@ -11,11 +12,11 @@ check() { is_crypt() { [[ $(get_fs_type /dev/block/$1) = crypto_LUKS ]]; } [[ $hostonly ]] && { - rootdev=$(find_root_block_device) - if [[ $rootdev ]]; then + _rootdev=$(find_root_block_device) + if [[ $_rootdev ]]; then # root lives on a block device, so we can be more precise about # hostonly checking - check_block_and_slaves is_crypt "$rootdev" || return 1 + check_block_and_slaves is_crypt "$_rootdev" || return 1 else # root is not on a block device, use the shotgun approach blkid | grep -q crypto\?_LUKS || return 1 diff --git a/modules.d/90dmraid/module-setup.sh b/modules.d/90dmraid/module-setup.sh index bf41e9aa..fa208802 100755 --- a/modules.d/90dmraid/module-setup.sh +++ b/modules.d/90dmraid/module-setup.sh @@ -3,6 +3,7 @@ # ex: ts=8 sw=4 sts=4 et filetype=sh check() { + local _rootdev # if we don't have dmraid installed on the host system, no point # in trying to support it in the initramfs. type -P dmraid >/dev/null || return 1 @@ -14,11 +15,11 @@ check() { grep -q _raid_member; } [[ $hostonly ]] && { - rootdev=$(find_root_block_device) - if [[ $rootdev ]]; then + _rootdev=$(find_root_block_device) + if [[ $_rootdev ]]; then # root lives on a block device, so we can be more precise about # hostonly checking - check_block_and_slaves is_dmraid "$rootdev" || return 1 + check_block_and_slaves is_dmraid "$_rootdev" || return 1 else # root is not on a block device, use the shotgun approach dmraid -r | grep -q ok || return 1 @@ -34,12 +35,13 @@ depends() { } install() { + local _i dracut_install dmraid partx kpartx inst dmeventd - for i in {"$libdir","$usrlibdir"}/libdmraid-events*.so; do - [ -e "$i" ] && dracut_install "$i" + for _i in {"$libdir","$usrlibdir"}/libdmraid-events*.so; do + [ -e "$_i" ] && dracut_install "$_i" done inst_rules 10-dm.rules 13-dm-disk.rules 95-dm-notify.rules diff --git a/modules.d/90kernel-modules/module-setup.sh b/modules.d/90kernel-modules/module-setup.sh index 90ff5b53..1cbce250 100755 --- a/modules.d/90kernel-modules/module-setup.sh +++ b/modules.d/90kernel-modules/module-setup.sh @@ -42,6 +42,7 @@ installkernel() { } install() { + local _f [ -f /etc/modprobe.conf ] && dracut_install /etc/modprobe.conf dracut_install $(find /etc/modprobe.d/ -type f -name '*.conf') inst_hook cmdline 01 "$moddir/parse-kernel.sh" @@ -49,8 +50,8 @@ install() { local f - for f in modules.builtin.bin modules.builtin; do - [[ $srcmods/$f ]] && inst "$srcmods/$f" "/lib/modules/$kernel/$f" \ + for _f in modules.builtin.bin modules.builtin; do + [[ $srcmods/$_f ]] && inst "$srcmods/$_f" "/lib/modules/$kernel/$_f" \ && break done || { dfatal "No modules.builtin.bin and modules.builtin found!" diff --git a/modules.d/90lvm/module-setup.sh b/modules.d/90lvm/module-setup.sh index 6e582bdd..c35d6732 100755 --- a/modules.d/90lvm/module-setup.sh +++ b/modules.d/90lvm/module-setup.sh @@ -3,6 +3,7 @@ # ex: ts=8 sw=4 sts=4 et filetype=sh check() { + local _rootdev # No point trying to support lvm if the binaries are missing type -P lvm >/dev/null || return 1 @@ -12,11 +13,11 @@ check() { is_lvm() { [[ $(get_fs_type /dev/block/$1) = LVM2_member ]]; } [[ $hostonly ]] && { - rootdev=$(find_root_block_device) - if [[ $rootdev ]]; then + _rootdev=$(find_root_block_device) + if [[ $_rootdev ]]; then # root lives on a block device, so we can be more precise about # hostonly checking - check_block_and_slaves is_lvm "$rootdev" || return 1 + check_block_and_slaves is_lvm "$_rootdev" || return 1 else # root is not on a block device, use the shotgun approach blkid | grep -q LVM2_member || return 1 @@ -33,6 +34,7 @@ depends() { } install() { + local _i inst lvm inst_rules "$moddir/64-lvm.rules" @@ -54,8 +56,8 @@ install() { inst "$moddir/lvm_scan.sh" /sbin/lvm_scan inst_hook cmdline 30 "$moddir/parse-lvm.sh" - for i in {"$libdir","$usrlibdir"}/libdevmapper-event-lvm*.so; do - [ -e "$i" ] && dracut_install "$i" + for _i in {"$libdir","$usrlibdir"}/libdevmapper-event-lvm*.so; do + [ -e "$_i" ] && dracut_install "$_i" done } diff --git a/modules.d/90mdraid/module-setup.sh b/modules.d/90mdraid/module-setup.sh index d3595c5b..5f447774 100755 --- a/modules.d/90mdraid/module-setup.sh +++ b/modules.d/90mdraid/module-setup.sh @@ -3,6 +3,7 @@ # ex: ts=8 sw=4 sts=4 et filetype=sh check() { + local _rootdev # No mdadm? No mdraid support. type -P mdadm >/dev/null || return 1 @@ -12,11 +13,11 @@ check() { is_mdraid() { [[ -d "/sys/dev/block/$1/md" ]]; } [[ $hostonly ]] && { - rootdev=$(find_root_block_device) - if [[ $rootdev ]]; then + _rootdev=$(find_root_block_device) + if [[ $_rootdev ]]; then # root lives on a block device, so we can be more precise about # hostonly checking - check_block_and_slaves is_mdraid "$rootdev" || return 1 + check_block_and_slaves is_mdraid "$_rootdev" || return 1 else # root is not on a block device, use the shotgun approach blkid | egrep -q '(linux|isw)_raid' || return 1 diff --git a/modules.d/90multipath/module-setup.sh b/modules.d/90multipath/module-setup.sh index f78517ca..285218b3 100755 --- a/modules.d/90multipath/module-setup.sh +++ b/modules.d/90multipath/module-setup.sh @@ -3,6 +3,7 @@ # ex: ts=8 sw=4 sts=4 et filetype=sh check() { + local _rootdev # if there's no multipath binary, no go. type -P multipath >/dev/null || return 1 @@ -16,9 +17,9 @@ check() { } if [[ $hostonly ]]; then - rootdev=$(find_root_block_device) - if [[ $rootdev ]]; then - check_block_and_slaves is_mpath "$rootdev" && return 0 + _rootdev=$(find_root_block_device) + if [[ $_rootdev ]]; then + check_block_and_slaves is_mpath "$_rootdev" && return 0 fi return 1 fi @@ -41,7 +42,8 @@ installkernel() { } install() { - for f in \ + local _f + for _f in \ /sbin/dmsetup \ /sbin/kpartx \ /sbin/mpath_wait \ @@ -53,7 +55,7 @@ install() { /etc/multipath.conf \ /etc/multipath/* \ "$libdir"/libmultipath* "$libdir"/multipath/*; do - [ -e "$f" ] && inst "$f" + [ -e "$_f" ] && inst "$_f" done inst_hook pre-trigger 02 "$moddir/multipathd.sh" diff --git a/modules.d/95dasd/module-setup.sh b/modules.d/95dasd/module-setup.sh index 0cfb7b94..88dfc6d5 100755 --- a/modules.d/95dasd/module-setup.sh +++ b/modules.d/95dasd/module-setup.sh @@ -3,8 +3,8 @@ # ex: ts=8 sw=4 sts=4 et filetype=sh check() { - arch=$(uname -m) - [ "$arch" = "s390" -o "$arch" = "s390x" ] || return 1 + local _arch=$(uname -m) + [ "$_arch" = "s390" -o "$_arch" = "s390x" ] || return 1 return 0 } diff --git a/modules.d/95dasd_mod/module-setup.sh b/modules.d/95dasd_mod/module-setup.sh index f6f79d7d..2c98fff3 100755 --- a/modules.d/95dasd_mod/module-setup.sh +++ b/modules.d/95dasd_mod/module-setup.sh @@ -3,8 +3,8 @@ # ex: ts=8 sw=4 sts=4 et filetype=sh check() { - arch=$(uname -m) - [ "$arch" = "s390" -o "$arch" = "s390x" ] || return 1 + local _arch=$(uname -m) + [ "$_arch" = "s390" -o "$_arch" = "s390x" ] || return 1 return 0 } diff --git a/modules.d/95iscsi/module-setup.sh b/modules.d/95iscsi/module-setup.sh index 5f02840a..b25d422c 100755 --- a/modules.d/95iscsi/module-setup.sh +++ b/modules.d/95iscsi/module-setup.sh @@ -3,6 +3,7 @@ # ex: ts=8 sw=4 sts=4 et filetype=sh check() { + local _rootdev # If our prerequisites are not met, fail anyways. type -P iscsistart hostname iscsi-iname >/dev/null || return 1 @@ -23,11 +24,11 @@ check() { ) [[ $hostonly ]] && { - rootdev=$(find_root_block_device) - if [[ $rootdev ]]; then + _rootdev=$(find_root_block_device) + if [[ $_rootdev ]]; then # root lives on a block device, so we can be more precise about # hostonly checking - check_block_and_slaves is_iscsi "$rootdev" || return 1 + check_block_and_slaves is_iscsi "$_rootdev" || return 1 else return 1 fi @@ -42,8 +43,8 @@ depends() { installkernel() { instmods iscsi_tcp iscsi_ibft crc32c iscsi_module_test() { - local iscsifuncs='iscsi_register_transport' - fgrep -q "$iscsifuncs" "$1" + local _iscsifuncs='iscsi_register_transport' + fgrep -q "$_iscsifuncs" "$1" } instmods $(filter_kernel_modules iscsi_module_test) } diff --git a/modules.d/95nbd/module-setup.sh b/modules.d/95nbd/module-setup.sh index c724b76f..793687d2 100755 --- a/modules.d/95nbd/module-setup.sh +++ b/modules.d/95nbd/module-setup.sh @@ -3,6 +3,7 @@ # ex: ts=8 sw=4 sts=4 et filetype=sh check() { + local _rootdev # If our prerequisites are not met, fail. type -P nbd-client >/dev/null || return 1 @@ -12,9 +13,9 @@ check() { is_nbd() { [[ -b /dev/block/$1 && $1 == 43:* ]] ;} . $dracutfunctions - rootdev=$(find_root_block_device) - [[ -b /dev/block/$rootdev ]] || return 1 - check_block_and_slaves is_nbd "$rootdev" || return 1 + _rootdev=$(find_root_block_device) + [[ -b /dev/block/$_rootdev ]] || return 1 + check_block_and_slaves is_nbd "$_rootdev" || return 1 } return 0 diff --git a/modules.d/95nfs/module-setup.sh b/modules.d/95nfs/module-setup.sh index d61e149b..72650fd2 100755 --- a/modules.d/95nfs/module-setup.sh +++ b/modules.d/95nfs/module-setup.sh @@ -23,6 +23,8 @@ installkernel() { } install() { + local _i + local _nsslibs type -P portmap >/dev/null && dracut_install portmap type -P rpcbind >/dev/null && dracut_install rpcbind @@ -33,18 +35,18 @@ install() { dracut_install rpc.idmapd /etc/idmapd.conf dracut_install sed - for i in {"$libdir","$usrlibdir"}/libnfsidmap_nsswitch.so* \ + for _i in {"$libdir","$usrlibdir"}/libnfsidmap_nsswitch.so* \ {"$libdir","$usrlibdir"}/libnfsidmap/*.so \ {"$libdir","$usrlibdir"}/libnfsidmap*.so*; do - [ -e "$i" ] && dracut_install "$i" + [ -e "$_i" ] && dracut_install "$_i" done - nsslibs=$(sed -e '/^#/d' -e 's/^.*://' -e 's/\[NOTFOUND=return\]//' /etc/nsswitch.conf \ + _nsslibs=$(sed -e '/^#/d' -e 's/^.*://' -e 's/\[NOTFOUND=return\]//' /etc/nsswitch.conf \ | tr -s '[:space:]' '\n' | sort -u | tr -s '[:space:]' '|') - nsslibs=${nsslibs#|} - nsslibs=${nsslibs%|} + _nsslibs=${_nsslibs#|} + _nsslibs=${_nsslibs%|} - dracut_install $(for i in $(ls {/usr,}$libdir/libnss*.so 2>/dev/null); do echo $i;done | egrep "$nsslibs") + dracut_install $(for _i in $(ls {/usr,}$libdir/libnss*.so 2>/dev/null); do echo $_i;done | egrep "$_nsslibs") inst_hook cmdline 90 "$moddir/parse-nfsroot.sh" inst_hook pre-pivot 99 "$moddir/nfsroot-cleanup.sh" diff --git a/modules.d/95resume/module-setup.sh b/modules.d/95resume/module-setup.sh index 1fe55a7f..e7d23dea 100755 --- a/modules.d/95resume/module-setup.sh +++ b/modules.d/95resume/module-setup.sh @@ -3,11 +3,12 @@ # ex: ts=8 sw=4 sts=4 et filetype=sh install() { + local _bin # Optional uswsusp support - for bin in /usr/sbin/resume /usr/lib/suspend/resume + for _bin in /usr/sbin/resume /usr/lib/suspend/resume do - [[ -x "${bin}" ]] && { - inst "${bin}" /usr/sbin/resume + [[ -x "${_bin}" ]] && { + inst "${_bin}" /usr/sbin/resume [[ -f /etc/suspend.conf ]] && inst /etc/suspend.conf break } diff --git a/modules.d/95terminfo/module-setup.sh b/modules.d/95terminfo/module-setup.sh index f8b77011..41a5ba3d 100755 --- a/modules.d/95terminfo/module-setup.sh +++ b/modules.d/95terminfo/module-setup.sh @@ -3,12 +3,13 @@ # ex: ts=8 sw=4 sts=4 et filetype=sh install() { + local _terminfodir # terminfo bits make things work better if you fall into interactive mode - for TERMINFODIR in /lib/terminfo /etc/terminfo /usr/share/terminfo; do - [ -d ${TERMINFODIR} ] && break + for _terminfodir in /lib/terminfo /etc/terminfo /usr/share/terminfo; do + [ -d ${_terminfodir} ] && break done - [ -d ${TERMINFODIR} ] && \ - dracut_install $(find ${TERMINFODIR} -type f) + [ -d ${_terminfodir} ] && \ + dracut_install $(find ${_terminfodir} -type f) } diff --git a/modules.d/95udev-rules/module-setup.sh b/modules.d/95udev-rules/module-setup.sh index 834df636..c2ec2327 100755 --- a/modules.d/95udev-rules/module-setup.sh +++ b/modules.d/95udev-rules/module-setup.sh @@ -3,6 +3,7 @@ # ex: ts=8 sw=4 sts=4 et filetype=sh install() { + local _i # 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 @@ -33,7 +34,7 @@ install() { fi inst_rules "$moddir/61-persistent-storage.rules" - for i in \ + for _i in \ ata_id \ cdrom_id \ create_floppy_devices \ @@ -51,14 +52,14 @@ install() { pcmcia-socket-startup \ pcmcia-check-broken-cis \ ; do - [ -e /lib/udev/$i ] && dracut_install /lib/udev/$i + [ -e /lib/udev/$_i ] && dracut_install /lib/udev/$_i done [ -f /etc/arch-release ] && \ inst "$moddir/load-modules.sh" /lib/udev/load-modules.sh - for i in {"$libdir","$usrlibdir"}/libnss_files*; do - [ -e "$i" ] && dracut_install "$i" + for _i in {"$libdir","$usrlibdir"}/libnss_files*; do + [ -e "$_i" ] && dracut_install "$_i" done } diff --git a/modules.d/98syslog/module-setup.sh b/modules.d/98syslog/module-setup.sh index 2fbef168..d316dcb4 100755 --- a/modules.d/98syslog/module-setup.sh +++ b/modules.d/98syslog/module-setup.sh @@ -12,24 +12,26 @@ depends() { } install() { + local _i + local _installs if type -P rsyslogd >/dev/null; then - installs="rsyslogd" - for i in {"$libdir","$usrlibdir"}/rsyslog/lmnet.so \ + _installs="rsyslogd" + for _i in {"$libdir","$usrlibdir"}/rsyslog/lmnet.so \ {"$libdir","$usrlibdir"}/rsyslog/imklog.so \ {"$libdir","$usrlibdir"}/rsyslog/imuxsock.so ; do - [ -e "$i" ] && installs="$installs $i" + [ -e "$_i" ] && _installs="$_installs $_i" done elif type -P syslogd >/dev/null; then - installs="syslogd" + _installs="syslogd" elif type -P syslog-ng >/dev/null; then - installs="syslog-ng" + _installs="syslog-ng" else derror "Could not find any syslog binary although the syslogmodule" \ "is selected to be installed. Please check." fi - if [ -n "$installs" ]; then + if [ -n "$_installs" ]; then dracut_install cat - dracut_install $installs + dracut_install $_installs inst_hook cmdline 90 "$moddir/parse-syslog-opts.sh" inst_hook pre-udev 61 "$moddir/syslog-genrules.sh" inst_hook pre-pivot 99 "$moddir/syslog-cleanup.sh" diff --git a/modules.d/99base/module-setup.sh b/modules.d/99base/module-setup.sh index 0a804d5f..53f152f1 100755 --- a/modules.d/99base/module-setup.sh +++ b/modules.d/99base/module-setup.sh @@ -12,6 +12,7 @@ depends() { } install() { + local _d dracut_install mount mknod mkdir modprobe pidof sleep chroot \ sed ls flock cp mv dmesg rm ln rmmod mkfifo umount dracut_install -o less @@ -27,9 +28,9 @@ install() { mkdir -m 0755 -p ${initdir}/lib mkdir -m 0755 -p ${initdir}/lib/dracut mkdir -m 0755 -p ${initdir}/lib/dracut/hooks - for d in $hookdirs emergency \ + for _d in $hookdirs emergency \ initqueue initqueue/finished initqueue/settled; do - mkdir -m 0755 -p ${initdir}/lib/dracut/hooks/$d + mkdir -m 0755 -p ${initdir}/lib/dracut/hooks/$_d done mkdir -p ${initdir}/tmp