如何告诉 ubuntu 不要使用某些内存地址?

j3d*_*d1H 4 memory-test

如果措辞不当,我很抱歉,但我已经在我的一台计算机上进行了内存测试,并且某些内存地址有错误。这是我第一次搜索。如果您需要更多信息,那么我可以提供。

Ama*_*icA 10

我发现对我来说最简单、最可靠的方法是将内核参数添加到我的 GRUB 配置中memtest=4。这会增加启动时间,内核会检查你的内存,然后将它们标记为对你不利。

  1. sudo nano /etc/default/grub

  2. 更新这一行:

    GRUB_CMDLINE_LINUX_DEFAULT="quiet splash memtest=4"
    
    Run Code Online (Sandbox Code Playgroud)
  3. sudo update-grub

  4. reboot

  5. (可选)通过运行来检查它是否正常工作dmesg并查看如下日志:

    [    5.043917]   aaaaaaaaaaaaaaaa bad mem addr 0x0000000581a90000 - 0x0000000581a90010 reserved
    
    Run Code Online (Sandbox Code Playgroud)

来源


hey*_*ema 6

如果您查看/etc/default/grub,您会找到一个GRUB_BADRAM=参数,您可以在其中识别存在哪些错误的内存位置。

# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)
#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"
Run Code Online (Sandbox Code Playgroud)

设置好地址后,运行sudo update-grub应用。

注意:这GRUB_BADRAM 不适用于内核锁定(如果您有安全启动,它将被启用)。


摘自https://help.ubuntu.com/community/BadRAM#BADRAM_setting_in_Grub2 ...

Grub2 中的 BADRAM 设置

Natty 中的 GRUB2 配置文件有一行用于配置内核坏内存排除。因此,我将假设这是映射出显示错误的内存部分的首选方式。我设置的线是

GRUB_BADRAM="0x7DDF0000,0xffffc000" 
Run Code Online (Sandbox Code Playgroud)

我能找到的每个网站上的建议方法是将其设置为运行 memtest86 并让它向您显示 BadRAM 设置。memtest86 给了我一页我必须输入的东西。我可以看到所有的地址都在一个 16K 的块中,所以我只想映射那个 16K 的块。这是我生成正确条目的方式。

第一个参数很简单。那是坏内存的基地址。就我而言,我可以看到所有错误地址都大于 0x7DDF0000 且小于 0x7DDF4000。所以,我把 16K 块的开头作为我的起始地址。

第二个参数是掩码。您将 1 放在您想要的地址范围共享相同值的位置,并将 0 放在不同的位置。这意味着您需要选择地址范围,以便只有低位发生变化。看我的地址,面具的第一部分很简单。你想从 0xffff 开始。对于下一个小节,我将用位图进行解释。我想要的范围是 0000 到 0011。所以,badram 的掩码是 1100 或十六进制 c。掩码中的最后 3 个半字节需要全为 0,因为我们希望映射整个范围。因此,我们得到的总结果为 0xffffc000。

在 /etc/default/grub 中设置这一行后,我运行 sudo update-grub 并重新启动,我的坏记忆不再被使用。使用这种方法不需要内核补丁来映射坏内存。

您可以通过运行dmesg和查找BIOS-provided physical RAM mapor来检查提供的范围是否正确extended physical RAM map

[    0.000000] BIOS-e820: [mem 0x000000022a898000-0x000000022a89bfff] unusable
Run Code Online (Sandbox Code Playgroud)

您还可以/proc/iomem以 root 身份检查以查看不可用的范围。


当然,最好的行动计划是更换有缺陷的 RAM。