#!/bin/sh -e

# Silently exit if the kernel does not support modules or needs modutils.
[ -f /proc/modules -a ! -f /proc/ksyms ] || exit 0
[ -x /sbin/depmod ] || exit 0

PATH="/sbin:/bin"

KVER=$(uname -r)
if [ -w /lib/modules/$KVER/ ]; then
  echo -n "Calculating module dependencies... "
  depmod --quick
  echo "done."
else
  echo "Not running depmod because /lib/modules/$KVER/ is not writeable."
fi

if [ -e /etc/modules-$KVER ]; then
  MODULES_FILE=/etc/modules-$KVER
elif [ -e /etc/modules-2.6 ]; then
  MODULES_FILE=/etc/modules-2.6
else
  MODULES_FILE=/etc/modules
fi

# Loop over every line in /etc/modules.
echo 'Loading modules...'
grep '^[^#]' $MODULES_FILE | \
while read module args; do
  [ "$module" ] || continue
  echo "    $module"
  modprobe $module $args || true
done
echo "All modules loaded."

# Just in case a sysadmin prefers generic symbolic links in
# /lib/modules/boot for boot time modules we will load these modules.
if [ -n "$(modprobe --list --type boot)" ]; then
  modprobe --all --type boot '*'
fi

exit 0

