B85M + i5-4690 + HD4600 黑苹果排障实录:macOS 12 Monterey 从 7MB 到 1536MB 的 48 小时
手头有一台退役的技嘉 B85M-HD3-A,配的是 i5-4690 + HD4600 核显,128G SSD + 500G 机械盘。原本跑的 Windows 10,吃灰了一年多。
最近要搞 Flutter 开发,iOS 编译必须 macOS。买 Mac 是不可能买的,于是想起这坨老硬件——Haswell 平台在黑苹果圈子里是公认的”甜点老平台”,HD4600 在 macOS 12 Monterey 下半原生驱动。
说干就干。结果从装机到显卡正常,折腾了整整两天。这篇文章只记录真正踩过的坑和验证通过的方案,不写那些”理论上应该能行”的东西。
一、BIOS 里的第一课:DVMT 64M 不是玄学
进技嘉 BIOS,先把必须改的几项设好:
| 项目 | 值 | 为什么 |
|---|---|---|
| DVMT Pre-Allocated | 64MB | HD4600 在 macOS 下就吃这个值,32M 画面撕裂,512M 直接起不来 |
| CSM / Legacy | Disabled | OpenCore 要纯 UEFI |
| SATA Mode | AHCI | macOS 连 IDE 模式都懒得看一眼 |
| VT-x | Enabled | 不然虚拟机那一层直接废 |
| Fast Boot | Disabled | 开了 OC 加载顺序会乱 |
| XHCI / EHCI Hand-off | 都开 | USB 兼容性,不开装到一半键鼠失灵不是开玩笑的 |
DVMT 这个坑我必须单独说。
一开始我把 DVMT 设成 32MB(BIOS 默认值),心想 WEG 会自动处理。进系统后显存确实显示 1536MB,Dock 的毛玻璃也正常。但用了几分钟后桌面开始出现横条撕裂,开 Launchpad 动画掉帧到 5fps。
改 128MB 重启——直接 kIOFBNotifyDisplayModeWillChange 卡死。
改 512MB——连 OC 引导都进不去,黑屏,主板自检蜂鸣器没声。拔电池清 CMOS 才救回来。
回到 64MB,一切正常。
结论:HD4600 在 macOS 下 DVMT 只能是 64MB,多一分少一分都有不一样的妖蛾子。
二、platform-id 一个字符的恐怖:0D vs 0D
搞定 BIOS 后,开始搞 EFI。
我用 OpCore-Simplify 按 Haswell Desktop 生成了一份基础 EFI,SMBIOS 选 iMac16,2。这型号是 2015 款 21.5 寸 Retina iMac,原生就是 HD4600,理论上是最佳载体。
终端看显存:
system_profiler SPDisplaysDataType | grep "VRAM"输出:
VRAM (Dynamic, Max): 7 MB7MB。连菜单栏透明都不开。Dock 纯灰色方块。
我的第一反应:WhateverGreen 没加载?平台 ID 写错了?
挂载 EFI,用 ProperTree 打开 config.plist,看 DeviceProperties:
<key>AAPL,ig-platform-id</key>
<data>DQIjAA==</data>这是 0D220003。OpCore-Simplify 默认生成了带独显的 Mobile HD4600 平台 ID。
桌面 HD4600 的正确 ID 应该是 0300220D。
改过来:
<key>AAPL,ig-platform-id</key>
<data>AwAiDQ==</data>清 NVRAM,重启。进桌面那一刻,Dock 的毛玻璃从灰色方块变成半透明,Genie 动画顺滑如丝。
system_profiler SPDisplaysDataType | grep "VRAM"
VRAM (Dynamic, Max): 1536 MB一个字节顺序,7MB 到 1536MB 的距离。
三、手写 stolenmem 的诅咒
进系统后发现一个问题:Chrome 开了七八个标签页,切 Windows 的虚拟机窗口,显存偶尔掉到 31MB,然后桌面变幻灯片。
搜了一圈,StackExchange 和远景都有人建议手写 Framebuffer:
<key>framebuffer-stolenmem</key>
<data>AAAABAAAAA==</data> <!-- 64MB -->
<key>framebuffer-fbmem</key>
<data>AACAAAAAA==</data> <!-- 8MB -->
<key>framebuffer-patch-enable</key>
<data>AQAAAA==</data>照抄上去。重启。
直接卡 kIOFBNotifyDisplayModeWillChange,一动不动。
进恢复环境,挂载 EFI:
diskutil mount disk0s1删掉那三行 FB 参数:
plutil -convert xml1 /Volumes/EFI/EFI/OC/config.plist
vi /Volumes/EFI/EFI/OC/config.plist
# 删掉 framebuffer-stolenmem / framebuffer-fbmem / framebuffer-patch-enable 三个 key
plutil -convert binary1 /Volumes/EFI/EFI/OC/config.plist重启,一切恢复正常。
后来才想明白:
DVMT 64MB → BIOS 预分配 64MB 给核显
WEG 检测到 DVMT 64MB → 自动计算 Framebuffer
手写 stolenmem=64MB → WEG 又分配 64MB → 64+64=128MB → 显存寻址冲突关键逻辑:BIOS 设了 DVMT 64M,WEG 会自动算 FB,绝对不要手写。 手写是给 DVMT 改不了的情况用的(比如部分笔记本 BIOS 锁了 DVMT),台式机技嘉 BIOS 能随便改 DVMT,手写就是自找麻烦。
四、安装流程实录
EFI 验证通过后,实际安装反而顺利。
# 在另一台 Mac 上下载 Monterey 安装器
softwareupdate --fetch-full-installer --full-installer-version 12.7.6
# 写入 U 盘
sudo /Applications/Install\ macOS\ Monterey.app/Contents/Resources/createinstallmedia \
--volume /Volumes/MyUSB把验证过的 EFI 复制到 U 盘 EFI 分区,插老机器 F12 启动。
OC 菜单 → Install macOS Monterey → 磁盘工具抹 SSD → 选 SSD 安装。
重启了三次,每次记得从 U 盘 EFI 进。最后进桌面,系统信息确认:
- 显卡:Intel HD Graphics 4600 1536 MB ✅
- 声卡:ALC887 layout-id=3 ✅
- 网卡:RTL8111 千兆 ✅
把 U 盘的 EFI 搬到内置 SSD:
diskutil mount disk0s1
cp -R /Volumes/MyUSB/EFI /Volumes/EFI/
diskutil unmount disk0s1拔 U 盘,重启,从 SSD 直启成功。
五、最终配置速查
<!-- SMBIOS -->
<key>SystemProductName</key>
<string>iMac16,2</string>
<!-- 显卡:只要这一项 -->
<key>PciRoot(0x0)/Pci(0x2,0x0)</key>
<dict>
<key>AAPL,ig-platform-id</key>
<data>AwAiDQ==</data> <!-- 0300220D -->
</dict>
<!-- boot-args -->
<key>boot-args</key>
<string>-v debug=0x100 keepsyms=1</string>
<!-- SIP 半关 -->
<key>csr-active-config</key>
<data>AwoAAA==</data> <!-- 0x803 -->
<!-- SecureBootModel -->
<key>SecureBootModel</key>
<string>Default</string>Kext 列表:Lilu → WhateverGreen → AppleALC (layout-id=3) → VirtualSMC → SMCProcessor → SMCSuperIO → RealtekRTL8111 → USBToolBox + UTBDefault
六、排查清单
以后同类问题,按这个顺序查:
- BIOS DVMT = 64MB?32M 撕裂/512M 黑屏
- platform-id 是 0300220D?不是 0D220003
- DeviceProperties 有没有残留手写的 stolenmem/fbmem?
- WhateverGreen.kext 在 Kernel → Add 里启用了吗?
- OC 菜单 Reset NVRAM 后再试一次?
- 声卡无声:layout-id 先试 3,不行依次试 1/2/5/7
- U 盘 EFI 验证通过后,记得搬到内置 SSD 的 EFI 分区
七、最后的结论
Monterey 12 是 Haswell HD4600 在半原生驱动条件下最稳的一个系统。
不需要 OCLP、不需要 Root Patch、不需要 spoof 机型。SmBIOS 选 iMac16,2,BIOS 设对 DVMT,platform-id 填对,就够了。
从 7MB 到 1536MB,这条路我走了一遍,把坑都标注好了。如果你也有块 B85 + i5-4690 在吃灰,这套配置照抄就能用。
测试环境:技嘉 B85M-HD3-A / i5-4690 / HD4600 / macOS 12.7.6 Monterey EFI 版本:OpenCore 0.9.x | 工具链:OpCore-Simplify + OCAT 参考:司波图 B站视频 BV1RtqEBiEDr