diff --git a/package/blindcoder/rockinitrd/mkinitrdnew.sh b/package/blindcoder/rockinitrd/mkinitrdnew.sh
index 2ccb0307f..63a46afc1 100644
--- a/package/blindcoder/rockinitrd/mkinitrdnew.sh
+++ b/package/blindcoder/rockinitrd/mkinitrdnew.sh
@@ -2,6 +2,7 @@
 
 kernel=`uname -r`
 tmpdir=`mktemp -d`
+modprobeopt=`echo $kernel | sed '/2.4/ { s,.*,-n,; q; }; s,.*,--show-depends,'`
 
 if [ -n "$1" ]; then
 	if [ -d "/lib/modules/$1" ]; then
@@ -17,8 +18,10 @@ echo "Creating /boot/initrdnew-${kernel}.img ..."
 mkdir -p $tmpdir/etc/conf
 grep '^modprobe ' /etc/conf/kernel | grep -v 'no-initrd' | \
 	sed 's,[ 	]#.*,,' | \
-	while read a b ; do
-		b="`find /lib/modules/$kernel -name "$b.o" -o -name "$b.ko"`"
+	while read a b ; do $a $modprobeopt -v $b 2> /dev/null; done |
+	while read a b c; do
+		[[ "$b" = *.ko ]] && b=${b/.ko/};
+		b="`find /lib/modules/$kernel -wholename "$b.o" -o -wholename "$b.ko"`"
 		echo "Adding $b."
 		mkdir -p $tmpdir/${b%/*}
 		cp $b $tmpdir/$b