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

Dee*_*een 57 hardware ram 12.04

我有一个 3.6GB 的 USB 闪存/棒驱动器运行 Ubuntu 11。系统有 4GB RAM 和空白硬盘(使用DBAN 工具擦除)。

如何检查我的 RAM 中是否没有错误?有没有保证的方法可以通过一些 Linux 命令来检查?如果没有,很高兴知道为什么。

rɑː*_*dʒɑ 78

通过安装memtester包,您可以在系统仍在运行时检查系统是否存在错误。无需重新启动,只需运行该应用程序即可。

要安装它,请打开一个终端并输入:

sudo apt install memtester
Run Code Online (Sandbox Code Playgroud)

然后你可以像这样使用它:

sudo memtester 1024 5
Run Code Online (Sandbox Code Playgroud)

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

更新

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

希望这可以帮助。

  • 这是否意味着仅测试了一部分内存,而其余部分仍未测试?如何确保所有内存都经过测试? (13认同)
  • 赞成,但除非我遗漏了一些东西,否则不可能使用 `memtester` 对整个内存进行彻底测试,因为系统变得完全没有响应(甚至 `memtester` 也无法声明你要求的全部内存范围)。所以我猜“memtester”的用例是当你尝试使用一些我没有探索过的高级参数来测试特定的内存区域时。否则,对于直通扫描,请使用在加载操作系统和任何用户程序之前运行的“UNetbootin”(因此响应问题变得没有实际意义)。 (4认同)
  • 只测试那部分内存! (3认同)

Mit*_*tch 30

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

在此处输入图片说明

  • 您甚至不必拥有现场 CD。您可以在 linux 启动期间重复按 Shift 键以进入完全相同的菜单。 (15认同)
  • Ubuntu Live CD 不再带有此选项。 (3认同)
  • 如果您的计算机在 UEFI 模式下运行(“因为它是一个 16 位程序”),显然 memtest86+ 不可用。它不会出现在 grub 中。另一种选择是 memtest86(不带“+”)版本,它不是 FOSS 但仍提供免费软件版本。他们声称你可以让它与 grub 一起工作,但我无法弄清楚......但是它很容易在 USB 记忆棒上设置。见 [https://askubuntu.com/questions/917961/can-i-boot-memtest86-if-im-using-uefi] (2认同)

Pab*_*chi 6

无需Memtest86+(自v2.6.27,2008-10-09起):

  1. 重新启动计算机:reboot

  2. 在 GRUB 引导屏幕上(使用 UEFI,按Esc)。

  3. 对于 4 遍,临时添加内核 参数。memtest=4

    memtest=        [KNL,X86,ARM,PPC,RISCV] Enable memtest
                    Format: <integer>
                    default : 0 <disable>
                    Specifies the number of memtest passes to be
                    performed. Each pass selects another test
                    pattern from a given set of patterns. Memtest
                    fills the memory with this pattern, validates
                    memory contents and reserves bad memory
                    regions that are detected.
    
    Run Code Online (Sandbox Code Playgroud)

    截屏