You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
93 lines
2.0 KiB
Bash
93 lines
2.0 KiB
Bash
#!/bin/sh -e
|
|
### BEGIN INIT INFO
|
|
# Provides: kmod
|
|
# Required-Start:
|
|
# Required-Stop:
|
|
# Should-Start: checkroot
|
|
# Should-Stop:
|
|
# Default-Start: S
|
|
# Default-Stop:
|
|
# Short-Description: Load the modules listed in /etc/modules.
|
|
# Description: Load the modules listed in /etc/modules.
|
|
### END INIT INFO
|
|
|
|
# Silently exit if the kernel does not support modules.
|
|
[ -f /proc/modules ] || exit 0
|
|
[ -x /sbin/modprobe ] || exit 0
|
|
|
|
[ -f /etc/default/rcS ] && . /etc/default/rcS
|
|
. /lib/lsb/init-functions
|
|
|
|
PATH='/sbin:/bin'
|
|
|
|
case "$1" in
|
|
start)
|
|
;;
|
|
|
|
stop|restart|reload|force-reload)
|
|
log_warning_msg "Action '$1' is meaningless for this init script"
|
|
exit 0
|
|
;;
|
|
|
|
*)
|
|
log_success_msg "Usage: $0 start"
|
|
exit 1
|
|
esac
|
|
|
|
load_module() {
|
|
local module args
|
|
module="$1"
|
|
args="$2"
|
|
|
|
if [ "$VERBOSE" != no ]; then
|
|
log_action_msg "Loading kernel module $module"
|
|
modprobe $module $args || true
|
|
else
|
|
modprobe $module $args > /dev/null 2>&1 || true
|
|
fi
|
|
}
|
|
|
|
modules_files() {
|
|
local modules_load_dirs='/etc/modules-load.d /run/modules-load.d /usr/local/lib/modules-load.d /usr/lib/modules-load.d /lib/modules-load.d'
|
|
local processed=' '
|
|
local add_etc_modules=true
|
|
|
|
for dir in $modules_load_dirs; do
|
|
[ -d $dir ] || continue
|
|
for file in $(run-parts --list --regex='\.conf$' $dir 2> /dev/null || true); do
|
|
local base=${file##*/}
|
|
if echo -n "$processed" | grep -qF " $base "; then
|
|
continue
|
|
fi
|
|
if [ "$add_etc_modules" -a -L $file \
|
|
-a "$(readlink -f $file)" = /etc/modules ]; then
|
|
add_etc_modules=
|
|
fi
|
|
processed="$processed$base "
|
|
echo $file
|
|
done
|
|
done
|
|
|
|
if [ "$add_etc_modules" ]; then
|
|
echo /etc/modules
|
|
fi
|
|
}
|
|
|
|
if [ "$VERBOSE" = no ]; then
|
|
log_action_begin_msg 'Loading kernel modules'
|
|
fi
|
|
|
|
files=$(modules_files)
|
|
if [ "$files" ] ; then
|
|
grep -h '^[^#]' $files |
|
|
while read module args; do
|
|
[ "$module" ] || continue
|
|
load_module "$module" "$args"
|
|
done
|
|
fi
|
|
|
|
if [ "$VERBOSE" = no ]; then
|
|
log_action_end_msg 0
|
|
fi
|
|
|