NetBSD/etc/rc.lkm
cube 4804c0d992 modload(8) already obtain the value of the machdep.booted_kernel sysctl
node, and use it as a reasonable default when no -A option is passed.

The difference is, modload(8) prefers /dev/ksyms rather than the sysctl
node, which is the behaviour we really want.

Unconditionally passing -A in rc.lkm prevents the loading of inter-
dependent modules from rc.d, as reported by Jeff Rizzo on netbsd-users.
2005-03-04 21:11:23 +00:00

107 lines
1.6 KiB
Plaintext

# $NetBSD: rc.lkm,v 1.9 2005/03/04 21:11:23 cube Exp $
#
# this script loads or unloads LKMs (loadable kernel modules).
if [ -s /etc/lkm.conf ]; then
case "$1" in
start)
(while read path options entry postinstall output when; do
flags=''
case $path in
\#*|"")
continue
;;
/*)
;;
*)
if [ -f "/lkm/$path" ]; then
path="/lkm/$path"
elif [ -f "/usr/lkm/$path" ]; then
path="/usr/lkm/$path"
else
echo "couldn't find module $path"
fi
;;
esac
case $options in
-)
;;
*)
flags="$flags $options"
;;
esac
case $entry in
-)
;;
*)
flags="$flags -e $entry"
;;
esac
case $postinstall in
-)
;;
*)
flags="$flags -p $postinstall"
;;
esac
case $output in
-)
;;
*)
if [ "$output" = TEMP ]; then
flags="$flags -o /tmp/lkm.$$"
else
flags="$flags -o $output"
fi
;;
esac
case $when in
-)
when=BEFORENET
;;
[A-Z]*)
;;
*)
echo "invalid \"when\" field \`${when}' in /etc/lkm.conf - $path not loaded!"
continue
;;
esac
if [ "$when" != "$lkmstage" ]; then
continue
fi
echo -n "${path##*/}: "
modload $flags $path
rm -f /tmp/lkm.$$
done) < /etc/lkm.conf
;;
stop)
(while read path options entry postinstall output when; do
case $path in
\#*|"")
continue
;;
/*)
name=${path##*/}
name=${name%.o}
;;
*)
name=${path%.o}
;;
esac
if [ "$when" = "$lkmstage" ]; then
modunload -n ${name}
fi
done) < /etc/lkm.conf
;;
esac
fi