我在一台 3 年前的 Dell Inspiron 5590 笔记本电脑上运行 MX Linux,该笔记本电脑配有 4GB 内存,内存焊接在主板上。我遇到了由内存错误引起的问题。Memtest86 在 4 次完整测试中报告了 70 个错误。
更换焊接的内存是不经济的,但有一个额外的 DIMM 插槽被标识为插槽 1,板载内存被标识为插槽 2。
我想知道的是,如果插槽 1 优先于插槽 2,那么如果我将 8 或 16GB 模块添加到插槽,那么板载 4GB 模块将不会被使用,直到插槽 1 中的所有内存都已填满,这样我遇到错误地址的可能性就会大大降低。但这只是猜测,我欢迎任何评论,看看这是否是一个合理的假设。
编辑:我现在已经在额外的插槽中安装了 8GB DIMM,结果既有趣又有点令人费解。
插入新的 DIMM 后,我从 BIOS 运行了戴尔诊断程序。它报告说它发现并“解决”了两个错误,但没有提供任何进一步的详细信息。我猜想这些是板载 4GB 模块中存在的错误。
然后我运行了 4 次 memtest86,期间没有发现任何错误。这很令人惊讶,因为几天前我使用仅 4GB 焊接板载内存运行 memtest86 时,它报告了 70 个错误,其中一些是重复的。
我还没有找到任何方法来确定每个内存模块的起始地址,但在添加额外 8GB 之前和之后的 dmesg 输出表明新的 8GB DIMM 在 4GB 板载内存之前启动。
在 dmesg 中,BIOS 提供的物理 RAM 映射报告某些内存区域不可用。在添加额外的 DIMM 之前,这些区域如下:
[ 0.000000] BIOS-e820: [mem 0x0000000042f08000-0x0000000042f09fff] unusable
[ 0.000000] BIOS-e820: [mem 0x0000000052a64000-0x0000000052a64fff] unusable
[ 0.000000] BIOS-e820: [mem 0x0000000052a66000-0x0000000052a67fff] unusable
[ 0.000000] BIOS-e820: [mem 0x0000000079f10000-0x0000000079f10fff] unusable
[ 0.000000] BIOS-e820: [mem 0x0000000079f12000-0x0000000079f13fff] unusable
[ 0.000000] BIOS-e820: [mem 0x0000000104a84000-0x0000000104a87fff] unusable
我假设这些不可用的块已由先前运行的 BIOS 诊断程序标记,并且不会被我的 Linux 系统使用,而且 memtest86 也会跳过它们。
安装额外的 8GB DIMM 后,不可用的块已移动到更高的地址:
[ 0.000000] BIOS-e820: [mem 0x0000000128508000-0x0000000128508fff] unusable
[ 0.000000] BIOS-e820: [mem 0x0000000311cc8000-0x0000000311cc9fff] unusable
[ 0.000000] BIOS-e820: [mem 0x0000000311ccc000-0x0000000311cccfff] unusable
[ 0.000000] BIOS-e820: [mem 0x0000000311cce000-0x0000000311ccffff] unusable
[ 0.000000] BIOS-e820: [mem 0x0000000360621000-0x0000000360621fff] unusable
[ 0.000000] BIOS-e820: [mem 0x0000000360626000-0x0000000360627fff] unusable
大多数这些值表明板载 4G 现在处于内存的高端,但是如果是这样那么我预计它们都会增加 8GB,即 0x200000000 但差异分别是 0xE5600000、0x2BF264000、0x2BF266000、0x297DBE000、0x2E670F000 和 0x25BBA2000 与 8GB 的偏移不一致,第一个值现在位于 0x0000000128508000,约 4.6GB,其他值位于 0x0000000311cc8000 或约 12.3GB 之上。
我也感到困惑,安装了总共 12GB 的内存后,dmesg 报告可用内存从零到 0x000000036c7fffff,即大约 13,7GB。
我对原始板载内存没有太大的信心,如果我能确信每个内存模块使用的确切地址,我会倾向于使用 GRUB 的 memmap 功能禁用原始 4GB。
答案1
如果您的系统仍然可以在损坏的内存上启动足够远的距离,以至于 Linux 内核能够启动,那么您可以使用memmap
内核参数将该区域列入黑名单。
要将整个前 4 GB 列入黑名单,您需要设置memmap=1M!4096M
。启动时需要少量低内存。
列入黑名单后,独立系统memtest86
仍然会出现问题,但您可以使用用户模式工具来memtester
检查应用程序可用的内存是否可靠。
答案2
当你找到改变优先级的方法时,你会遇到最坏的情况。你的操作系统不会崩溃,但复制操作会损坏文件,并会发生其他糟糕的事情。
查看您的 BIOS 设置。可能您可以禁用插槽 1 中的 DIMM。
答案3
在理论,您可以拆除板载内存并使用 SODIMM。但是,这可能不值得付出努力。到那时,只需购买便宜的、二手的或较旧的机器即可。