解决 MacPro7,1 机型开机内存警告问题

概述

本文最后更新:2021年2月26日

现在很多使用第八、九、十代没有核显的酷睿处理器的黑苹果,选用 MacPro7,1 机型解决独显硬解(主要是 Vega 和 RX5000)。这个机型对AMD较新的显卡很友好,对 Vega 和 RX5700/XT 有加成,并且不太挑剔CPU。美中不足的是,这个机型开机会遇到内存位置警告,见图:

这是因为 2019 款 MacPro 原本具有12个内存插槽,但绝大多数桌面端主板最多只有 4 个内存插槽,和机型的内存通道设计不符,导致识别错误。

在实际使用中不会有什么影响,但这明显是一个会逼死强迫症的小毛病,这里就介绍一下解决这个问题的方法。

解决方法

  • 模拟出一个12插槽的硬件环境,根据官方页面给出的信息,把实际内存插槽位置仿冒成推荐的位置欺骗 macOS;
    • Clover r5100 以上版本已自备模拟功能;
    • OpenCore 0.6.3 新增自定义内存功能,也可模拟;
  • 使用第三方驱动 MacProMemoryNotificationDisabler.kext 关闭内存警报信息提示。
    • 在 macOS 11.0 Big Sur 中,因 Lilu 不再具备 Userspace 修补能力,因此 MacProMemoryNotificationDisabler.kext 已失效。
  • 使用第三方驱动 RestrictEvents.kext
    • 由 Acidanthera 团队开发,用于在不兼容的硬件平台上禁止一部分 macOS 系统事件,以提升系统稳定性。

 

OpenCore 默认配置方法

  • OpenCore 模拟方法由 @XIII 撰写提供,下面的“我”指作者 XIII;已于 2021 年 2 月 26 日更新部分内容
  • 首先,自定义内存功能要求 OpenCore 版本最低 0.6.3,如果你的不是,请升级,升级方法参考:如何升级引导工具
  • MacProMemoryNotificationDisabler.kext在 macOS 11.0 Big Sur 中,因 Lilu 不再具备 Userspace 修补能力,因此这个 kext 已失效,因此,macOS Big Sur 不使用这个文件;
  • 使用第三方驱动 RestrictEvents.kext:由 Acidanthera 团队开发,用于在不兼容的硬件平台上禁止一部分 macOS 系统事件,以提升系统稳定性。
  • 因 ProperTree 操作实在不便,这里使用配置工具:OpenCore Configurator / QtOpenCoreConfig,它们都有一个共同的设计,即必须开启 CustomMemory 选项之后,才能正常保存自定义内存设置的值,否则直接丢失,务必注意;
  •  OCC 推荐版本 2.20.0.0 及以上,QtOCC 推荐 20201225 及更新版本,编辑前务必注意备份 config 文件

已有40631次阅读

完成后重启即可看到效果:

注意在 macOS Big Sur 下,需要填满所有内存位置(内存条容量可以不对称):

OpenCore 延展信息

如果上述 OpenCore 默认配置没有解决你的问题,代表需要手动获取你的内存信息,这里需要用到一个小工具,用于抓取内存信息。

已有40631次阅读

OpenCore 的 CustomMemory 功能有以下字段需要填写,Devices 部分可直接参考规律表即可(AssetTag 和两个序列号可不填)。

  • DataWidth
  • ErrorCorrection
  • FormFactor
  • MaxCapacity
  • TotalWidth
  • Type
  • TypeDetail
  • Devices
    • AssetTag
    • BankLocator
    • DeviceLocator
    • Manufacturer
    • PartNumber
    • SerialNumber
    • Size
    • Speed

获取 DataWidth,在终端中输入:

dmidecode -t memory | grep "Data Width:"

如果你的终端提示 dmidecode: command not found,可以把 dmidecode 拖入终端自动补全路径,然后再输入后续命令。得到以下内容:

Data Width: Unknown
Data Width: 64 bits
Data Width: Unknown
Data Width: 64 bits

以笔者情况为例,Unknown 其实是没有插任何内存条,因此得到 DataWidth 是 64,填上。

 

获取 ErrorCorrection,在终端输入:

dmidecode -t memory | grep "Error Correction Type:"

笔者得到以下信息:

Error Correction Type: None
Error Correction Type: None
Error Correction Type: None
Error Correction Type: None

因此得到 ErrorCorrection 的值是 3,填上。

 

获取 FormFactor,在终端输入:

dmidecode -t memory | grep "Form Factor:"

笔者得到以下信息:

Form Factor: DIMM
Form Factor: DIMM
Form Factor: DIMM
Form Factor: DIMM

因此得到 FormFactor 的值是 9,填上。

 

获取 TotalWidth,在终端输入:

dmidecode -t memory | grep "Total Width:"

笔者得到以下信息:

Total Width: Unknown
Total Width: 64 bits
Total Width: Unknown
Total Width: 64 bits

因此得到 TotalWidth 值是 64,填上。

 

获取 Type,在终端输入:

dmidecode -t memory | grep "Type:"

笔者得到以下信息:

Type: Unknown
Type: DDR4
Type: Unknown
Type: DDR4

因此得到 Type 值是 26,填上。

 

获取 TypeDetail,终端输入:

dmidecode -t memory | grep "Type Detail:"

笔者得到以下信息:

Type Detail: Unknown
Type Detail: Synchronous
Type Detail: Unknown
Type Detail: Synchronous

因此得到 TypeDetail 值是 7,填上。

 

MaxCapacity 指的是最大内存容量,可能的值:

8GB - 8589934592
16GB - 17179869184
32GB - 34359738368
64GB - 68719476736
128GB - 137438953472
256GB - 274877906944

最后贴一个此模拟配置的填写规律表:

已有40631次阅读

你必须按照上面的模拟内存信息进行设置,这个规律表才有效,表中“对应 MacPro 插槽位置”指的是苹果官方的安装位置:

所以,如果是 300 系或 400 系只有 4 个 DIMM 插槽想老老实实填写的,在规律表中找到 3,5,8,10 号对应的位置,即:BANK 0、BANK 2、BANK 6、BANK 8,然后填上容量和频率即可,其它方法以此类推。在 macOS Big Sur 下,需要填满所有位置才不会报错(搭配 RestrictEvents 是否报错未验证,欢迎反馈),内存条容量可以填写为不对称的形式。

 

Clover 默认配置方法

已有40631次阅读

注意 Clover Configurator 里容量中快速选择 8GB 对应的数值是错误的,正确的应该是 8192 ;

完成后,重启即可。

 

Clover 延展信息

笔者有4条内存,插槽序号填写8、5、0、1(对应苹果官方推荐的3、5、8、10号插槽),其它4插槽插满的主板也可以使用同样设置。其它数量应该如何计算插槽序号?MacPro 的内存分为 2 个大组,每个组有 3 个通道,每个通道有 2 个物理插槽,也就是 单通道2插槽 × 3通道 × 2大组 = 总 12 插槽。这里总结一个规律表如下(可能不是所有配置都有效):

已有40631次阅读

各个数量的内存条,具体配置方法可以查看官方指导

 

 

0. 本站所有资源解压密码均为 heipg.cn
1. 本站资源收集于网络,仅做学习和交流使用,请于下载后24小时内删除。如果你喜欢我们推荐的软件,请购买正版支持作者。
2. 如有无法下载的链接,联系:admin#heipg.cn,或到QQ群进行反馈,我们将及时进行处理。
3. 本站发布的内容若侵犯到您的权益,请联系站长删除,联系方式:admin#heipg.cn,我们将第一时间配合处理!

黑苹果星球 » 解决 MacPro7,1 机型开机内存警告问题

21 评论

  1. 2022年11月,这个教程还有效吗?老大?

    1. OpenCore的方法依旧是有效的
      不过现在基本都用RestrictedEvents.kext解决问题,省事
      这个方法现在成为装X利器咯

  2. 直接RestrictEvents.kext好点,一串代码我也看不明白

  3. 会爆内存,这样改了以后我内存占用就一直显示90%以上,不改的话正常情况就只有30%左右

    1. 那是当然的,毕竟实际上你并没有这么多内存容量...所以建议把数值改回和实际相同,或者直接使用RestrictEvents.kext

  4. Catalina 也要填满所有内存位置,亲测有效👍

  5. CustomMemory 的选项在那里开启找不到啊

    1. 升级OC到0.6.3及以上,对应的编辑器也要升级才有~

发表回复