Running `memtest86+` on an EFI system

I upgraded to a pair high frequency memory sticks (3600 MT/s), and my desktop has been a unstable since then. So I wanted to run memtest86+ from the grub menu, but when I run memtest-setup as root, I get warned that running memtest on an EFI system isn’t supported. I searched a bit online, but couldn’t really find any explanation or resolution. So I was wondering if anyone has any suggestions what I could do?

2 Likes

I use Ventoy for that. I followed the instructions for installing Ventoy, then simply copied memtest86-usb.img from the downloaded memtest86-usb.zip onto the partition created by install of Ventoy.
While the documentation of Ventoy seems unclear for things other than .iso files, it works fine for this .img file.
I expect the same .img file could be put almost anywhere and then loaded by a menuentry from grub.
Maybe it won’t work for secure boot, but it certainly works for EFI without secure boot.
If its setup doesn’t work, it isn’t hard to manually create the menuentry you need.

For the non USB setup, creating the menuentry and copying the img file is all that is needed for “setup”.

3 Likes

Thanks! I have Ventoy on a USB already, I’ll try it out and see how far I get :slight_smile:

I remember a discussion in the devel mailing list. memtest86+ shipped by the installation iso doesn’t work on EFI systems and the discussion was about replacing it with something else. But I don’t know how the story had ended.

https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/thread/XPC4LGVQPJTUFF57PHOPKVB6ZK7AYVBX/

1 Like

Thanks a lot, that worked nicely! Simply copying the images to the Ventoy drive was enough. I tried both the propietary (memtest86) and the FOSS (memtest86+) version successfully. For the FOSS version, I downloaded the ISO from the project homepage.

Unfortunately for me, I do see lots of errors in pass 1 already. I think I bought the wrong RAM for my CPU. I’ll either underclock it, or maybe try to return it.

@alciregi Interesting discussion, although not sure why Chris suggests the latest memtest86+ doesn’t support EFI. The version in the Fedora repo is just old, the latest upstream version does support EFI. Maybe that wasn’t the case in 2020. I’ll file a bug report to update the package.

Thanks again everyone :slight_smile:

Edit: bug report

1 Like

If think you need to replace the memory, please do a few things first.

  1. Check the manual for the motherboard to verify what RAM it supports.
  2. Make sure the bios on the mobo is that latest available. Sometimes newer & faster memory or CPUs can be supported with an updated bios.
  3. Check the bios settings to see what options may be available. I have a special selection in my bios to support the higher speed memory and without choosing that it defaults to a basic 3200 speed.

What mobo is it? Brand and model? What version of firmware is installed?

Sorry, I didn’t provide these details here as I was getting help for the hardware side on a hardware forum. The short of it is, my CPU (a Ryzen APU) doesn’t support anything faster than 3200 (that’s what I was using, and the new one is 3600). Instead of under-clocking and tuning the timings to get high throughput, I decided to return the pair, and buy something that matches my existing pair. That way I at least have my size upgrade (more important to me), giving up on the throughput (old one is already pretty good). In the end that was also cheaper :slight_smile:

1 Like

Normally the CPU is not what determines supported memory speed. That is usually controlled by the mobo and bios firmware. My CPU is a ryzen 5 3600 on a B550M Pro mobo and the mobo supports the 3600 RAM.

Glad you were able to sort it out and that things are now working.

Just one final question → did you by chance try installing and mixing the 2 different chips or only use the higher speed ones?

To be precise, it’s the lowest common denominator of the two. For me, my mobo supports 3600 (B550M), but the CPU doesn’t (Ryzen 5 PRO 4650G). I think all Ryzen APUs have this limitation, the limit is lower than other non-APU units in the same generation. I can’t afford any of the modern discrete GPUs, so this has been my compromise for a few years :frowning:

That would be a silly mistake :stuck_out_tongue:. I had 2x8GB 3200 CL16, replaced them with 2x16GB 3600 CL16. Since that was a mistake, I’m now falling back to 4x8GB 3200 CL16 :slight_smile:

That was just an off chance question. I have known persons who tried using mismatched memory then wondered why their systems were at best flaky.

To be precise precise :slight_smile:

The memory speed should match the infinity fabric speed, anything else will have significant performance impact. Since memory is DDR (double data rate) you want to divide the memory speed by 2 to match the infinity fabric. So for 3200 your infinity fabric speed needs to be able to reach 1600.

Underclocking memory is generally fine and you could spend hours cranking down the timings but as you pointed out, the slower speed memory is cheaper, so it just depends on where you want to spend time/$$$.

1 Like

Ya, time is in shorter supply :stuck_out_tongue:

BTW, do you know if BIOSes have this option? If so, what is it usually called? I know this detail, but haven’t seen the corresponding option. Back in the days when the I/O die wasn’t in the package, you would have the north bridge, and it was tweakable from the BIOS. I believe there was a multiplier of sort.

Depending on BIOS manufacturer it may have different names but look for something called FCLK.

1 Like

Most of the better motherboards have a bios that is able to set memory and CPU timing factors as well as adjusting voltages for both memory and CPU. Adjusting the memory settings is usually in the same area as adjusting values for the CPU.

Found it :slight_smile: