在Ubuntu 64位的live CD中,memtest选项在哪里?

我正在寻找Ubuntu 12.04 64位Live CD上的memtest选项,但我只看到"试用Ubuntu而不安装"、"安装Ubuntu"和"检查光盘是否有缺陷"这几个选项。我错过了什么?

enter image description here

编辑:这个问题与当前的Ubuntu版本(amd64别名64位,支持UEFI模式)有关。在BIOS模式下,引导菜单选项“测试内存”仅可用。

请点击以下链接查看如何在Ubuntu 12.04 Live CD上运行内存测试,看看是否适用于您的情况。 - RolandiXor
不行。谷歌把我带到那里,我已经试过了。 - Drise
7个回答

Memtest86+

如果您以BIOS模式(也称为CSM或传统模式)启动计算机,memtest86+可以正常工作。

编辑 { 当关闭安全启动时,版本6的memtest86+也可以在UEFI模式下工作。 }

如果您以UEFI模式启动计算机,旧版本的memtest86+将无法工作,因为它们是16位程序。

www.memtest.org

Memtest86

原始分支的memtest86(不带加号)可以在UEFI模式下运行。有一个免费版本(但我认为它不是开源的,因此不能包含在Linux发行版中)。

www.memtest86.com

通过Ubuntu的启动菜单进行内存测试

Memtest86+已经包含在大多数Ubuntu iso文件中,例如

ubuntu-16.04.1-desktop-amd64.iso

在BIOS模式(别名CSM别名传统模式)下,当您从DVD光盘或USB闪存驱动器启动计算机时,有一个选项'测试内存',克隆自iso文件的副本。

在以BIOS模式安装的Ubuntu 16.04.x LTS系统中,当您通过grub菜单启动计算机时,也有'测试内存'选项。

但是,当您以UEFI模式启动计算机时,没有使用Memtest86+的选项(因为它无法工作)。

独立的Memtest86+镜像文件

编辑{

Memtest86+版本6(及更高版本)可以作为独立的zip文件下载,其中包含一个iso文件。这个iso文件可以直接克隆到USB驱动器中,制作成可引导的memtest86+系统,并且可以在UEFI模式和旧的BIOS模式(别名传统模式)下运行。

www.memtest.org

}

如果您使用的是旧版的Memtest86+,您可以测试4 GiB的内存。如果您的计算机内存超过4 GiB,您需要使用5.01版本或更高版本。

5.01版本的改进:

  • 增加了对X64 CPU最高支持2 TB的内存

(在2020年9月还有一个beta版本,5.31b。)

您可能需要一个小型独立的Memtest86+ iso文件或其他镜像文件来创建一个可启动的USB驱动器。

我在www.memtest.org/#downiso上没有找到任何易于在Linux中安装到USB的文件。'memtest86+-5.01.iso'文件不是混合的iso文件,无法转换成这样的文件。

$ isohybrid memtest86+-5.01.iso
isohybrid: memtest86+-5.01.iso: unexpected boot catalogue parameters

这是一个非常简化的ISO文件。我在VirtualBox中进行了测试,它可以作为光盘使用。
但是在这里还有一个“USB键自动安装程序(Win 9x/2k/xp/7)”。

www.memtest.org/download/5.01/memtest86+-5.01.usb.installer.zip

我在Windows中将它提取到了一个USB闪存驱动器上,并将这个系统克隆成了一个压缩的镜像文件,然后上传到了...

dd_memtest-plus-5.01_33M.img.xz

$ md5sum dd_memtest-plus-5.01_33M.img.xz
7f91882ab90df13a938749176a0ff4c4  dd_memtest-plus-5.01_33M.img.xz

可以直接在Linux中使用mkusb, dusDisks(别名为gnome-disks)来提取它(还有其他克隆工具,可以将提取的文件作为输入文件进行提取和克隆,需要两个步骤)。
安装了mkusb和/或dus之后,您可以通过Dash、菜单项或以下命令行来执行此操作。
dus dd_memtest-plus-5.01_33M.img.xz

现在的Memtest86+支持UEFI吗? - rogerdpack
@rogerdpack,谢谢你提醒 :-) 根据它的网站显示,Memtest86版本6在UEFI模式下运行,至少在关闭安全启动时是如此。我会进行验证,并在之后修改我的回答。 - sudodus
1已经检查和修改完毕。再次感谢 @rogerdpack :-) - sudodus
1使用Ubuntu-22.04.3-desktop-amd64.iso的USB闪存驱动器,即使关闭了安全启动,也没有显示内存测试菜单项,我不得不制作一个带有memtest86+ 6.2镜像的USB闪存驱动器,那个可以正常工作。 - undefined

根据这个错误报告的第2和第3条评论得知:
  • Grub的EFI版本不支持加载实模式二进制文件。
  • 在EFI系统上不要显示GRUB菜单选项,因为它不会起作用(参见LP#883017)。

所以从Live CD启动时暂时不起作用。根据如何将Memtest86+选项添加回Grub菜单?这个主题,你可以稍后添加它,但我怀疑它是否有效:已删除的评论提到你仍然会得到Error unknown command Linux16错误。


我还发现了this
问题不在于16位或32位的引导协议,主要问题是进行内存初始化所需的众多BIOS调用。EFI是一个不错的想法,但我第一次听到“EFI将在未来几个月内取代BIOS!”是在2002年的英特尔开发者论坛上。十年后,UEFI取代了EFI,但BIOS仍然存在于99%的PC主板中。构建一个支持EFI的Memtest86+是一项艰巨的任务,需要大量代码重写,并且该版本将与传统BIOS不兼容。我不会考虑同时支持两个分支,因此当Memtest86+转向EFI时,BIOS版本将停止更新。当标准PC组件中不再提供BIOS时,我将开始着手进行EFI修订。

1所以,为了使用memtest86+(并在启动菜单中看到它),你可能需要将系统设置为以传统BIOS模式启动。在我的情况下,我还必须在给Ubuntu的live USB驱动器创建一个DOS/MBR分区表之后重新创建它。(我的计算机拒绝以传统模式引导GPT分区。) - ʇsәɹoɈ

现在可用专有的PassMark MemTest86 5.0 EFI版本的测试版。

http://www.memtest86.com/download.htm

这个应该可以从GRUB、rEFInd、gummiboot等启动,尽管你可能需要显式地添加一个菜单项来实现。(当我写这篇文章时,这显然还没有被集成到发行版中。)

现在Memtest86+也有UEFI版本了... - rogerdpack

我能够通过在启动时按下一次性引导菜单键并从列表中选择非UEFI USB条目(在这里阅读到只适用于非UEFI的答案后)来从Ubuntu-18.04 live-USB上运行memtest86+。

对我来说,首先我必须进入BIOS设置,并确保它设置为以传统模式而不是UEFI模式启动。奇怪的是,关于USB的另一个BIOS设置(不在引导菜单下)必须保留为UEFI,否则在启动时根本看不到USB驱动器。此外,我还必须做两件事情,其中一件肯定起作用了,才能真正给我提供Grub菜单,这是在选择从USB启动一次后:我按住Shift键,当我在屏幕底部看到两个小图标时,我按下一个随机的字母键。最后,我成功地获得了带有memtest+的grub菜单! - Starman
谢谢,这很有帮助。我启用了“UEFI和传统”(传统意味着BIOS,我猜),然后启动,它没有显示“测试内存”的选项,然后我选择了“选择下一个启动设备”,然后它显示了相同的grub内存,但现在有一个测试内存的选项,Ubuntu 22.10。 - rogerdpack

我想要一个带有MemTest86的Ubuntu Live-USB闪存驱动器,适用于64位、全UEFI系统,我似乎成功了。

这是一个旧的问题帖子,但这似乎仍然是一个问题。(我花了一些时间才找到一个可行的解决方案。)


这是我做的:

我制作了一个新的Ubuntu启动盘

在Windows 10工作站上,我使用最新版本的RufusUbuntu 17.04 (x64) Desktop映像烧录到一张4GB的USB启动盘上。在Rufus中,我选择了以下选项:

  • GPT用于UEFI分区
  • FAT32文件系统(我更喜欢exFAT,但Rufus v2.17不支持ISO镜像以外的FAT32)
  • Create a bootable disk using选项中选择ISO Image而不是FreeDOS

我将MemTest文件复制到其中

我下载了一个兼容UEFI的(闭源)免费工具PassMark MemTest86。然后我做了以下操作:
  • 将下载的memtest86-usb.zip解压到文件夹.\memtest86-usb
  • .\memtest86-usb\memtest86-usb.img(152.7MiB)找到解压后的磁盘映像
  • 将其复制到我的新Ubuntu启动盘的\boot文件夹中(挂载在例如驱动器E:),创建如下路径:
    • E:\boot\memtest86-usb.img

我配置了引导加载程序

最后,我修改了启动盘上的引导选项菜单。Ubuntu 17.04使用grub2引导加载程序。它的菜单选项列表配置在E:\boot\grub\grub.cfg中。我在该文件末尾添加了以下行(创建了一个新的引导选项列表项):

menuentry "MemTest86 (long load time, be patient)" {
    loopback loop /boot/memtest86-usb.img
    chainloader (loop,1)/EFI/BOOT/BOOTX64.efi
}

注:

  1. 在进行编辑时,不应使用Windows的记事本。它与“Unix模式”文本文件兼容性差,如果尝试保存更改,会破坏换行符。
  2. BOOTX64.efi是一个64位的EFI可执行二进制映像。在文件系统“looped-back”到memtest86-usb.img中有一个32位的EFI文件。它被命名为BOOTIA32.efi。你可以为此创建另一个条目,但我不需要它。
  3. 从在grub2中选择该条目到屏幕上出现任何正面反馈似乎需要很长时间。在我的基于Intel Atom X5-Z8350的机器上,屏幕会变黑大约30秒钟,然后MemTest86过程开始可见地启动。然后,会运行十几个系统扫描步骤,然后才能看到熟悉的MemTest屏幕。(这可能是由于模拟的文件系统、多个引导加载程序交接阶段等原因。)

在解决这个问题的过程中,我从一个与之类似并且可以被视为重复问题的答案this answer中获得了一些有用的线索。(我没有系统认证来将其标记为重复问题。)而且,在选择"可引导USB键盘驱动创建软件"时,我通过各种 资源对Rufus工具获得了一些安心感。


我还能找到这个选项,使用Ubuntu 18.04桌面版的USB启动盘。奇怪的是,我也尝试了使用20.04镜像,看起来似乎可以工作,但无论如何memtest86+都会很快冻结。而18.04镜像没有这样的问题。两者都是版本5.01。很奇怪。可能是因为我使用了两个不同的USB启动盘,或者可能是我的内存有一些微妙的故障。很难确定发生了什么。 - pattivacek

imgpath=memtest86-usb.img grubcfg=/tftpboot/grub/grub.cfg loop=$(losetup --show -Pf ${imgpath}) mkdir -p /mnt/memtest mount ${loop}p2 /mnt/memtest cp /mnt/memtest/EFI/BOOT/BOOTX64.efi /tftpboot/memtest.efi umount /mnt/memtest losetup -d ${loop} cat << EOF >> $grubcfg menuentry 'MemTest86 (x64)' { chainloader /memtest.efi } EOF
这基本上就是我所做的,它运行得很好。 唯一的问题是有些机器的分辨率非常高,导致显示很小。
非常感谢您提供这个解决方案的想法。 在找到您的帖子后,我搜索了memtest中的/EFI/BOOT/BOOTX64.efi,并找到了基本上与我发布的指令相同的内容。

我作为一个普通人无法理解你在这里做了什么... :) - rogerdpack