我被要求修理一台超出保修期的笔记本电脑,Windows 10S 会在启动时挂起数小时并且永远不会启动。在尝试了我能想到的一切之后,我放弃并安装了 Ubuntu。
Ubuntu 启动并运行几分钟,直到它冻结(通常在启动 Chrome 之后)。
我已经运行 memtest86 并且它显示 RAM 错误(无法替换 ram,因为它是焊接的)。我想标记 BadRam,但无法全部识别。
我的问题 - memtest86 通过了测试 1-5 和测试 10 和 13。它没有通过测试 6、7、8。和 9. 任何想法为什么会发生这种情况以及 GRUB_BADRAM 或调整 UEFI 中的 RAM 设置是否会有所帮助?
'''
Test # Tests Passed Errors
Test 0 [Address test, walking ones, 1 CPU] 4/4 (100%) 0
Test 1 [Address test, own address, 1 CPU] 4/4 (100%) 0
Test 2 [Address test, own address] 4/4 (100%) 0
Test 3 [Moving inversions, ones & zeroes] 4/4 (100%) 0
Test 4 [Moving inversions, 8-bit pattern] 4/4 (100%) 0
Test 5 [Moving inversions, random pattern] 4/4 (100%) 0
Test 6 [Block move, 64-byte blocks] 0/4 (0%) 94
Test 7 [Moving inversions, 32-bit pattern] 0/4 (0%) 29
Test 8 [Random number sequence] 0/4 (0%) 41
Test 9 [Modulo 20, ones & zeros] 0/4 (0%) 177
Test 10 [Bit fade test, 2 patterns, 1 CPU] 4/4 (100%) 0
Test 13 [Hammer test] 4/4 (100%) 0
RAM 为 4 GB,4 个 DIMM 插槽
1GB LPDDR4 PC4-17000
SK Hynix / H9HCNNN8KUMLHR / 00000000
2133 MHz
最后 10 个错误(在 memtest86 中)是
2020-07-09 16:17:43 - [Data Error] Test: 9, CPU: 1, Address: 178A4D6B4, Expected: 90BD5162, Actual: 90BD5160
2020-07-09 16:17:24 - [Data Error] Test: 9, CPU: 1, Address: 17052573C, Expected: 4230F0F6, Actual: 4230F0F4
2020-07-09 16:17:08 - [Data Error] Test: 9, CPU: 0, Address: 17795431C, Expected: 0146A628, Actual: 0146A62A
2020-07-09 16:16:52 - [Data Error] Test: 9, CPU: 1, Address: 168B0F3B4, Expected: 9E286A4A, Actual: 9E286A48
2020-07-09 16:15:57 - [Data Error] Test: 9, CPU: 0, Address: 15F787234, Expected: 43135D5C, Actual: 43135D5E
2020-07-09 16:15:54 - [Data Error] Test: 9, CPU: 1, Address: 1501AE294, Expected: A0EE6E32, Actual: A0EE6E30
2020-07-09 16:15:13 - [Data Error] Test: 9, CPU: 0, Address: 14E3C71F8, Expected: 0AC0FD2E, Actual: 0AC0FD2C
2020-07-09 16:14:59 - [Data Error] Test: 9, CPU: 1, Address: 1424E7234, Expected: C0BE5E14, Actual: C0BE5E16
2020-07-09 16:14:29 - [Data Error] Test: 9, CPU: 1, Address: 13B3A53BC, Expected: 6368E450, Actual: 6368E452
2020-07-09 16:14:04 - [Data Error] Test: 9, CPU: 1, Address: 128174E74, Expected: AAD22C33, Actual: AAD22C31
谢谢
如果您查看
/etc/default/grub
,您会发现一个GRUB_BADRAM=
参数,您可以在其中识别哪些坏内存位置存在。另请参阅如何在带有已损坏电池的焊接 RAM 模块的笔记本电脑上安装 Ubuntu
来源:https ://help.ubuntu.com/community/BadRAM#BADRAM_setting_in_Grub2
Grub2 中的 BADRAM 设置
Natty中的 GRUB2 配置文件有一行用于配置内核坏 ram 排除项。因此,我将假设这是映射出显示错误的内存部分的首选方法。我设置的线是我能找到的每个网站上的建议方法是将其设置为运行
memtest86
并让它向您显示 BadRAM 设置。memtest86
给了我一页我必须输入的东西。我可以看到所有地址都在一个 16K 块中,所以我只想映射那个 16K 块停止运行。这是我生成正确条目的方式。第一个参数很简单。那是坏内存的基地址。就我而言,我可以看到所有坏地址都大于 0x7DDF0000 且小于 0x7DDF4000。所以,我把 16K 块的开头作为我的起始地址。
第二个参数是掩码。您将 1s 放在您想要的地址范围共享相同值的位置,并将 0s 放在它会变化的位置。这意味着您需要选择您的地址范围,以便只有低位发生变化。看我的地址,面具的第一部分很容易。你想从 0xffff 开始。对于下一个半字节,我将使用位图进行解释。我希望范围从 0000 到 0011。因此,badram 的掩码将是 1100 或十六进制 c。掩码中的最后 3 个半字节需要全为 0,因为我们想要映射出整个范围。所以,我们得到的总结果是 0xffffc000。
在设置这条线后
/etc/default/grub
,我运行sudo update-grub
并重新启动,我的坏记忆不再被使用。使用这种方法不需要内核补丁来映射坏内存。