Browse Source

Add dracutmodules=auto functionality

To use this, your module needs to supply a check script which returns 0
if the module is applicable to this system, 1 otherwise.

If a module does not include a check script, it will be sourced. If no modules
have check scripts, then dracutmodules=auto behaves exactly like
dracutmodules=all
master
Victor Lowther 16 years ago
parent
commit
8d02da427b
  1. 19
      dracut

19
dracut

@ -50,14 +50,23 @@ for d in bin sbin usr/bin usr/sbin usr/lib etc proc sys sysroot dev/pts; do
mkdir -p "$initdir/$d"; mkdir -p "$initdir/$d";
done done


can_source_module() {
# $1 = location of module
mod=${1##*/}; mod=${mod#[0-9][0-9]};
case $dracutmodules in
all) return 0;;
auto) [[ -x $1/check ]] || return 0
"$1/check" >/dev/null 2>&1 && return 0 ;;
*) strstr "$dracutmodules" "$mod" && return 0;;
esac
return 1
}

# source all our modules # source all our modules
for moddir in "$dsrc/modules.d"/*; do for moddir in "$dsrc/modules.d"/*; do
[[ -d $moddir || -L $moddir ]] || continue [[ -d $moddir || -L $moddir ]] || continue
mod=${moddir##*/}; mod=${mod#[0-9][0-9]}; can_source_module "$moddir" || continue
if [[ $dracutmodules = all ]] || strstr "$dracutmodules " "$mod "; then [[ -x $moddir/install ]] && . "$moddir/install"
echo "== Module $moddir == "
[[ -x $moddir/install ]] && . "$moddir/install"
fi
done done
unset moddir unset moddir



Loading…
Cancel
Save