#!/bin/bash
### BEGIN INIT INFO
# Provides:            modules
# Required-Start:      sysctl cmdline
# Should-Start:
# Required-Stop:
# Should-Stop:
# Default-Start:       3 4 5
# Default-Stop:
# Short-Description:   Loads required modules.
# Description:         Loads modules for PRELOAD.
### END INIT INFO

[ "$1" = start ] || exit 0

. /.initrd/initenv

[ -z "${RD_DEPMOD-}" ] ||
	depmod -a

[ -n "${RD_PRELOAD_MODULES-}" ] ||
	exit 0

. /etc/init.d/functions

preload_modules()
{
	local check conf modname rc=0
	for conf in /etc/modules-load.d/*.conf /run/modules-load.d/*.conf /lib/modules-load.d/*.conf /etc/initrd/modules-preudev; do
		# shellcheck disable=SC2162
		[ ! -e "$conf" ] ||
		while read modname args; do
			[ -n "${modname##[\#;]*}" ] ||
				continue
			check="/lib/initrd/kmodules/check-$modname"
			[ ! -x "$check" ] || "$check" ||
				continue
			modprobe "$modname" $args || rc=1
		done < "$conf"
	done 2>"/var/log/preload-modules.log"
	return $rc
}

action_shell 'Loading modules:' preload_modules
