#!/bin/sh . /etc/initrd.d/00-common.sh . /etc/initrd.d/00-devmgr.sh _modules_load() { for module in ${*}; do echo ${module} >> /etc/modules/extra_load done _modules_scan extra_load } _modules_scan() { local mods local loaded mods=$(cat /etc/modules/${1} 2>/dev/null) [ -n "${mods}" ] && [ -z "${QUIET}" ] && \ echo -ne "${BOLD} ::${NORMAL} Loading from ${1}: " for x in ${mods}; do local mload=$(echo ${MLIST} | sed -e "s/.*${x}.*/${x}/") if [ "${mload}" = "${x}" ]; then # Only module to no-load [ -z "${QUIET}" ] && \ echo -e "${BOLD} ::${NORMAL} Skipping ${x}..." elif [ "${mload}" = "${MLIST}" ]; then if [ -n "${DEBUG}" ]; then echo -ne "${BOLD} ::${NORMAL} " echo -ne "Scanning for ${x}..." fi modprobe ${x} > /dev/null 2>&1 loaded=${?} [ -n "${DEBUG}" -a "${loaded}" = "0" ] && \ echo "loaded" [ -n "${DEBUG}" -a "${loaded}" != "0" ] && \ echo "not loaded" [ -z "${DEBUG}" -a "${loaded}" = "0" ] && \ [ -z "${QUIET}" ] && \ echo -en "${x} " else [ -z "${QUIET}" ] && \ echo -e "${BOLD} ::${NORMAL} Skipping ${x}..." fi done [ -n "${mods}" ] && [ -z "${QUIET}" ] && echo } modules_init() { if [ -z "${DO_modules}" ]; then good_msg 'Skipping module load; disabled via commandline' elif [ -d "/lib/modules/${KV}" ]; then good_msg 'Loading modules' # Load appropriate kernel modules if [ "${NODETECT}" != "1" ]; then for modules in ${MY_HWOPTS}; do _modules_scan ${modules} done fi # Always eval doload=... _modules_load ${MDOLIST} else good_msg 'Skipping module load; no modules in the ramdisk!' fi # Give udev time to execute all the rules. This may be beneficial # for usb-storage devices. is_udev && udevadm settle } cmdline_hwopts() { # Scan CMDLINE for any "doscsi" or "noscsi"-type arguments for x in ${HWOPTS}; do for y in ${CMDLINE}; do if [ "${y}" = "do${x}" ]; then MY_HWOPTS="${MY_HWOPTS} $x" elif [ "${y}" = "no${x}" ]; then MY_HWOPTS="$(echo ${MY_HWOPTS} | sed -e \"s/${x}//g\" -)" fi if [ "$(echo ${y} | cut -b -7)" = "keymap=" ]; then MY_HWOPTS="${MY_HWOPTS} keymap" fi done done local tmp_hwopts for x in ${MY_HWOPTS}; do local found=0 for y in ${tmp_hwopts}; do if [ "${y}" = "${x}" ]; then continue 2 fi done tmp_hwopts="${tmp_hwopts} ${x}" eval DO_$(echo ${x} | sed 's/-//')=1 done MY_HWOPTS="${tmp_hwopts}" }