Support Memtest86+ with UEFI
[grml-live.git] / templates / boot / grub / addons.cfg
index 34ae54c..b4ce608 100644 (file)
@@ -1,10 +1,51 @@
 submenu "Addons ->" --class=submenu {
 
+# EFI:
+if [ "${grub_platform}" == "efi" ] ; then
+  # try to detect amd64 by checking whether CPU supports 64-bit (long) mode
+  if cpuid -l ; then
+    if test -e /boot/addons/memtest86+x64.efi ; then
+      menuentry "Memory test (memtest86+x64.efi)" {
+        linuxefi /boot/addons/memtest86+x64.efi
+      }
+    fi
+  else # assume i386
+    if test -e /boot/addons/memtest86+x32.efi ; then
+      menuentry "Memory test (memtest86+x32.efi)" {
+        linuxefi /boot/addons/memtest86+x32.efi
+      }
+    fi
+  fi
+fi
+
+# BIOS/non-EFI:
 if [ "${grub_platform}" != "efi" ] ; then
-    menuentry "Memory test (memtest86+)" {
+  # try to detect amd64 by checking whether CPU supports 64-bit (long) mode
+  if cpuid -l ; then
+    if test -e /boot/addons/memtest86+x64.bin ; then
+      menuentry "Memory test (memtest86+x64.bin)" {
+        insmod linux16
+        linux16 /boot/addons/memtest86+x64.bin
+      }
+    elif test -e /boot/addons/memtest ; then # fallback to old memtest
+      menuentry "Memory test (memtest86+)" {
         insmod linux16
         linux16 /boot/addons/memtest
-    }
+      }
+    fi
+  else  # assume i386
+    if test -e /boot/addons/memtest86+x32.bin ; then
+      menuentry "Memory test (memtest86+x32.bin)" {
+        insmod linux16
+        linux16 /boot/addons/memtest86+x32.bin
+      }
+    elif test -e /boot/addons/memtest ; then # fallback to old memtest
+      menuentry "Memory test (memtest86+)" {
+        insmod linux16
+        linux16 /boot/addons/memtest
+      }
+    fi
+  fi
 fi
 
 menuentry "iPXE - boot via network/PXE" {