#!/bin/sh -e

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

. /lib/lsb/init-functions
. /etc/default/rcS

PATH="/sbin:/bin"

KVER=$(uname -r)
if [ -w /lib/modules/$KVER/ ]; then
  log_begin_msg "Calculating module dependencies..."
  if depmod --quick; then
    log_end_msg 0
  else
    log_end_msg 1
  fi
else
  log_failure_msg "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.
log_begin_msg 'Loading modules...'
grep '^[^#]' $MODULES_FILE | \
while read module args; do
  [ "$module" ] || continue
  if [ "$VERBOSE" != no ]; then
    log_begin_msg "Trying module $module"
    if modprobe $module $args >/dev/null 2>&1; then
      log_end_msg 0
    else
      log_end_msg 1 || true
    fi
  else
    modprobe $module $args >/dev/null 2>&1 || true
  fi
done
log_end_msg 0

# Just in case a sysadmin prefers generic symbolic links in
# /lib/modules/boot for boot time modules we will load these modules.
boot="$(modprobe --list --type boot)"
for d in $boot; do
    mod="${d##*/}"
    mod="${mod%.ko}"
    modprobe "$mod"
done
exit 0

