openrc/init.d/modules.in

71 lines
1.8 KiB
Plaintext
Raw Normal View History

#!@PREFIX@/sbin/runscript
# Copyright 2007-2008 Roy Marples <roy@marples.name>
# All rights reserved. Released under the 2-clause BSD license.
description="Loads a user defined list of kernel modules."
depend()
{
use isapnp
2008-03-03 22:49:56 +05:30
keyword noopenvz noprefix novserver
}
start()
{
# Should not fail if kernel do not have module
# support compiled in ...
[ ! -f /proc/modules ] && return 0
local KV=$(uname -r)
local KV_MAJOR=${KV%%.*}
local x=${KV#*.}
local KV_MINOR=${x%%.*}
x=${KV#*.*.}
local KV_MICRO=${x%%-*}
local list= x= xx= y= args= mpargs= cnt=0 a=
for x in "${KV}" \
${KV_MAJOR}.${KV_MINOR}.${KV_MICRO} \
${KV_MAJOR}.${KV_MINOR} \
; do
eval list=\$modules_$(shell_var "${x}")
[ -n "${list}" ] && break
done
[ -z "${list}" ] && list=${modules}
for x in ${list}; do
a=${x#*:}
if [ "${a}" = "${x}" ]; then
unset mpargs
ebegin "Loading module ${x}"
else
x=${x%%:*}
mpargs="-o ${a}"
ebegin "Loading module ${x} as ${a}"
fi
aa=$(shell_var "${a}")
xx=$(shell_var "${x}")
for y in "${KV}" \
${KV_MAJOR}.${KV_MINOR}.${KV_MICRO} \
${KV_MAJOR}.${KV_MINOR} \
; do
eval args=\$module_${aa}_args_$(shell_var "${y}")
[ -n "${args}" ] && break
eval args=\$module_${xx}_args_$(shell_var "${y}")
[ -n "${args}" ] && break
done
[ -z "${args}" ] && eval args=\$module_${aa}_args
[ -z "${args}" ] && eval args=\$module_${xx}_args
eval modprobe -q "${mpargs}" "${x}" "${args}"
eend $? "Failed to load ${x}" && cnt=$((${cnt} + 1))
done
einfo "Autoloaded ${cnt} module(s)"
# 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
}