about summary refs log tree commit diff
path: root/modules-load
blob: 00eca9fa447e5a5f1eaa3669f890e670d56fcbd7 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/bin/sh
# modules-load [-n] [-v] - modules-load.d(5) compatible kernel module loader

{
# Parameters passed as modules-load= or rd.modules-load= in kernel command line.
sed -nr 's/,/\n/;s/(.* |^)(rd\.)?modules-load=([^ ]*).*/\3/p' /proc/cmdline

# Find files /{etc,run,usr/lib}/modules-load.d/*.conf in that order.
find -L /etc/modules-load.d /run/modules-load.d /usr/lib/modules-load.d \
       	-maxdepth 1 -name '*.conf' -printf '%p %P\n' 2>/dev/null |
# Load each basename only once.
	sort -k2 -s | uniq -f1 | cut -d' ' -f1 |
# Read the files, output all non-empty, non-comment lines.
	xargs -r -d'\n' grep -h -v -e '^[#;]' -e '^$'
} |
# Call modprobe on the list of modules
xargs -r -d'\n' modprobe -ab "$@"