modutils-initscripts: improve modutils.sh

modutils.sh reads /etc/modules to load the listed modules at boot time.
/etc/modules is generated by update-modules which scans
/etc/modules-load.d directory. However, update-modules became obsolete
because the files it generates are not used by modprobe anymore.

Hence, change modutils.sh to scan also /etc/modules-load.d/*.conf and
load the modules listed there.

Basically, the behavior is this:
 * if /etc/modules exists, load those modules;
 * if the directory /etc/modules-load.d exists, load the modules listed
   in the .conf files but ignore those already loaded (from
   /etc/modules);

[YOCTO #3598]

(From OE-Core rev: f2d6e84cb1694e2365beca331439bb2d23843a5b)

Signed-off-by: Laurentiu Palcu <laurentiu.palcu@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Laurentiu Palcu 2013-01-17 16:58:43 +02:00 committed by Richard Purdie
parent e7ebff0a98
commit 36a6430727
1 changed files with 25 additions and 9 deletions

View File

@ -13,7 +13,7 @@
LOAD_MODULE=modprobe
[ -f /proc/modules ] || exit 0
[ -f /etc/modules ] || exit 0
[ -f /etc/modules ] || [ -d /etc/modules-load.d ] || exit 0
[ -e /sbin/modprobe ] || LOAD_MODULE=insmod
if [ ! -f /lib/modules/`uname -r`/modules.dep ]; then
@ -21,15 +21,31 @@ if [ ! -f /lib/modules/`uname -r`/modules.dep ]; then
depmod -Ae
fi
loaded_modules=" "
process_file() {
file=$1
(cat $file; echo; ) |
while read module args
do
case "$module" in
\#*|"") continue ;;
esac
[ -n "$(echo $loaded_modules | grep " $module ")" ] && continue
[ "$VERBOSE" != no ] && echo -n "$module "
eval "$LOAD_MODULE $module $args >/dev/null 2>&1"
loaded_modules="${loaded_modules}${module} "
done
}
[ "$VERBOSE" != no ] && echo -n "Loading modules: "
(cat /etc/modules; echo; ) |
while read module args
do
case "$module" in
\#*|"") continue ;;
esac
[ "$VERBOSE" != no ] && echo -n "$module "
eval "$LOAD_MODULE $module $args >/dev/null 2>&1"
[ -f /etc/modules ] && process_file /etc/modules
[ -d /etc/modules-load.d ] || exit 0
for f in /etc/modules-load.d/*.conf; do
process_file $f
done
[ "$VERBOSE" != no ] && echo