mirror of
https://gitlab.com/buildroot.org/buildroot.git
synced 2026-08-09 17:03:35 -09:00
package/initscripts: add service to load kernel modules at boot
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>
This commit is contained in:
committed by
Arnout Vandecappelle
parent
90533b6899
commit
035f496978
62
package/initscripts/init.d/S11modules
Normal file
62
package/initscripts/init.d/S11modules
Normal file
@@ -0,0 +1,62 @@
|
||||
#!/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
|
||||
Reference in New Issue
Block a user