#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries. Simply type the
# menu entries you want to add after this comment. Be careful not to change
# the 'exec tail' line above.
menuentry 'memtest86' {
insmod part_gpt
insmod fat
set root='hd0,gpt1'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt1 --hint-efi=hd0,gpt1 --hint-baremetal=ahci0,gpt1 4418-37D3
else
search --no-floppy --fs-uuid --set=root 4418-37D3
fi
chainloader /EFI/memtest86/BOOTX64.efi}
在上图中,我们这样做了set root='hd0,gtp1,因为我们的 EFI 分区被标记为 device name = sda1。根据 grub2 约定...
是的,有,现在是Memtest86+ v6本身。这是 Memtest86+ 的新版本,基于PCMemTest,是对 Memtest86+ 的重写,可以从 UEFI 启动。它的作者仍然将其标记为尚未准备好投入生产,但它确实适用于许多配置。
Memtest86+ v6 的二进制文件可在 memtest.org上获得。
或者,Linux 内核本身包含一个内存测试工具:该
memtest
选项将运行最多 17 种模式的内存检查(当前)。如果您添加memtest
到内核启动参数,它将在启动时运行所有测试,并保留任何失败的地址以便它们不被使用。如果您想要更少的测试,您可以指定模式的数量(memtest=8
例如)。这不像 Memtest86+ 的测试那么广泛,但它仍然给出了相当不错的结果。
一些发行版内核不包含此功能;
CONFIG_MEMTEST
您可以通过在内核配置中查找来检查它是否可用(尝试/boot/config-$(uname -r)
)。如果您指定,内核不会抱怨memtest
但它不支持它;当它运行时,您应该会看到类似的输出在内核启动时(或稍后在其启动日志中)。
你可以使用 QEMU 来感受一下:
(或任何
qemu-system-...
适合您的架构的),并寻找“early_memtest”。要在内核崩溃后退出 QEMU,请按Ctrla, c, q, Enter。您可以在 Ubuntu 上将最新的memtest86的免费软件(免费啤酒)版本添加到 UEFI Grub2 中。
根据教程,我在远程 Ubuntu 16.04 服务器上采取以下步骤将memtest86添加到 UEFI Grub2:
首先,请注意 grub2 既不显示 memtest86 也不显示 memtest86+: 尽管事实上我的引导文件夹显然有 memtest86+。见下图。
下载memtest86-usb.zip到笔记本电脑
将 zip 文件发送到远程机器,然后将其解压缩到某个地方(例如
/home/<username>/memtest86-usb/
)我们需要分析 memtest86-usb.img
fdisk -lu memtest86-usb.img
以查看它的安装偏移量。 我们要挂载上面输出中列出的第二个设备,memtest86-usb.img2
. 上图显示每个扇区为 512 Bytes,memtest86-usb.img2
从扇区 514048 开始。因此它从 514048*512 Bytes=263192576 Bytes 开始。创建一个文件夹(例如
/home/<username/memtest-tmp
)并挂载它:使用 lsblk 查看有关 EFI 分区的详细信息以及挂载的 .img 文件 在上图中,我们注意到以下内容:
/boot/efi
.legacy
或UEFI
在 BIOS 设置中。我之前已将其设置为legacy
,因此该/boot/efi
文件夹不存在。将引导模式更改为UEFI
允许我查看该/boot/efi
文件夹并验证 EFI 分区是否已安装在那里。/home/<username>/memtest-tmp
.接下来,我们验证挂载点是否包含
EFI/BOOT
文件夹并查看其内容:接下来,我们同时复制并重命名
/home/<username>/memtest-tmp/EFI/BOOT
为/boot/efi/EFI/memtest86
(假设目标文件夹/boot/efit/EFI/memtest86
):接下来我们创建一个 GRUB 链加载器条目。创建文件/etc/grub.d/42_memtest,内容类似如下:
在上图中,我们这样做了
set root='hd0,gtp1
,因为我们的 EFI 分区被标记为 device name = sda1。根据 grub2 约定...insmod part_gpt
fdisk -l
/boot/grub/grub.cfg
另请注意,我们使用了 EFI 分区的UUID,它可以从
blkid
显示您机器上所有分区的 UUID 的命令中获得。我们将 grub2 更新为
update-grub2
.重新启动,你应该在 grub2 中 看到memtest86
Memtest 6 应该与 uefi 一起使用。memtest.org 上提供了一个测试版
代码可在https://github.com/memtest86plus/memtest86plus
Memtest86+ v6.00 Beta 2 发布:2022-06-03 v6 尚未准备好投入生产!请将实际代码视为实验性代码,并预计会崩溃和冻结。预计今年夏天将发布第一个非测试版。
即使它是测试版,我也试了一下,下载了 iso,将它添加到 USB 记忆棒上,然后可以从 uefi 启动它,它运行 memtest,就像我习惯的那样。