diff -Naur grub-a/util/grub-mkconfig_lib.in grub-b/util/grub-mkconfig_lib.in
--- grub-a/util/grub-mkconfig_lib.in	2011-01-02 17:09:17.832463000 +0900
+++ grub-b/util/grub-mkconfig_lib.in	2011-01-02 17:59:26.067000105 +0900
@@ -159,12 +159,30 @@
   fi
 }
 
-version_test_gt ()
+version_alphanumeric_test_gt ()
 {
   local a=`echo $1 | sed -e "s/[^-]*-//"`
   local b=`echo $2 | sed -e "s/[^-]*-//"`
+
+  version_test_gt "$a" "$b"
+  return $?
+}
+
+version_numeric_test_gt ()
+{
+  local a=`echo $1 | sed -e "s/[^0-9]*-//"`
+  local b=`echo $2 | sed -e "s/[^0-9]*-//"`
+
+  version_test_gt "$a" "$b"
+  return $?
+}
+
+version_test_gt()
+{
+  local a=$1
+  local b=$2
   local cmp=gt
-  if [ "x$b" = "x" ] ; then
+  if [ "$b" = "" ]; then
     return 0
   fi
   case $a:$b in
@@ -179,11 +197,27 @@
 version_find_latest ()
 {
   local a=""
+  local numeric_ver=""
+  local latest_kernels=""
+
+  # There can be kernels with the same version but different configurations.
+  # Such instances are vmlinuz-generic-2.6.36.1 and vmlinuz-huge-2.6.36.1
+  # So we find out the latest kernel version first.
   for i in $@ ; do
-    if version_test_gt "$i" "$a" ; then
+    if version_numeric_test_gt "$i" "$a" ; then
       a="$i"
     fi
   done
+  
+  numeric_ver="$(echo $a | sed "s,[^0-9]*-\([.0-9]*\).*,\1,")"
+  latest_kernels=$(echo $@ | tr " " "\n" | sed -n "/$numeric_ver/ p" | tr "\n" " ")
+  # Filter the kernel of the highest alphanumerical rank among the latest kernels.
+  for i in $latest_kernels; do
+    if version_alphanumeric_test_gt "$i" "$a" ; then
+      a="$i"
+    fi
+  done
+
   echo "$a"
 }
 
diff -Naur grub-a/util/grub.d/10_linux.in grub-b/util/grub.d/10_linux.in
--- grub-a/util/grub.d/10_linux.in	2011-01-02 17:09:17.832463000 +0900
+++ grub-b/util/grub.d/10_linux.in	2011-01-02 18:23:28.935000306 +0900
@@ -31,7 +31,11 @@
 if [ "x${GRUB_DISTRIBUTOR}" = "x" ] ; then
   OS=GNU/Linux
 else
-  OS="${GRUB_DISTRIBUTOR} GNU/Linux"
+  # OS="${GRUB_DISTRIBUTOR} GNU/Linux"
+  # appended GNU/Linux seems redundant.
+  # For example, Slackware-13.1.0 looks better than Slackware-13.1.0 GNU/Linux
+  # The same goes for redhat or others.
+  OS="${GRUB_DISTRIBUTOR}"
   CLASS="--class $(echo ${GRUB_DISTRIBUTOR} | tr '[A-Z]' '[a-z]' | cut -d' ' -f1) ${CLASS}"
 fi
 
@@ -122,25 +126,31 @@
   basename=`basename $linux`
   dirname=`dirname $linux`
   rel_dirname=`make_system_path_relative_to_its_root $dirname`
-  version=`echo $basename | sed -e "s,^[^0-9]*-,,g"`
-  alt_version=`echo $version | sed -e "s,\.old$,,g"`
+  numeric_version=$(echo basename | sed "s,^[^0-9]*-\([.0-9]*\).*,\1,g")
+  alphanumeric_version=$(echo basename | sed "s,^[^-]*-,,")
+  #version=`echo $basename | sed -e "s,^[^0-9]*-,,g"`
+  #alt_version=`echo $version | sed -e "s,\.old$,,g"`
   linux_root_device_thisversion="${LINUX_ROOT_DEVICE}"
 
   initrd=
-  for i in "initrd.img-${version}" "initrd-${version}.img" \
-	   "initrd-${version}" "initramfs-${version}.img" \
-	   "initrd.img-${alt_version}" "initrd-${alt_version}.img" \
-	   "initrd-${alt_version}" "initramfs-${alt_version}.img"; do
-    if test -e "${dirname}/${i}" ; then
-      initrd="$i"
-      break
-    fi
-  done
+  temp=
+  # huge kernels don't need initrd.
+  if [ ! echo $linux | grep -i huge >/dev/null ]; then
+    for i in "initrd.img-${numeric_version}*" "initrd.img-${alphanumeric_version}*" \
+             "initrd-${numeric_version}*" "initrd-${alphanumeric_version}*" \
+             "initramfs-${numeric_version}*" "initramfs-${alphanumeric_version}*"; do
+      temp=$(find ${dirname} -name ${i} 2>/dev/null)
+      if [ "$temp" != "" ]; then
+        initrd="$(basename ${temp})"
+        break
+      fi
+    done
+  fi
 
   initramfs=
-  for i in "config-${version}" "config-${alt_version}"; do
+  for i in "config-${numeric_version}" "config-${alphanumeric_version}"; do
     if test -e "${dirname}/${i}" ; then
-      initramfs=`grep CONFIG_INITRAMFS_SOURCE= "${dirname}/${i}" | cut -f2 -d= | tr -d \"`
+      initramfs=$(grep CONFIG_INITRAMFS_SOURCE= "${dirname}/${i}" | cut -f2 -d= | tr -d \")
       break
     fi
   done
@@ -153,10 +163,10 @@
     linux_root_device_thisversion=${GRUB_DEVICE}
   fi
 
-  linux_entry "${OS}" "${version}" false \
+  linux_entry "${OS}" "${alphanumeric_version}" false \
       "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}"
   if [ "x${GRUB_DISABLE_RECOVERY}" != "xtrue" ]; then
-    linux_entry "${OS}" "${version}" true \
+    linux_entry "${OS}" "${alphanumeric_version}" true \
 	"single ${GRUB_CMDLINE_LINUX}"
   fi
 
