我在一台配备 Intel Core 2 Duo 处理器的 HP 服务器上运行 Debian Lenny 64 位。它使用 LILO 而不是 GRUB 启动,因为它有一个 XFS 根分区。直到今天,它有 3 GB(2x 512MB 和 2x 1GB)的 ECC RAM。我偶尔会在单个插槽上收到来自 EDAC 的 ECC 错误,但由于没有发生崩溃,所以我并不太担心。
今天我尝试对 Seagate 固件进行更新,这是 Seagate 建议的,用于该机器 mdadm 中 RAID-1 中的两个驱动器(仅用于数据,而不是 /)。我没有成功执行此操作,甚至没有找到该光盘的 README,因为它启动需要很长时间。我受够了,并尝试重新启动系统。它在 LILO 运行三行 ... 后挂起了。
我认为我可能由于 ECC 错误而导致一些 RAM 损坏,因此我尝试了许多不同的配置(有 6 个 DIMM,提到的四个加上 2 个非 ECC DIMM,显然不是同时的)但无法启动。
我运行了 memtest86,希望能够隔离损坏的 RAM。结果每次在 memtest86 的测试 #2 中都出现完全相同的错误,无论我使用哪个 DIMM 和哪个插槽。它总是在第一个被占用的 RAM 插槽上返回 3 个错误。我无法理解它返回的错误,但如果相关的话,可以在这里生成它们。
在此之后,尝试从主磁盘启动 Debian 时,甚至没有显示“LILO”字样。它只是挂起并带有闪烁的光标。再加上每次都出现内存错误,这让我相信主板或 CPU 出了问题。
然而,非常奇怪的是,Knoppix 启动顺利,运行正常。我无法运行 lilo,因为 Knoppix 是 32 位的,而系统是 64 位的。但这让我对上面的一些内容产生了疑问——Knoppix 肯定不能在 RAM 错误或处理器有问题的情况下运行吧?
答案1
听起来主板上的插槽有问题。如果可以跳过使用第一个插槽,请尝试一下,看看会发生什么。如果没有问题,则问题基本得到确认。
检查是否有脏触点、插槽中的污垢等。也许你会很幸运,就这么简单。
如果您身边有备用的盒子,请尝试将内存放入其中并运行 memtest,看看会发生什么。
答案2
我怀疑是磁盘、磁盘控制器或控制器使用的总线。如果在 LILO 中的 L 之前失败,则表示 LILO 分区已成功读取。Knoppix 无需处理此问题,因此可以正常启动。您可以从 Knoppix 安装任何东西吗?
答案3
我非常同意的David
分析。
已经使用了memtest86(也可以直接从 Ubuntu LiveCD 中获取)来隔离 RAM 错误。
这些memtest86+ 页面上的故障排除说明也值得一读。
- memtest86+注重记忆稳定性
- 如果更换模块后,仍然在相同的地址位置出现错误,则
内存插槽很可能是罪魁祸首
您可以使用memtest86 屏幕底部的简单控件集中测试问题错误地址,以加快测试周期- 如果 memtest86 显示错误,则其他更高层的检查不值得,重点检查内存路径
答案4
内存错误非常“可疑”。这就是为什么软件有时即使在 RAM 出现故障的情况下仍能运行。
有时,错误位不会导致错误。例如,如果这些位置仅存储了额外的填充数据位,这些数据位是为了确保内存对齐而存在的,但实际上并未被软件使用。即使它用于存储实际程序,也可能只是指令的那些位,实际上并不重要或未被处理器解码。大多数现代 PC 都有一个内存管理单元 (MMU),用于在物理和虚拟内存位置之间进行转换。因此,尽管有故障的 RAM 是内存的初始部分,但它可能本质上不会被寻址该特定 RAM 块的软件使用。
但是,正如其他人所说,这很可能是一个有故障的插槽。如果发现该插槽有故障,请避免使用该插槽。如果它是 RAM 的固定区域,您甚至可以通过在 Linux 内核中标记 BADMEM 区域来避免使用它。
RAM 错误迟早会再次出现并给您带来麻烦。