Add modules-load.d support
This commit is contained in:
parent
69ac78d76a
commit
556dbff99d
@ -20,10 +20,10 @@ SRCS-FreeBSD= hostid.in modules.in moused.in newsyslog.in pf.in rarpd.in \
|
|||||||
rc-enabled.in rpcbind.in savecore.in syslogd.in
|
rc-enabled.in rpcbind.in savecore.in syslogd.in
|
||||||
# These are FreeBSD specific
|
# These are FreeBSD specific
|
||||||
SRCS-FreeBSD+= adjkerntz.in devd.in dumpon.in encswap.in ipfw.in \
|
SRCS-FreeBSD+= adjkerntz.in devd.in dumpon.in encswap.in ipfw.in \
|
||||||
mixer.in nscd.in powerd.in syscons.in
|
modules.in modules-load.in mixer.in nscd.in powerd.in syscons.in
|
||||||
|
|
||||||
SRCS-Linux= binfmt.in devfs.in dmesg.in hwclock.in consolefont.in keymaps.in \
|
SRCS-Linux= binfmt.in devfs.in dmesg.in hwclock.in consolefont.in keymaps.in \
|
||||||
killprocs.in modules.in mount-ro.in mtab.in numlock.in \
|
killprocs.in modules.in modules-load.in mount-ro.in mtab.in numlock.in \
|
||||||
procfs.in net-online.in sysfs.in termencoding.in tmpfiles.dev.in
|
procfs.in net-online.in sysfs.in termencoding.in tmpfiles.dev.in
|
||||||
|
|
||||||
# Generic BSD scripts
|
# Generic BSD scripts
|
||||||
|
73
init.d/modules-load.in
Normal file
73
init.d/modules-load.in
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
#!@SBINDIR@/openrc-run
|
||||||
|
# Copyright (c) 2016 The OpenRC Authors.
|
||||||
|
# See the Authors file at the top-level directory of this distribution and
|
||||||
|
# https://github.com/OpenRC/openrc/blob/master/AUTHORS
|
||||||
|
#
|
||||||
|
# This file is part of OpenRC. It is subject to the license terms in
|
||||||
|
# the LICENSE file found in the top-level directory of this
|
||||||
|
# distribution and at https://github.com/OpenRC/openrc/blob/master/LICENSE
|
||||||
|
# This file may not be copied, modified, propagated, or distributed
|
||||||
|
# except according to the terms contained in the LICENSE file.
|
||||||
|
|
||||||
|
description="Loads a list of modules from systemd-compatible locations."
|
||||||
|
|
||||||
|
depend()
|
||||||
|
{
|
||||||
|
keyword -docker -lxc -openvz -prefix -systemd-nspawn -vserver
|
||||||
|
}
|
||||||
|
|
||||||
|
modules_dirs="/usr/lib/modules-load.d /run/modules-load.d /etc/modules-load.d"
|
||||||
|
|
||||||
|
find_modfiles()
|
||||||
|
{
|
||||||
|
local basenames files x y
|
||||||
|
for x in $modules_dirs; do
|
||||||
|
[ ! -d $x ] && continue
|
||||||
|
for y in $x/*.conf; do
|
||||||
|
[ -f $y ] && basenames="${basenames}\n${y##*/}"
|
||||||
|
done
|
||||||
|
done
|
||||||
|
basenames=$(printf "$basenames" | sort -u)
|
||||||
|
for x in $basenames; do
|
||||||
|
for y in $modules_dirs; do
|
||||||
|
[ -r $y/$x ] &&
|
||||||
|
path=$y/$x
|
||||||
|
done
|
||||||
|
files="$files $path"
|
||||||
|
done
|
||||||
|
echo $files
|
||||||
|
}
|
||||||
|
|
||||||
|
load_modules()
|
||||||
|
{
|
||||||
|
local file m modules rc x
|
||||||
|
file=$1
|
||||||
|
[ -z "$file" ] && return 0
|
||||||
|
while read m x; do
|
||||||
|
case $m in
|
||||||
|
\;) continue ;;
|
||||||
|
\#) continue ;;
|
||||||
|
*) modules="$modules $m"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done < $file
|
||||||
|
for x in $modules; do
|
||||||
|
ebegin "Loading module $x"
|
||||||
|
case "$RC_UNAME" in
|
||||||
|
FreeBSD) kldload "$x"; rc=$? ;;
|
||||||
|
linux) modprobe -q "$x"; rc=$? ;;
|
||||||
|
*) ;;
|
||||||
|
esac
|
||||||
|
eend $rc "Failed to load $x"
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
start()
|
||||||
|
{
|
||||||
|
local x
|
||||||
|
files=$(find_modfiles)
|
||||||
|
for x in $files; do
|
||||||
|
load_modules $x
|
||||||
|
done
|
||||||
|
return 0
|
||||||
|
}
|
@ -14,6 +14,7 @@ description="Loads a user defined list of kernel modules."
|
|||||||
depend()
|
depend()
|
||||||
{
|
{
|
||||||
use isapnp
|
use isapnp
|
||||||
|
want modules-load
|
||||||
keyword -docker -lxc -openvz -prefix -systemd-nspawn -vserver
|
keyword -docker -lxc -openvz -prefix -systemd-nspawn -vserver
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user