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

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

如果你查看/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" 

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

Grub2中的BADRAM设置

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

 GRUB_BADRAM="0x7DDF0000,0xffffc000" 

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

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

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

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


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

Interesting Posts