In cases where no hotplug is available (by choice or by the lack of a proper hotplug method for a device), this service can be used to load kernel module drivers by reading the /etc/modules-load.d/*.conf files. The modules files matches the one used by systemd, which in turn has a builtin mechanism to load a module at boot, therefore making systemv init on par with systemd features. Signed-off-by: Angelo Compagnucci <angelo@amarulasolutions.com> [Arnout: - add exception for missing DAEMON variable; - fix shellcheck warnings ] Signed-off-by: Arnout Vandecappelle <arnout@mind.be> Signed-off-by: Arnout Vandecappelle <arnout@rnout.be>
63 lines
957 B
Bash
63 lines
957 B
Bash
#!/bin/sh
|
|
|
|
MODULES_DIR="/etc/modules-load.d/"
|
|
|
|
[ -z "$(ls -A ${MODULES_DIR} 2> /dev/null)" ] && exit 0
|
|
|
|
load_unload() {
|
|
for module_file in "${MODULES_DIR}"/*.conf; do
|
|
while read -r module args; do
|
|
|
|
case "$module" in
|
|
""|"#"*) continue ;;
|
|
esac
|
|
|
|
if [ "$1" = "load" ]; then
|
|
# shellcheck disable=SC2086 # We need word splitting for args
|
|
modprobe -q "${module}" ${args} >/dev/null && \
|
|
printf '%s ' "$module" || RET='FAIL'
|
|
else
|
|
rmmod "${module}" >/dev/null
|
|
fi
|
|
|
|
done < "${module_file}"
|
|
done
|
|
|
|
RET='OK'
|
|
}
|
|
|
|
start() {
|
|
printf 'Starting modules: '
|
|
|
|
load_unload load
|
|
|
|
echo $RET
|
|
}
|
|
|
|
stop() {
|
|
printf 'Stopping modules: '
|
|
|
|
load_unload unload
|
|
|
|
echo $RET
|
|
}
|
|
|
|
restart() {
|
|
stop
|
|
sleep 1
|
|
start
|
|
}
|
|
|
|
case "$1" in
|
|
start|stop|restart)
|
|
"$1";;
|
|
reload)
|
|
# Restart, since there is no true "reload" feature.
|
|
restart;;
|
|
*)
|
|
echo "Usage: $0 {start|stop|restart|reload}"
|
|
exit 1
|
|
esac
|
|
|
|
# check-package Ignore missing DAEMON Variables
|