Macbook上的降频RAM

我想分享一下我升级MacBook6.1 A1342(将内存扩展到8GB,安装SSD)的经验,并解决了与在新驱动器上安装系统以及应对RAM不兼容故障有关的许多问题。

乍一看,升级旧铁似乎是一项微不足道的任务:Internet上的Internet上应该有很多文章,并且市场上有大量廉价的备件。 但是,实际上并不是所有事情都那么简单。 在零件选择阶段,商店就出现了问题

背景知识


我从MacBook手中买了一笔象征性的钱,这是我这家公司的第一台笔记本电脑,最初,我是用它来“熟悉”该公司的产品。 购买后,立即发现计算机在我们这个时代非常慢,我还没有准备好结识。 在朋友的建议下,我决定升级。 我发现,在2.5英寸SATA驱动器和2个DDR3 204pin SO-DIMM 1066MHz板条内部,它正式支持一个插槽最大支持4Gb。商店选择了250Gb SSD驱动器(选择没有问题:任何SATA 2.5都可以,范围广泛任何口味)。

但是有了RAM,并非一切都那么简单。 正式而言,此款MacBook支持1066MHz RAM,目前尚不可用,订购时,一块价格约为4000卢布。 同时,4Gb 1600MHz的价格约为2000卢布。 基于向后兼容性,速度更快。 它没有开始。 在商店中,我设法找到了一个用于启动系统的内存模块(AMD R334G1339S1S),然后我很高兴回家,没有忘记订购第二个。 为了使第二个插槽不为空,请在此处暂时打开本地1Gb插槽。

我必须说,对于慢速的macOS感到失望,我在整个分区上安装了Windows 7,并且没有备份系统-不要重复我的错误!

这样便结束了歌词,并开始用铃鼓跳舞。

在空白驱动器上安装macOS


两个人在我的村子里有一台Mac:第一个是我的,第二个是和那个one眼的暴徒,这使整个村庄都感到恐惧。 使用可用的方式:8Gb闪存驱动器,第二台装有Windows 7的笔记本电脑,专用的互联网线路。

互联网上有许多文章介绍了如何直接在macOS上制作可引导macOS闪存驱动器。 在Windows下如何使用macOS High Sierra制作可启动USB闪存驱动器的方法不是很多,在macOS中使用它们进行操作后,它们的输出结果都远远低于它。 我已经开始寻找格式为.img .iso .bin和其他格式的闪存驱动器的图像,但是可惜! 也许它们在锁定的洪流跟踪器上的某个位置,但我没有找到它。 但是我找到了BDU实用程序( Boot Disk Utility ),您可以使用它直接从AppStore下载必要的文件并写入USB闪存驱动器。 该程序很简单,在官方网站上有带有图片的详细说明,因此在此阶段我不会停止。 我只能说不需要将USB闪存驱动器分成2个分区并下载Clover,只需下载RecoveryHD映像并将其写入USB闪存驱动器部分即可。

接下来,从闪存驱动器启动(在启动时,按住Alt直到出现菜单)。 在磁盘实用程序中,格式化磁盘(我选择了GUID,APFS)。 我们通过WiFi或有线连接到Internet,然后开始安装。 如果一切顺利,则系统本身将从Internet下载并安装在计算机上。

铁的相容性问题


在我有时间享受新的SSD驱动器和4 +1 Gb RAM之前,第二个栏很快就来了。 我安装了RAM,在About This Mac中显示了大约8Gb,然后开始用艰巨的任务折磨系统。 每天大约1-2次,计算机开始重新启动。 从Xcode到简单的TextEdit,所有应用程序中都出现诸如kernel_panic之类的错误。 甚至到了AppStore中的应用程序停止下载的地步。 首先想到的是RAM坏了。 我开车Memtest-一切都井井有条。 从BDU中创建的闪存驱动器重新安装失败(验证错误,校验和错误和其他错误)。 我不得不为直接在macOS中创建的脱机安装闪存驱动器走得很远(从Windows下很难做到)。 但是,即使这样也没有保存。

我注意到内存以1333MHz的频率运行。 因为 罂粟中没有BIOS,我们必须通过打开并行的1Gb 1066 MHz本机条来降低频率。 它帮助了! 系统不会崩溃,AppStore一切正常。 但是第二条呢?

打破整个互联网,找到解决问题的2种方法:

  1. 来自类似MacBookPro的EFI更新,但这并不是事实,它不会消失,因此会在About This Mac中写上Pro。
  2. 在括号之一中更改内存本身的SPD块中的最大允许内存频率,然后EFI将自动选择它。

降频RAM 1333MHz-1066MHz MacBook


我选择了第二个选项,因为 对我来说,杀死两人一杆的风险更便宜。 另外,由于系统不正确地识别板,将来可能会出现问题。 让EFI更新Apple本身。 要进行锁定,您需要一个活动的Linux磁盘(我使用了Ubuntu 16.04.2安装磁盘)

行动计划:

1.从SPD EEPROM存储器中删除转储;
2.找到总线频率并将其从1333MHz降低到1066MHz;
3.重新计算CRC;
4.将接收到的值记录回EEPROM。

如果您多付了16美元,则可以购买Thaiphoon Burner并执行所有操作。 如果不是,则抽直手。 走吧

删除转储

我们启动到Ubuntu,运行终端,然后我们将在root用户下进行所有操作。 安装i2c工具,加载驱动程序:

sudo -I #add-apt-repository universe #apt-get update #apt-get -y install i2c-tools #modprobe eeprom #modprobe i2c-smbus #modprobe i2c-dev #modprobe i2c-nforce2 

让我们看看我们有什么轮胎:

 #i2cdetect -l i2c-3 i2c nvkm-0000:02:00.0-aux-0008 I2C adapter i2c-1 i2c nvkm-0000:02:00.0-bus-0002 I2C adapter i2c-8 smbus SMBus nForce2 adapter at 2140 SMBus adapter i2c-6 i2c nvkm-0000:02:00.0-aux-000b I2C adapter i2c-4 i2c nvkm-0000:02:00.0-aux-0009 I2C adapter i2c-2 i2c nvkm-0000:02:00.0-bus-0003 I2C adapter i2c-0 i2c nvkm-0000:02:00.0-bus-0000 I2C adapter i2c-9 smbus SMBus nForce2 adapter at 2100 SMBus adapter i2c-7 i2c 0000:02:00.0 I2C adapter i2c-5 i2c nvkm-0000:02:00.0-aux-000a I2C adapter 

在评论中告诉我如何明确地在此列表中找到RAM挂起的地方? 我以前使用的是Thaiphoon Burner的免费版本,所以我知道我要去哪里。

因此,在8140总线上的SMBus nForce2适配器在2140处挂起,让我们看看里面是什么:

 #i2cdetect -y 8 0 1 2 3 4 5 6 7 8 9 abcdef 00: -- -- -- -- -- 08 -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: UU UU -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 70: -- -- -- -- -- -- -- -- 

在这里,UU UU是我的两个酒吧,一个在1Gb上,另一个在4Gb上。 地址0x50和0x51。 例如,可以通过转储每个产品的序列号(例如序列号或生产年份)来确定哪个位置。 我已经在Thaiphoon Burner中预先查看了此信息,这就是为什么我们立即在0x51处查看该设备的原因。 让我们转储前256个字节的内存-这是SPD EEPROM:

 #i2cdump -f -r 0x00-0xff -y 8 0x51 b 0 1 2 3 4 5 6 7 8 9 abcdef 0123456789abcdef 00: 92 11 0b 03 03 19 00 09 03 52 01 08 0c 00 3c 00 ??????.??R???.<. 10: 69 78 69 30 69 11 20 89 00 05 3c 3c 00 f0 83 01 ixi0i? ?.?<<.??? 20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 30: 00 00 00 00 00 00 00 00 00 00 00 00 0f 11 05 00 ............???. 40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 70: 00 00 00 00 00 80 01 44 00 00 00 00 00 00 4f 5d .....??D......O] 80: 52 33 33 34 47 31 33 33 39 53 31 53 00 00 00 00 R334G1339S1S.... 90: 00 00 00 00 80 01 00 00 00 00 00 00 00 00 00 00 ....??.......... a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 

总线频率

下一步,我们在脑子/记事本中做所有事情,但是无论如何都不要写EEPROM!
我将结果转储小心地转移到了文本文档中。 阅读了JEDEC标准编号 在21-C中,我们发现所需的参数在第12个字节中(即偏移量为0x0C),而1066MHz的频率(实际上,文档中写有533MHz的半频率)对应于15(即0x0F)。 我们在笔记本上修理然后继续。

CRC校验和

这有点复杂,在头126个字节或117个字节中都考虑了CRC。 这由第一个字节的高位决定。 我的值是0x92,高位= 1,对应于CRC Coverege 0-116。 CRC值本身是使用标准CRC-CCIT 16位多项式0x1021公式计算的。 我使用了CRC在线计算器,其中的所有内容都完美插入并直接用文本计数。 重要的是要注意,计数后的CRC字节以相反的顺序写入EEPROM的第126和127字节。 就我而言,在线计算器的CRC计数为0x5047,我将在EEPROM中写入0x47,然后是0x50。

写入EEPROM

在继续之前,值得再次检查所有内容:阅读JEDEC,评估风险,尝试计算已经工作的模块的CRC,以磨练技能。 发生错误时,内存将消失! 当然,您可能会感到困惑,连接到编程器并从备份中还原SPD(您这样做了吗?)。 然后,让我们继续。

就我而言,我需要写(地址=值):

0x0C = 0x0F(第12个字节的频率)
0x7E = 0x47(CRC.2的第126个字节)
0x7F = 0x50(CRC.1的第127个字节)

 #i2cset -f -y 8 0x51 0x0C 0x0F #i2cset -f -y 8 0x51 0x7E 0x47 #i2cset -f -y 8 0x51 0x7F 0x50 

检查是否写入值:

 #i2cdump -f -r 0x00-0xff -y 8 0x51 b 0 1 2 3 4 5 6 7 8 9 abcdef 0123456789abcdef 00: 92 11 0b 03 03 19 00 09 03 52 01 08 0f 00 3c 00 ??????.??R???.<. 10: 69 78 69 30 69 11 20 89 00 05 3c 3c 00 f0 83 01 ixi0i? ?.?<<.??? 20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 30: 00 00 00 00 00 00 00 00 00 00 00 00 0f 11 05 00 ............???. 40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 70: 00 00 00 00 00 80 01 44 00 00 00 00 00 00 47 50 .....??D......GP 80: 52 33 33 34 47 31 33 33 39 53 31 53 00 00 00 00 R334G1339S1S.... 90: 00 00 00 00 80 01 00 00 00 00 00 00 00 00 00 00 ....??.......... a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 

显然,所有内容均已正确记录。 以防万一,我们重新检查并重新启动。 如果计算机打开并且所有内存都可用-恭喜! 我们去掉了本机的1Gb条,放第二条(不闪烁)并检查内存频率-1066MHz。

如果内存尚未刷新,则表示写保护。 您可以尝试通过Thaiphoon Burner解锁该实用程序,方法是将电阻器焊接到一个内存支脚(另一篇文章的主题),或者尝试刷新另一条。

我希望本文对某人有用。 他主要为自己写信,以免再次寻找不同地方的所有信息。

使用书写材料时

Source: https://habr.com/ru/post/zh-CN413099/


All Articles