如果措辞不当,我很抱歉,但我已经在我的一台计算机上进行了内存测试,并且某些内存地址有错误。这是我第一次搜索。如果您需要更多信息,那么我可以提供。
Ama*_*icA 10
我发现对我来说最简单、最可靠的方法是将内核参数添加到我的 GRUB 配置中memtest=4
。这会增加启动时间,内核会检查你的内存,然后将它们标记为对你不利。
sudo nano /etc/default/grub
更新这一行:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash memtest=4"
Run Code Online (Sandbox Code Playgroud)
sudo update-grub
reboot
(可选)通过运行来检查它是否正常工作dmesg
并查看如下日志:
[ 5.043917] aaaaaaaaaaaaaaaa bad mem addr 0x0000000581a90000 - 0x0000000581a90010 reserved
Run Code Online (Sandbox Code Playgroud)
来源。
如果您查看/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 map
or来检查提供的范围是否正确extended physical RAM map
:
[ 0.000000] BIOS-e820: [mem 0x000000022a898000-0x000000022a89bfff] unusable
Run Code Online (Sandbox Code Playgroud)
您还可以/proc/iomem
以 root 身份检查以查看不可用的范围。
当然,最好的行动计划是更换有缺陷的 RAM。
归档时间: |
|
查看次数: |
3688 次 |
最近记录: |