Yet another tech blog

Booting Memtest86 with UEFI

· Read in about 3 min · (434 Words)
uefi linux systemd-boot

For a very long time I’ve been using Memtest86+ (Memtest86 fork) to test RAM modules.
Whether I was overcloking my own PC, debugging blue screens or instabilities, this was my go-to tool.

The original Memtest86 was developed by a man named Chris Brady, but was later purchased by PassMark Software, and now being actively developed by them. Memtest86+ on the other hand seems to be abandoned by now, with the latest release date being September 27, 2013. Unlike Memtest86+, Memtest86 is a non open-source software, luckily PassMark still offers a free version with most of the needed features included (feature table). So for the last few years I’ve been using Memtest86, and I get the impression it’s working as good, if not better than Memtest86+ while providing better support for new hardware (e.g., DDR4), and most importantly, provides an EFI version.

Let’s Get Down to Business

Often times I would boot Memtest86 from a USB drive or even a CD in the ancient days. This was fine for booting Memtest86 on machines other than mine. But flashing a USB drive with Memtest86 every time I needed it was just a waste of time.

Can we do better? Sure we can! Booting directly into Memtest86 from the bootloader without any external media.
I’m running Archlinux and using systemd-boot as my bootloader, I find it to be easy to configure and keeping things simple. In case you’re using a different UEFI supported bootloader you’ll need to figure out how to manage the boot entry for the Memtest86 efi file.

First we’ll need to fetch Memtest86 from here, and then set a bootloader entry for it.

# Download and extract archive
curl -O http://www.memtest86.com/downloads/memtest86-iso.tar.gz
mkdir memtest86
tar -zxvf memtest86-iso.tar.gz -C memtest86

# Extract iso
# I'm using 7z from p7zip package but you can also mount the iso to pull the files
cd memtest86
7z x Memtest86-7.2.iso

# Move the efi file to our boot partition
mv ./EFI/BOOT/BOOTX64.EFI /boot/EFI/Boot/memtest.efi

Now we need to place an entry config for the bootloader to read. With systemd-boot, all we need to do is to create a new file like this:

memtest.conf

# This file should be located at /boot/loader/entries/memtest.conf

title	Memtest86
efi	EFI/Boot/memtest.efi

With that done we can now reboot the system and behold a new entry on the bootloader’s menu, choosing it should boot directly to Memtest86.

Remarks:

  • This method should work with any efi file you might want to boot.
  • The efi path in the entry conf file is relative to the ESP (EFI System Partition).
  • Things like certain paths might vary with time or on different systems.

Comments