如何通过Ubuntu检查RAM中的错误?

我用一个3.6GB的USB闪存驱动器运行着Ubuntu 11。系统有4GB的内存和空白的硬盘(使用DBAN工具擦除)。
如何检查我的内存是否没有错误?有没有一种通过Linux命令来保证检查的方法?如果没有,了解为什么会很好。

3在启动Ubuntu之前,访问GRUB屏幕并选择内存测试。 - Uri Herrera
1你可以在进入Linux后使用memtester。例如,输入sudo memtester 1024 5。这将分配1024MB的内存,并重复测试5次。 - Ricky Hewitt
6个回答

通过安装memtester软件包,您可以在系统仍在运行时检查错误。无需重新启动,只需运行该应用程序即可。
要安装它,请打开终端并键入:
sudo apt install memtester

你可以这样使用它:
sudo memtester 1024 5

这将分配1024MB的内存,并重复测试5次。

更新

  • 如果您有更多的RAM,如4GB或8GB,您可以自行决定要为测试分配多少内存。
  • 由于您的操作系统和当前运行的进程可能会占用一些内存,请检查可用的空闲内存并分配给memtester。
  • 如果您使用的是32位系统,即使您有更多的RAM(32位系统不支持超过3.5GB的RAM),也无法测试超过4GB的内存。
  • 如果您的系统非常繁忙,但仍然分配了大于可用内存的内存量,那么测试可能会使系统陷入僵局并导致系统停止工作,请注意这一点。
  • 以root用户身份运行memtester,这样memtester进程就能够分配内存,一旦它获得该内存,它将尝试应用锁定。如果指定的内存不可用,它将尝试自动减少所需的RAM并尝试使用mlock进行锁定。
  • 如果您以普通用户身份运行,它无法自动减少所需的内存量,因此无法锁定,它会尝试占用指定的内存并开始耗尽所有系统资源。

20这是否意味着只有一部分内存被测试,而其余部分则未经测试?我该如何确保所有的内存都得到测试? - donquixote
3只有那部分记忆被测试! - MajesticRa
6顶了,但除非我漏掉了什么,否则使用memtester无法对整个内存进行彻底的测试,因为系统会完全无响应(甚至memtester未能要求您所要求的全部内存)。所以我想memtester的使用场景是在尝试使用一些高级参数来测试特定的内存区域,而这我还没有探索过。否则,要进行全面扫描,请使用在加载操作系统和任何用户程序之前运行的UNetbootin(这样响应性问题将不再重要)。 - Marcus Junius Brutus
所以,如果我们有4GB / RAM,我们应该至少测试3900MB,而不仅仅是1024MB。 - Goran_Ilic_Ilke
@Goran_Ilic_Ilke,不是的。这取决于您系统中有多少可用的内存。Memtester不仅用于检查内存健康状况,还用于检测CPU和过热相关问题。 - Raja G
今天我在这台笔记本电脑上设置了3072MB和1次迭代的memtester,因为我有4GB的内存。我尝试过,但memtester在我的情况下无法超过3072。 - Goran_Ilic_Ilke
@Goran_Ilic_Ilke 我建议提供您系统中可用的空闲内存。 - Raja G
非常有帮助的回答!谢谢你..点赞! - undefined

Ubuntu Live CD 包含一个名为 Memtest86+ 的工具,它可以测试您计算机的内存。从 Ubuntu LiveCD 启动,按住 Shift 键,这将弹出 GRUB 菜单。选择内存测试。

enter image description here


19你甚至不需要有安装光盘。你只需在 Linux 启动期间反复按 Shift 键,就能进入完全相同的菜单。 - iFreilicht
5Ubuntu Live CD现在不再提供这个选项。 - machineghost
4显然,如果您的计算机以UEFI模式运行(“因为它是一个16位程序”),则无法使用memtest86+(在grub中不会显示)。另一种选择是memtest86(不带“+”)版本,它不是FOSS,但仍提供免费版本。他们声称您可以通过grub使其工作,但我无法弄清楚... 但是,在USB存储设备上设置很容易。请参阅[https://askubuntu.com/questions/917961/can-i-boot-memtest86-if-im-using-uefi]。 - bct
1@bct 你的评论是最重要的,大多数人可能不会注意到。显然,当我们使用memtest86+时,我们非常焦虑和忙碌。然而,如果你从https://www.memtest86.com/tech_booting-cd-dvd.html下载iso文件并将其刻录到USB驱动器上(我使用了`etcher`),我们可以制作一个可引导的USB用于UEFI系统。 - Ahmad Ismail

不需要 Memtest86+:

1. 重新启动你的电脑:`reboot`。 2. 在GRUB引导屏幕上(使用UEFI,请按Esc键)。 3. 对于4次测试,临时地添加memtest=4 内核参数
memtest=        [KNL,X86,ARM,PPC,RISCV] 启用内存测试
                格式:<整数>
                默认值:0 <禁用>
                指定要执行的内存测试次数。每次测试从给定的一组模式中选择另一个测试模式。Memtest会使用该模式填充内存,验证内存内容,并保留检测到的坏内存区域。
   
截图

内核必须配置为CONFIG_MEMTEST=y。 - d4rwel

我发现mprime是一个很好的测试内存的工具: ftp://mersenne.org/gimps/

(mprime也可以用来进行CPU压力测试)

另外,可以使用软件包stress-ng在您的计算机上运行各种类型的应力测试(包括内存测试)。


如何使用stress-ng测试RAM - chovy

pcmemtest-86是Memtest86+的一个分支,而Memtest86本身也是一个分支。

与它们类似,它是一个彻底的低级别RAM测试,在系统重新启动后从GRUB菜单启动。

它适用于EFI系统(即具有BIOS设置UEFI的RAM测试工具),并且是自由开源软件。

pcmemtest-86可从Ubuntu 22.04 LTS及以后版本中获得。

安装方法:

sudo apt update
sudo apt install pcmemtest

重新启动您的系统,以在GRUB菜单中看到它的条目。(如果您的计算机启动时没有显示GRUB菜单,请在启动过程中按住Shift键。)

重新启动您的计算机,在GRUB引导屏幕上选择memtest。

13这似乎假设我们在启动时会看到GRUB引导屏幕。就我个人而言,我并没有看到。 - 42-
1@42- 开机时按住SHIFT键。 - Denis Kulagin
6memtest86+不适用于EFI系统,只适用于BIOS。你可以寻找专有的EFI替代方案。 - Artyom
对于EFI系统,在启动时按住ESC键。 - IronEagle
1@IronEagle 目前UEFI memtest86+还不支持。没有机会。 - stephanmg
Memtest对我来说有点奇怪,两个小时了还是停留在0%上,也许我们需要一个星期才能完成整个测试。 - Goran_Ilic_Ilke