Support Memtest86+ with UEFI
[grml-live.git] / templates / boot / grub / addons.cfg
index 3b515d8..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" {
@@ -40,8 +81,7 @@ if [ "${grub_platform}" != "efi" ] ; then
     menuentry "FreeDOS" {
         insmod linux16
         linux16  /boot/addons/memdisk
-        loopback balder /boot/addons/balder10.imz
-        initrd16 (balder)+2880
+        initrd16 /boot/addons/balder10.imz
     }
 
     if [ ${iso_path} ] ; then
@@ -79,7 +119,12 @@ if [ "${grub_platform}" != "efi" ] ; then
 fi # efi mode
 }
 
-menuentry "Boot OS of first partition on first disk" {
-    set root=(hd0,1)
-    chainloader +1
+if [ "${grub_platform}" == "efi" ] ; then
+menuentry "UEFI Firmware Settings" {
+    fwsetup
+}
+fi # efi mode
+
+menuentry "Boot from next device" {
+    exit
 }