是否有适用于 UEFI 的 memtest86+ 的免费(自由)开源替代品?

Eva*_*oll 12 uefi

鉴于memtest86+ 不与 UEFI 一起工作,是否有开源替代品或我可以从 grub 中使用的东西来测试内存?

Ste*_*itt 19

是的,在 Linux 内核本身中有:该memtest选项将运行最多 17 个模式的内存检查(当前)。如果您添加memtest内核启动参数,它将在启动时运行所有测试,并保留所有失败地址,以便不使用它们。如果您想要更少的测试,您可以指定模式的数量(memtest=8例如)。

这不像 Memtest86+ 的测试那么广泛,但它仍然给出了相当不错的结果。

某些发行版内核不包含此功能;您可以通过CONFIG_MEMTEST在内核配置中查找来检查它是否可用(尝试/boot/config-$(uname -r))。如果您指定,内核不会抱怨,memtest但它不支持它;当它运行时,你应该看到类似的输出

[    0.000000] early_memtest: # of tests: 17
[    0.000000]   0x0000000000010000 - 0x0000000000099000 pattern 4c494e5558726c7a
[    0.000000]   0x0000000000100000 - 0x0000000003800000 pattern 4c494e5558726c7a
[    0.000000]   0x000000000500d000 - 0x0000000007fe0000 pattern 4c494e5558726c7a
[    0.000000]   0x0000000000010000 - 0x0000000000099000 pattern eeeeeeeeeeeeeeee
[    0.000000]   0x0000000000100000 - 0x0000000003800000 pattern eeeeeeeeeeeeeeee
[    0.000000]   0x000000000500d000 - 0x0000000007fe0000 pattern eeeeeeeeeeeeeeee
[    0.000000]   0x0000000000010000 - 0x0000000000099000 pattern dddddddddddddddd
[    0.000000]   0x0000000000100000 - 0x0000000003800000 pattern dddddddddddddddd
[    0.000000]   0x000000000500d000 - 0x0000000007fe0000 pattern dddddddddddddddd
[    0.000000]   0x0000000000010000 - 0x0000000000099000 pattern bbbbbbbbbbbbbbbb
[    0.000000]   0x0000000000100000 - 0x0000000003800000 pattern bbbbbbbbbbbbbbbb
...
Run Code Online (Sandbox Code Playgroud)

当内核启动时(或在其启动日志中,稍后)。

您可以使用 QEMU 来感受一下:

qemu-system-x86_64 -kernel /boot/vmlinuz-$(uname -r) -append "memtest console=ttyS0" -nographic
Run Code Online (Sandbox Code Playgroud)

(或qemu-system-...适合您的架构的任何一个),并寻找“early_memtest”。要在内核崩溃后退出 QEMU,请按CtrlacqEnter