32

If using UEFI Please see this question, "Can I boot memtest86+ if I'm using UEFI?"

After having installed the 64bit version of Ubuntu 12.04 on my Lenovo B570 I ran into the same problems I had when installing 11.10 with Grub not playing nicely with a uEFI system. I used the same technique as last time to solve the problem (using a Super Grub Disc LiveCD session to repair Grub) and my system happily dual boots between Ubuntu and Windows 7

However now when I boot up the Grub menu only displays

  • Ubuntu, with Linux 3.2.0-24-generic
  • Ubuntu, with Linux 3.2.0-24-generic (recovery mode)
  • Previous Linux versions
  • Windows 7 (loader) (on /dev/sda1)
  • Windows Recovery Environment (loader) (on /dev/sda4)

I no longer see the option to use Memtest86+ which was there previously, having checked in the Ubuntu Software Center I can see that the package is installed, but how to I make the option to run it once again appear in the Grub menu?

I've tried:

sudo update-grub 

which doesn't make any difference.

sudo chmod +x /etc/grub.d/20_memtest86+ 

results in:

chmod: cannot access /etc/grub.d/20_memtest86+': No such file or directory

and entering

ls /etc/grub.d/

results in:

00_header        10_linux      30_os-prober  41_custom
05_debian_theme  20_linux_xen  40_custom     README
  • Try adding the script as detailed below, copied it from my machine, do the chmod +x and grub update and see if that works. I see you did - welcome. – 23 93 26 35 19 57 3 89 Apr 27 '12 at 20:19
18

Try opening a terminal and running

sudo chmod +x /etc/grub.d/20_memtest86+
sudo update-grub

Check to see if it's there

grep memtest /boot/grub/grub.cfg

Just done the same as I had it disabled

hob@hob-HP-dx5150-MT:~$ cat /boot/grub/grub.cfg |grep memtest
hob@hob-HP-dx5150-MT:~$ sudo chmod +x /etc/grub.d/20_memtest86+
[sudo] password for hob: 
hob@hob-HP-dx5150-MT:~$ sudo update-grub
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-3.2.0-24-generic
Found initrd image: /boot/initrd.img-3.2.0-24-generic
Found linux image: /boot/vmlinuz-3.2.0-23-generic
Found initrd image: /boot/initrd.img-3.2.0-23-generic
Found memtest86+ image: /boot/memtest86+.bin
Found Ubuntu 11.10 (11.10) on /dev/sda6
Found Trisquel 5.5 (5.5) on /dev/sda8
Found Ubuntu 12.04 LTS (12.04) on /dev/sda9
done
hob@hob-HP-dx5150-MT:~$ cat /boot/grub/grub.cfg |grep memtest
### BEGIN /etc/grub.d/20_memtest86+ ###
menuentry "Memory test (memtest86+)" {
    linux16 /boot/memtest86+.bin
menuentry "Memory test (memtest86+, serial console 115200)" {
    linux16 /boot/memtest86+.bin console=ttyS0,115200n8
### END /etc/grub.d/20_memtest86+ ###

You could try creating the file if it's not there, using nano in a terminal

sudo nano /etc/grub.d/20_memtest86+

or with a gui editor

gksudo gedit /etc/grub.d/20_memtest86+

Fill it with

#!/bin/sh
set -e

if [ -f /usr/lib/grub/grub-mkconfig_lib ]; then
  . /usr/lib/grub/grub-mkconfig_lib
  LX=linux16
elif [ -f /usr/lib/grub/update-grub_lib ]; then
  . /usr/lib/grub/update-grub_lib
  LX=linux
else
  # no grub file, so we notify and exit gracefully
  echo "Cannot find grub config file, exiting." >&2
  exit 0
fi

# We can't cope with loop-mounted devices here.
case ${GRUB_DEVICE_BOOT} in
  /dev/loop/*|/dev/loop[0-9]) exit 0 ;;
esac

prepare_boot_cache="$(prepare_grub_to_access_device ${GRUB_DEVICE_BOOT} | sed -e "s/^/\t/")"

if test -e /boot/memtest86+.bin ; then
  MEMTESTPATH=$( make_system_path_relative_to_its_root "/boot/memtest86+.bin" )
  echo "Found memtest86+ image: $MEMTESTPATH" >&2
  cat << EOF
menuentry "Memory test (memtest86+)" {
EOF
  printf '%s\n' "${prepare_boot_cache}"
  cat << EOF
    $LX $MEMTESTPATH
}
menuentry "Memory test (memtest86+, serial console 115200)" {
EOF
  printf '%s\n' "${prepare_boot_cache}"
  cat << EOF
    $LX $MEMTESTPATH console=ttyS0,115200n8
}
EOF
fi

#if test -e /boot/memtest86+_multiboot.bin ; then
#  MEMTESTPATH=$( make_system_path_relative_to_its_root "/boot/memtest86+_multiboot.bin" )
#  echo "Found memtest86+ multiboot image: $MEMTESTPATH" >&2
#  cat << EOF
#menuentry "Memory test (memtest86+, experimental multiboot)" {
#EOF
#  printf '%s\n' "${prepare_boot_cache}"
#  cat << EOF
#   multiboot   $MEMTESTPATH
#}
#menuentry "Memory test (memtest86+, serial console 115200, experimental multiboot)" {
#EOF
#  printf '%s\n' "${prepare_boot_cache}"
#  cat << EOF
#   multiboot   $MEMTESTPATH console=ttyS0,115200n8
#}
#EOF
#fi

Make sure to run the chmod +x command on it afterwards.

I'd be a bit concerned that it's missing though - do you have everything else in grub.d ?

ls /etc/grub.d/


00_header        10_linux.bak       20_memtest86+  41_custom
05_debian_theme  10_linux.dpkg-old  30_os-prober   README
10_linux         20_linux_xen       40_custom
  • sudo chmod +x /etc/grub.d/20_memtest86+ resulted in: chmod: cannot access /etc/grub.d/20_memtest86+': No such file or directory – coversnail Apr 27 '12 at 14:34
  • 1
    I found 20_memtest86+ lurking in /etc/grub.d.bak/ somehow. Moved it into place, updated GRUB and everything worked fine for me. – Naftuli Kay Jan 8 '13 at 7:29
  • 3
    update-grub doesn't find memtest binary no matter what I do :( – expert Dec 17 '15 at 18:28
  • 2
    isn't this because the GPL versions of memtest don't support EFI? So if you are booting through EFI, there is no way to get memtest to work using what's shipped with Ubuntu?? – Jeff Atwood Feb 23 '17 at 9:37
  • 1
    I got the following, X@ubuntu:~$ cat /boot/grub/grub.cfg | grep memtest ### BEGIN /etc/grub.d/20_memtest86+ ### ### END /etc/grub.d/20_memtest86+ ### – user1945827 Apr 26 '17 at 21:30
13

I had the same issue, and due to the fact that I have EFI on my laptop the memtest86+ version 4.x shipped by ubuntu won't work, since EFI is only supported by version 5 and newer.

The latest versions are non-GPL and must be downloaded manually from the memtest website(they have ISO and USB images), but at least they are free of charge.

  • 1
    memtest86.com/download.htm – Marcos Apr 16 '15 at 22:56
  • The latest versions are non-GPL and must be downloaded manually from the memtest website(they have ISO and USB images), but at least they are free of charge. memtest86 is non-GPL and proprietary and memtest86+ is GPL. – Ramchandra Apte Aug 12 '15 at 5:33
5

I didn't managed to make this work in 2 days, then I checked Synaptic for grub packages... Seems to be, that the absence of package grub-imageboot are the root of the problem.

sudo apt-get install grub-imageboot
  • I tried this and it didn't work. – Hitechcomputergeek Aug 19 '15 at 19:44
  • 1
    Found memdisk: /boot/memdisk Imagepath /boot/images not found – Aaron Franke May 15 '16 at 18:39
5
apt-get install memtest86+

This will automatically reconfigure grub and add the entry to the boot menu.

If you get the error memtest86+ is already the newest version then use sudo apt-get install --reinstall memtest86+

If all else fails you can get a bootable ISO that you can burn to a CD and boot from. Of course if you are booting UEFI you should be here instead.

  • For Ubuntu 16.04 server this was exactly the solution. Without apt-get install memtest86+ mentioned file /etc/grub.d/20_memtest86+ was not present on my system. – mstrap Jul 17 '17 at 8:47
  • @mstrap, it was the solution for me too. I don't understand why my answer was downvoted two times. – Michael Franzl Jul 18 '17 at 10:44
  • 1
    This solution did not work for me - the above command received a memtest86+ is already the newest version message. I suspect this solution only works for non UEFI systems while the original question is specifically regarding memtest on UEFI systems. – JayDin Jan 1 '18 at 23:23
  • 1
    This didn't work for me either, like JayDin memtest was already installed. I used synaptik package manager to remove memtest, rebooted then re-installed it. This fixed the problem for me. – user111667 Mar 4 at 4:36
1

This what I did to add the now latest (non free) memtest86+ to the grub boot menu for UEFI booting. Current memtest version is 8.2. Tools needed: Disk Image Mounter and grub-customizer, the latter is only for convenience :) Files: memtest binary (see below)

  1. Download the memtest binary from: https://www.memtest86.com/download.htm The 'Image for creating bootable USB Drive on a Windows/Linux/Mac system' is fine.
  2. Extract the IMG file (memtest86-usb.img)
  3. open the img file with disk image mounter (right mouse button on Ubuntu)
  4. from the mounted image extract /EFI/BOOT/BOOTX64.efi
  5. make memtest86 boot directory:
    sudo mkdir /boot/efi/EFI/memtest86
  6. copy the BOOTX64.efi to your new folder on the boot partition (eg /boot/efi/EFI/memtest86)
  7. open grub-customizer
  8. Add menu item, give it a name, choose type: other
  9. add the following boot sequence (assuming you boot from hd0):
insmod part_gpt
insmod fat
set root='hd0,gpt2'
if [ x$feature_platform_search_hint = xy ]; then
  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt2 --hint-efi=hd0,gpt2 --hint-baremetal=ahci0,gpt2  1A22-970F
else
  search --no-floppy --fs-uuid --set=root 1A22-970F
fi
chainloader /EFI/memtest86/BOOTX64.efi
  1. save and quit grub-customizer

  2. reboot and enjoy Memtest86

  • For others/me: #3 Disk Image Mounter = gnome-disks. #6 must be root. #8 Why is type other not memtest? #9 how do you know if you boot from hd0? [click edit on your boot drive entry and copy the entry for that setroot]. Thanks for this excellent answer btw. – dez93_2000 Jul 12 at 17:34
  • If one's ubuntu root is hd2 then presumably you change the 0 to 2 in 4 places, inc ahci? Regardless I get error no such device 1A22-970F & file '/EFI/memtest86/BOOTX64.efi' not found. File is defo in /boot/efi/EFI/memtest86/ . Any thoughts? Cheers – dez93_2000 Jul 12 at 17:50
  • 'error disk hd2,gpt2 not found' now appears with 'no such device'; file not found doesn't appear. not sure why it would change... – dez93_2000 Jul 12 at 18:06

protected by Community Mar 11 '15 at 15:09

Thank you for your interest in this question. Because it has attracted low-quality or spam answers that had to be removed, posting an answer now requires 10 reputation on this site (the association bonus does not count).

Would you like to answer one of these unanswered questions instead?

Not the answer you're looking for? Browse other questions tagged or ask your own question.