@ -667,8 +667,10 @@ check_module_dir() {
@@ -667,8 +667,10 @@ check_module_dir() {
install_kmod_with_fw() {
local modname=${1##*/} fwdir found
modname=${modname%.ko*}
# no need to go further if the module is already installed
[[ -e "${initdir}/lib/modules/$kernel/${1##*/lib/modules/$kernel/}" ]] && return 0
inst_simple "$1" "/lib/modules/$kernel/${1##*/lib/modules/$kernel/}" || \
return 0 # no need to go further if the module is already installed
return $?
for fw in $(modinfo -k $kernel -F firmware $1 2>/dev/null); do
found=''
for fwdir in $fw_dir; do
@ -681,6 +683,7 @@ install_kmod_with_fw() {
@@ -681,6 +683,7 @@ install_kmod_with_fw() {
dinfo "Possible missing firmware \"${fw}\" for kernel module \"${mod}.ko\""
fi
done
return 0
}
# Do something with all the dependencies of a kernel module.
@ -690,13 +693,16 @@ install_kmod_with_fw() {
@@ -690,13 +693,16 @@ install_kmod_with_fw() {
# $2 = module to get dependencies for
# rest of args = arguments to modprobe
for_each_kmod_dep() {
local func=$1 kmod=$2 cmd modpapth options
local func=$1 kmod=$2 cmd modpapth options
shift 2
modprobe "$@" --ignore-install --quiet --show-depends $kmod | \
while read cmd modpath options; do
[[ $cmd = insmod ]] || continue
$func $modpath
done
modprobe "$@" --ignore-install --show-depends $kmod 2>/dev/null | ( \
local found=0;
while read cmd modpath options; do
[[ $cmd = insmod ]] || continue
$func ${modpath} || exit $?
found=1
done; [[ $found -eq 0 ]] && exit 1; exit 0;)
return $?
}
# filter kernel modules to install certain modules that meet specific
@ -727,6 +733,7 @@ filter_kernel_modules () (
@@ -727,6 +733,7 @@ filter_kernel_modules () (
instmods() {
[[ $no_kernel = yes ]] && return
local mod mpargs modpath modname cmd moddirname
local ret=0
while (($# > 0)); do
mod=${1%.ko*}
case $mod in
@ -761,13 +768,15 @@ instmods() {
@@ -761,13 +768,15 @@ instmods() {
# old version of modprobe which doesn't have '-d' option.
moddirname=${srcmods%%/lib/modules/*}
[[ -n ${moddirname} ]] && moddirname="-d ${moddirname}/"
# ok, load the module, all its dependencies, and any firmware
# it may require
for_each_kmod_dep install_kmod_with_fw $mod \
--set-version $kernel ${moddirname}
ret=$((ret+$?))
;;
esac
shift
esac
shift
done
return $ret
}