MemTest86 +(Ubuntu 13.04附带的版本)说
Failing address: 002f796c48 - 759.5 MB
我应该在memmap
内核参数中指定什么来绕过该区域?
我尝试运行memtester 770MB
,它说一切都很好,因此看上去MemTest的指示从一开始就没有出现第759.5 MB的错误。
如何解释此MemTest指示进行配置memmap
?
我现在没有钱买新的RAM,并且错误似乎是单一的,所以我希望我可以重写它。
MemTest86 +(Ubuntu 13.04附带的版本)说
Failing address: 002f796c48 - 759.5 MB
我应该在memmap
内核参数中指定什么来绕过该区域?
我尝试运行memtester 770MB
,它说一切都很好,因此看上去MemTest的指示从一开始就没有出现第759.5 MB的错误。
如何解释此MemTest指示进行配置memmap
?
我现在没有钱买新的RAM,并且错误似乎是单一的,所以我希望我可以重写它。
Answers:
本教程的标题为:Bad Memory HowTo,它讨论使用内核memmap
参数通过内核禁用内存。根据操作方法,您有2种选择memmap
:
(mem=###M option)
(memmap=#M$###M option)
使用第一个选项,如果memtest报告在600M处内存不足,则可以使用以下方法从那一点开始禁用RAM,直到RAM结束:
mem=595M
如果802M和807M处的RAM不好,则可以从800M开始禁用10M的RAM部分,如下所示:
memmap=10M$800M
注意:这会将800M基本地址之后的10M列入黑名单。memtest86+
之后应运行以确认此参数正确。
Ubuntu有一个名为BadRam的补丁。在Ubuntu社区站点上的标题为:BadRAM的文章中对此进行了很好的介绍。
使用该页面上的详细信息将补丁应用到内核后,您可以对Grub2设置进行修改:
该网站摘录的Grub2
Natty中的GRUB2配置文件中有一行用于配置内核坏RAM排除。因此,我将假定这是映射显示错误的内存部分的首选方法。我设定的线是
GRUB_BADRAM =“ 0x7DDF0000,0xffffc000”
我可以在每个网站上找到的建议方法是将其设置为运行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并重新启动,并且不再使用我的错误内存。使用此方法不需要内核补丁即可映射出错误的内存。
浏览维基百科页面的memtest86 +,其状态如下:
从Memtest86 2.3和Memtest86 + 1.60开始,程序可以以BadRAM补丁所期望的格式输出用于Linux内核的坏RAM区域列表。使用此信息,Linux系统即使有一些坏位也可以可靠地使用RAM模块。Grub2能够将这些信息提供给未打补丁的内核,从而无需BadRAM补丁。
我也遇到了这个Gentoo页面,该页面memmap=...
使用十六进制地址指定,因此您可以这样指定:
memmap=5M$0x2f796c48
5M只是一个猜测,显然,您可以根据您要/需要忽略的区域周围的RAM大小来将其调低或调高。
最后,您还可以指定十六进制大小:
memmap=0x10000$0x2f796c48
将忽略从地址0x2f796c48开始的64KB。
memmap
选项,但问题更多是关于如何解释memtest86 +输出的信息。我给的Memtest86 +输出的一个具体的例子,并在配置求人memmap
因此在这种特殊情况下。2.“之后应运行memtest86 +以确认此参数正确。” -memtest86 + 在操作系统内核之前运行,因此我严重怀疑memmap
Linux内核选项是否会影响它。
memmap=5M$759M
对于您的特定情况,鉴于memtest86 +的失败是759.5MB。2.我的意思是您也应该将该memmap=...
选项传递给memtest86 +。我未经测试/确认,但是您可以使用memtest86 +进行此操作。
Memtest86 +(我使用的是4.20)可以直接输出badram格式。
按“ c”进入配置对话框
然后“ 4”代表“错误报告模式”
然后,“ 3”代表“ BadRAM模式”
输出将从单个测试失败列表更改为一系列badram =行,每行包含一个新的坏扇区。因为这些行会追加并合并相邻的段,所以您可以在一夜之间无头运行测试并使用最终的打印行(尽管如果您的调光非常差,那么“此点附近的5兆”精度可能会短一些) )。
最后结果:
tesseract ${IMG} stdout
..然后验证并更正该行,然后再插入/ etc / default / grub ...可能需要花费与手动输入一样长的时间^^