# Copyright 2006-2007 Gentoo Foundation; Distributed under the GPL v2
# $Header: $
+ 02 Nov 2007; Chris Gianelloni <wolf31o2@gentoo.org> ++, gen_initramfs.sh,
+ gen_initrd.sh, genkernel:
+ Reverting the removal of generic/modprobe for bug #197730. This is genkernel
+ 3.4.9_pre6 for testing.
+
01 Nov 2007; Chris Gianelloni <wolf31o2@gentoo.org> gen_compile.sh,
gen_initramfs.sh, genkernel:
Fixed device-mapper/man removal for bug #196087, fixed mdadm.conf copying,
done
echo '"' >> "${TEMP}/initramfs-aux-temp/etc/initrd.defaults"
+ if [ -f "${GK_SHARE}/${ARCH}/modprobe" ]
+ then
+ cp "${GK_SHARE}/${ARCH}/modprobe" "${TEMP}/initramfs-aux-temp/sbin/modprobe"
+ else
+ cp "${GK_SHARE}/generic/modprobe" "${TEMP}/initramfs-aux-temp/sbin/modprobe"
+ fi
if isTrue $CMD_DOKEYMAPAUTO
then
echo 'MY_HWOPTS="${MY_HWOPTS} keymap"' >> ${TEMP}/initramfs-aux-temp/etc/initrd.defaults
chmod +x "${TEMP}/initramfs-aux-temp/init"
chmod +x "${TEMP}/initramfs-aux-temp/etc/initrd.scripts"
chmod +x "${TEMP}/initramfs-aux-temp/etc/initrd.defaults"
+ chmod +x "${TEMP}/initramfs-aux-temp/sbin/modprobe"
cd "${TEMP}/initramfs-aux-temp/"
find . -print | cpio ${CPIO_ARGS} --append -F "${CPIO}"
cd "${TEMP}"
done
echo '"' >> "${TEMP}/initrd-temp/etc/initrd.defaults"
+ if [ -f "${GK_SHARE}/${ARCH}/modprobe" ]
+ then
+ cp "${GK_SHARE}/${ARCH}/modprobe" "${TEMP}/initrd-temp/sbin/modprobe"
+ else
+ cp "${GK_SHARE}/generic/modprobe" "${TEMP}/initrd-temp/sbin/modprobe"
+ fi
if isTrue $CMD_DOKEYMAPAUTO
then
echo 'MY_HWOPTS="${MY_HWOPTS} keymap"' >> ${TEMP}/initrd-temp/etc/initrd.defaults
chmod +x "${TEMP}/initrd-temp/linuxrc"
chmod +x "${TEMP}/initrd-temp/etc/initrd.scripts"
chmod +x "${TEMP}/initrd-temp/etc/initrd.defaults"
+ chmod +x "${TEMP}/initrd-temp/sbin/modprobe"
}
calc_initrd_size() {
--- /dev/null
+#!/bin/ash
+# Apparently, this is required for proper functionality with busybox 1.1.3
+# Check out bug #197730 for more details.
+
+. /etc/initrd.defaults
+
+usage() {
+ echo 'Usage:'
+ echo ' modprobe moduleprefix'
+ echo
+ echo 'Example:'
+ echo ' modprobe eepro100'
+ echo
+ echo 'Note: Do not pass the suffix to modprobe!'
+ exit 1
+}
+
+# Pass module name to this function
+modules_dep_list() {
+ if [ "$#" -lt '1' ]
+ then
+ echo 'modules_dep_list(): Improper usage!'
+ exit 1
+ fi
+ cat /lib/modules/${KV}/modules.dep | grep ${1}${KSUFF}\: | cut -d\: -f2
+}
+
+
+# Pass module deps list
+strip_mod_paths() {
+ local x
+ local ret
+ local myret
+
+ [ "$#" -lt '1' ] && return
+
+ for x in ${*}
+ do
+ ret=`basename ${x} | cut -d. -f1`
+ myret="${myret} ${ret}"
+ done
+ echo "${myret}"
+}
+
+LOADED_MODULES=''
+is_module_already_loaded() {
+ local x
+ if [ "$#" != '1' ]
+ then
+ echo 'is_module_already_loaded(): Improper usage!'
+ fi
+
+ for x in ${LOADED_MODULES}
+ do
+ if [ "${x}" = "${1}" ]
+ then
+ # Yep, module is loaded
+ return 0
+ fi
+ done
+ return 1
+}
+
+real_mod_path() {
+ # Find -name is no good since the return status is always zero
+ find /lib/modules | grep /"${1}${KSUFF}"
+}
+
+modprobe2() {
+ local x
+ local deps
+ local real_path
+ local modlist
+ local ret
+
+ local echoAppend
+ local echoFlags
+
+ if [ "$#" -lt '1' ]
+ then
+ usage
+ exit 1
+ fi
+ real_path=`real_mod_path ${1}`
+ if [ "${real_path}" = '' -o "${real_path}" = ' ' ]
+ then
+ echo ' module not found.'
+ exit 2
+ fi
+ modlist=`modules_dep_list ${1}`
+ if [ "${modlist}" != '' -a "${modlist}" != ' ' ]
+ then
+ deps=`strip_mod_paths ${modlist}`
+ else
+ deps=''
+ fi
+ # Make sure we don't do any endless loops!
+
+ LOADED_MODULES="${LOADED_MODULES} ${1}"
+ for x in ${deps}
+ do
+ if ! is_module_already_loaded ${x}
+ then
+ if [ "${x}" != '' -a "${x}" != ' ' ]
+ then
+ modprobe2 "${x}" -n
+ fi
+ else
+ filler=1
+ fi
+ done
+ ${INSMOD} ${real_path} > /dev/null 2>&1
+ ret=$?
+ if [ "$ret" -eq '0' ]
+ then
+ echoAppend=' loaded.'
+ [ "${2}" = '-n' ] && echoFlags='-n' && echoAppend=', '
+ echo ${echoFlags} "${1}${echoAppend}"
+ fi
+ return $ret
+}
+
+if [ "$#" -lt '1' ]
+then
+ usage
+fi
+
+[ -f '/modules.cache' ] || touch /modules.cache
+for x in `cat /modules.cache`
+do
+ LOADED_MODULES="${LOADED_MODULES} ${x}"
+done
+
+modprobe2 ${1}
+modprobe_ret=$?
+
+[ -f '/modules.cache' ] && rm -f /modules.cache > /dev/null 2>&1
+for x in ${LOADED_MODULES}
+do
+ echo $x >> /modules.cache
+done
+
+exit $modprobe_ret