如何在带有已焊接 RAM 模块且单元已损坏的笔记本电脑上安装 Ubuntu

如何在带有已焊接 RAM 模块且单元已损坏的笔记本电脑上安装 Ubuntu

我有一台几年前买的华硕 K550V 笔记本电脑,现在已经过了保修期。这台电脑的主板上焊接了 8GB RAM,但 RAM 模块有一些损坏的单元。我无法使用其预装的 Windows 10 Pro,因为它总是出现蓝屏,我甚至无法重新安装它。我在网上看到,可以安装 Ubuntu,并指定它不必使用损坏的 RAM 单元,所以我决定安装这个操作系统。事实上,我在 Linux 世界中还很陌生,所以我想知道是否有安装 Ubuntu 的分步指南,指定如何避免使用坏的 RAM 单元。我已经下载了 19.04 版本并制作了一个可启动的闪存驱动器。谢谢

答案1

笔记:有关 Ubuntu 安装帮助,请参阅这里。

笔记:大多数高端计算机维修店都可以以最低的成本更换有缺陷的 8G RAM 芯片,而且肯定更可靠。


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

Grub2 中的 BADRAM 设置

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

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并重新启动,我的坏内存不再被使用。使用此方法无需内核补丁即可映射坏内存。

来源:https://help.ubuntu.com/community/BadRAM#BADRAM_setting_in_Grub2

更新#1:

如果您使用的系统已经有(一根)坏的内存条,您有两个选择:a)暂时换上好内存,直到您打好补丁为止b)如果内存错误没有出现在较低的内存中,您可以添加“mem=##MB”内核选项来暂时禁用该点以上的内存。例如:根据memtest86,我的内存条在 315MB 和 325MB 之间有错误。通过添加“mem=314MB”,我告诉内核假装我只有 314MB。我的系统将足够稳定以构建补丁,此时我可以传递一个参数以仅跳过 315MB 和 325MB 之间的部分(这为我提供了 502MB 的可用内存)。

IE:启动 Ubuntu Live,在 GRUB 菜单上,点击e进入编辑模式,使用箭头键找到“quiet splash”,更改为“quiet splash mem=2048MB”,CTRL+xF10继续启动。

更新 #2:

要获取memtest86,请访问https://www.memtest86.com/并下载/运行他们的免费记忆测试来测试你的记忆力。至少完成一次所有 4/4 测试以确认记忆力良好。这可能需要几个小时才能完成。

更新 #3:

根据坏 RAM 的位置,您可能会遇到问题。Peter Cordes 有个好主意。移除硬盘。将其放入另一台计算机。安装 Ubuntu。修改 GRUB。然后将硬盘放回原来的笔记本电脑。尝试启动它。

答案2

[tab]使用(可能是或)编辑安装程序命令行e并设置memmap内核命令行参数排除memmap=nn[KMG]$ss[KMG][,nn[KMG]$ss[KMG]]损坏的区域可能对你有用!我怀疑在安装过程中这可以设置得相当广泛。

注意 GRUB2 将消耗$,因此必须对其进行转义\$

例子

memmap=64K\$0x18690000,3G\$4G

@或者,使用而不是 来指定有效区域$。这可能是必需的,因为文档中没有明确说明可以指定多个区域进行排除(逗号分隔),而对于包含则明确说明。但是,我非常怀疑多个排除是否有效,因为这似乎是一流的用例。

假设您在安装后使用 GRUB2,您可能希望GRUB_BADRAM=为已安装的系统设置参数,以使参数保持与 GRUB2 期望的方式一致,如另一个很好的答案是@heynnema

相关内容