--- mkinitrd-5.1.19.6/mkinitrd.218452 2007-07-09 15:02:31.000000000 -0400 +++ mkinitrd-5.1.19.6/mkinitrd 2007-07-09 15:03:35.000000000 -0400 @@ -127,6 +127,24 @@ moduledep() { [ -n "$deps" ] && vecho ": $deps" || vecho } +locatemodule() { + fmPath=$(modprobe --set-version $kernel --show-depends $1 2>/dev/null | awk '/^insmod / { print $2; }' | tail -1) + if [ -n "$fmPath" -a -f "$fmPath" ]; then + return 0 + fi + for modExt in o.gz o ko ; do + for modDir in /lib/modules/$kernel/updates /lib/modules/$kernel ; do + if [ -d $modDir ]; then + fmPath=$(findone $modDir -name $1.$modExt) + if [ -n "$fmPath" -a -f "$fmPath" ]; then + return 0 + fi + fi + done + done + return 1 +} + findone() { echo nash-find "$@" | /sbin/nash --force --quiet \ | /bin/awk '{ print $1; exit; }' @@ -212,20 +230,7 @@ findmodule() { findmodule $i done - for modExt in o.gz o ko ; do - fmPath=$(/sbin/modinfo -F filename -k $kernel $modName 2> /dev/null) - if [ -f "$fmPath" ]; then - break - fi - for modDir in /lib/modules/$kernel/updates /lib/modules/$kernel ; do - if [ -d $modDir ]; then - fmPath=$(findone $modDir -name $modName.$modExt) - if [ -f "$fmPath" ]; then - break 2 - fi - fi - done - done + locatemodule $modName if [ ! -f "$fmPath" ]; then if [ -n "$skiperrors" ]; then