Does Grub2 support Memtest86+ iso files?

There are ways of adding ISO's to grub2 configurations. It is easier to use other options, however.

  1. Download memtest86+-4.20.bin (Latest as of 11/2011)
  2. Place it in your /boot partition. (Just like your Linux kernels)
  3. Add the following to /etc/grub.d/40_custom (It should be on three lines, like this)
menuentry "Memtest 86+" { 
linux16 /memtest86+.bin
}

Final. Update your grub and reboot

sudo grubupdate && sudo reboot

Six years late to this party, but seeing as I couldn't find the answer anywhere either, here's what I did to work it out.

  • Mount the memtest ISO
  • Look at mount-point/isolinux/isolinux.cfg
  • Convert isolinux config to GRUB2 config

Note that that method works for other ISOs, not just Memtest86+.

Doing the above yields multiple isolinux configs depending on how you want to start Memtest86+, so you end up with multiple menuentries:

submenu "> MemTest86+ 7.2" {
    menuentry "MemTest86" {
        set isofile="/Memtest86-7.2.iso"
        echo "Mounting Memtest86-7.2.iso"
        loopback loop $isofile
        echo "Loading kernel"
        linux16 (loop)/isolinux/memtest iso-scan/filename=$isofile
        echo "Starting MemTest86+ 7.2"
    }

    menuentry "MemTest86 (one pass)" {
        set isofile="/Memtest86-7.2.iso"
        echo "Mounting Memtest86-7.2.iso"
        loopback loop $isofile
        echo "Loading kernel"
        linux16 (loop)/isolinux/memtest iso-scan/filename=$isofile onepass
        echo "Starting MemTest86+ 7.2"
    }

    menuentry "MemTest86 (btrace)" {
        set isofile="/Memtest86-7.2.iso"
        echo "Mounting Memtest86-7.2.iso"
        loopback loop $isofile
        echo "Loading kernel"
        linux16 (loop)/isolinux/memtest iso-scan/filename=$isofile btrace
        echo "Starting MemTest86+ 7.2"
    }

    menuentry "MemTest86 (single CPU)" {
        set isofile="/Memtest86-7.2.iso"
        echo "Mounting Memtest86-7.2.iso"
        loopback loop $isofile
        echo "Loading kernel"
        linux16 (loop)/isolinux/memtest iso-scan/filename=$isofile maxcpus=1
        echo "Starting MemTest86+ 7.2"
    }

    menuentry "MemTest86 (serial output)" {
        set isofile="/Memtest86-7.2.iso"
        echo "Mounting Memtest86-7.2.iso"
        loopback loop $isofile
        echo "Loading kernel"
        linux16 (loop)/isolinux/memtest iso-scan/filename=$isofile console=ttyS0,9600
        echo "Starting MemTest86+ 7.2"
    }
}