aboutsummaryrefslogtreecommitdiff
path: root/init.d.Linux/modules
diff options
context:
space:
mode:
Diffstat (limited to 'init.d.Linux/modules')
-rwxr-xr-xinit.d.Linux/modules104
1 files changed, 104 insertions, 0 deletions
diff --git a/init.d.Linux/modules b/init.d.Linux/modules
new file mode 100755
index 00000000..ff6faf6a
--- /dev/null
+++ b/init.d.Linux/modules
@@ -0,0 +1,104 @@
+#!/sbin/runscript
+# Copyright 1999-2007 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+depend() {
+ need checkroot
+ use isapnp
+}
+
+load_modules() {
+ local modules=""
+ local config="$1"
+
+ [ -z "${config}" -o ! -r "${config}" ] && return 0
+
+ modules=$(sed -e 's:#.*::' -e '/^[[:space:]]*$/d' "${config}")
+ [ -z "${modules}" ] && return 0
+
+ einfo "Using ${config} as config:"
+ eindent
+
+ local x= cnt=0 OIFS=${IFS} SIFS=${IFS-y}
+ IFS=\n
+ for x in ${modules} ; do
+ set -- ${x}
+ ebegin "Loading module $1"
+ modprobe -q "$@" >& /dev/null
+ eend $? "Failed to load $1" && cnt=$((${cnt} + 1))
+ done
+ if [ "${SIFS}" = "y" ] ; then
+ IFS=${save_IFS}
+ else
+ unset IFS
+ fi
+
+ einfo "Autoloaded ${cnt} module(s)"
+
+ return 0
+}
+
+start() {
+ # Should not fail if kernel do not have module
+ # support compiled in ...
+ [ ! -f /proc/modules -o "${RC_SYS}" = "VPS" ] && return 0
+
+ local KV=$(uname -r)
+ local KV_MAJOR=${KV%%.*}
+ local x=${KV#*.}
+ local KV_MINOR=${x%%.*}
+ x=${KV#*.*.}
+ local KV_MICRO=${x%%-*}
+
+ # Make sure depmod from modutils do not whine, but do not bother if
+ # we are on a 2.6 kernel without modprobe.old
+ if [ -z "${CDBOOT}" -a ! -e /etc/modules.conf ] && \
+ [ $(KV_to_int "${KV}") -lt $(KV_to_int '2.5.48') -o -x /sbin/modprobe.old ]
+ then
+ echo '### This file is automatically generated by modules-update' \
+ > /etc/modules.conf 2>/dev/null
+ [ ! -f /etc/modules.conf ] && \
+ ewarn "Cannot update /etc/modules.conf!"
+ fi
+
+ # Only do this if we have modules.conf or a 2.6 kernel
+ if [ -z "${CDBOOT}" ] && \
+ [ -f /etc/modules.conf -o $(KV_to_int "${KV}") -ge $(KV_to_int '2.5.48') ]
+ then
+ /sbin/modules-update
+ fi
+
+ local auto=""
+ if [ -f /etc/modules.autoload -a ! -L /etc/modules.autoload ]; then
+ auto=/etc/modules.autoload
+ else
+ local x= f="/etc/modules.autoload.d/kernel"
+ for x in "${KV}" ${KV_MAJOR}.${KV_MINOR}.${KV_MICRO} ${KV_MAJOR}.${KV_MINOR} ; do
+ if [ -f "${f}-${x}.${RC_SOFTLEVEL}" ] ; then
+ auto="${f}-${x}.${RC_SOFTLEVEL}"
+ break
+ fi
+ if [ "${RC_SOFTLEVEL}" = "${RC_BOOTLEVEL}" -a -f "${f}-${x}.${RC_DEFAULTLEVEL}" ] ; then
+ auto="${f}-${x}.${RC_DEFAULTLEVEL}"
+ break
+ fi
+ if [ -f "${f}-${x}" ] ; then
+ auto="${f}-${x}"
+ break
+ fi
+ done
+ fi
+ [ -n "${auto}" ] && load_modules "${auto}"
+
+ #
+ # Just in case a sysadmin prefers generic symbolic links in
+ # /lib/modules/boot for boot time modules we will load these modules
+ #
+ [ -n "$(modprobe -l -t boot)" ] && modprobe -a -t boot \* 2>/dev/null
+
+ # Above test clobbers the return
+ return 0
+}
+
+
+# vim:ts=4