Home
avatar

whohh

Haswell 老平台强上 Ventura 排障记录:其实 Sonoma/Sequoia 都适用,HD4600 最终章

Monterey 在这台 B85 + i5-4690 上装好没几天,直到 Flutter 吐出一行报错:

Flutter requires macOS 13.5 or later.

说来戏剧,我不是被新功能诱惑升的级,是被一行最低版本检查拦住的。

从 macOS 12 Monterey 跳到 13 Ventura,在 M 芯片机器上只是一个按钮的事。但在 Haswell HD4600 上——苹果官方早把这个核显从驱动列表里删掉了。

这篇文章记录的是:如何让一台 2014 年的 Haswell 桌面在 Ventura(及 Sonoma、Sequoia)上跑出完整的 1536MB 硬件加速。HD4600 撑死也就到 Sequoia,再往后苹果连 Haswell 指令集都放弃了。所以这套方法理论上从 Ventura 一路适用到 Sequoia,本文以 Ventura 为例,遇到的坑都一样。


一、为什么要升

Flutter 3.44+ 最低要求 macOS 13.5。Xcode 15.x 也只支持 Ventura 以上。Monterey 官方支持已结束,后面只会越来越多 App 要求新系统。而且既然 HD4600 最高能到 Sequoia,一步到位到最新也无妨。


二、第一回合:SMBIOS 换型——iMac16,2 在 Ventura 下直接跪

我做的第一件事是把 Monterey 的 EFI 原样丢进 Ventura 安装盘。

启动。OC 菜单正常。选 Install macOS Ventura。

滚了两行文字,直接重启。没错误提示,没 verbose 日志截停,就是滚了一下然后 BIOS POST 画面。

这是最让人抓狂的那种——没有任何线索。

进 Monterey 翻 OC 文档。找到一句话:

Starting with macOS 13, certain SMBIOS models are restricted from running newer versions. iMac16,2 is not in the Ventura allowlist.

也就是说:Ventura 不再允许 iMac16,2 这个机型启动。不是配置问题,是苹果直接封了入口。

解决方案:用 iMac18,1 (Kaby Lake 平台) spoof。

Monterey: iMac16,2 (Haswell 原生机型) ✅
Ventura:  iMac16,2 → ❌ 白名单拒绝
Ventura:  iMac18,1 → ✅ spoof 可启动

但 iMac18,1 是 Kaby Lake (第 7 代酷睿) 的机型,和我们的 Haswell (第 4 代) 差了三代。这已经不是”匹配”问题了,是在骗 macOS,让它以为自己在跑一台 2017 年的 iMac。

改 SMBIOS:

<key>SystemProductName</key>
<string>iMac18,1</string>

同时用 GenSMBIOS 重新生成一套 SN / MLB / UUID / ROM,去 checkcoverage.apple.com 验证显示”请输入有效序列号”——这最好,说明格式对但不在 Apple 数据库,不会触发 iMessage 封号。

重新启动 Ventura 安装器。

这次进到安装界面了。松了一口气。


三、第二回合:SecureBootModel——Default 的温柔一刀

装完系统进桌面,按流程把 EFI 从 U 盘搬到内置 SSD,重启。

卡白苹果。

进度条走三分之一,不动。等了十分钟,强制关机。再试,同样位置卡住。

我的第一反应:显卡。

在 U 盘的 OC 里加 -igfxvesa(VESA 安全模式),能从 U 盘启动进桌面。既然 U 盘能进、SSD 不能进,那问题出在 SSD 的 EFI 上。

逐项对比 U 盘 EFI 和 SSD EFI 的 config.plist 差异。发现了:

<!-- U 盘 EFI(能进) -->
<key>SecureBootModel</key>
<string>Disabled</string>

<!-- SSD EFI(卡白苹果) -->
<key>SecureBootModel</key>
<string>Default</string>

Monterey 时代,SecureBootModel 设 Default 毫不影响。Ventura 改了安全启动链,Default 模式下 OC 尝试加载 Ventura 的安全策略,遇上 spoof 的 iMac18,1 + Haswell 老硬件直接卡死。

改成 Disabled。重启。正常进桌面。

SecureBootModel = Default  → Monterey ✅ | Ventura ❌ (spooffed SMBIOS 必炸)
SecureBootModel = Disabled → 都可以

四、第三回合:-igfxvesa——删不掉的幽灵

前面调试时加过 -igfxvesa 进 VESA 安全模式。按理说调试完就该删掉。但等等——SSD EFI 的 boot-args 里这行还在。

<key>boot-args</key>
<string>-v debug=0x100 keepsyms=1 -igfxvesa ipc_control_port_options=0</string>

只删掉 -igfxvesa 这一个参数就行,其他的原封不动留着。 重启:

<key>boot-args</key>
<string>-v debug=0x100 keepsyms=1 ipc_control_port_options=0</string>

重启后:

system_profiler SPDisplaysDataType | grep "VRAM"

VRAM (Dynamic, Max): 7 MB

还是 7MB。但不是 -igfxvesa 导致的 7MB——这是 Ventura 把 Haswell 驱动砍掉后的 7MB。两种 7MB 长得一样,导致我排查方向跑了至少一个小时。

关键教训:

-igfxvesa → 强制 VESA 模式 → 7MB

实际上,后来反复验证发现:让 HD4600 在 Ventura 下跑起来,核心只需要两步——

  1. DeviceProperties 里 AAPL,ig-platform-id0300220DAwAiDQ==
  2. boot-args 里删掉 -igfxvesa

就这两步,别的什么都不用动,显卡就能起来。前面折腾的 SMBIOS 换型是因为 iMac16,2 被 Ventura 白名单封了必须换,SecureBootModel 是为了不卡白苹果,这些跟显卡驱动本身没关系。至于下面 OCLP、AMFI 那些,是最初排查时走的弯路——后来证实不需要也能亮。


五、第四回合:AMFI 拦路——没有 amfi 参数的后果(⚠️ 后来证伪,实际不需要)

当时进桌面后,打开 OCLP,点 Post-Install Root Patch。

弹出报错:

Cannot patch due to AMFI being enabled.

AMFI (Apple Mobile File Integrity) 是 macOS 的内核扩展验证机制。Ventura 默认强开 AMFI,阻止任何非 Apple 签名的 kext 加载。

需要关 AMFI:

<key>boot-args</key>
<string>-v amfi_get_out_of_my_way=1 ipc_control_port_options=0</string>

同时需要 AMFIPass.kext——这是一个专门为绕过 AMFI 检查而生的 kext,放进 EFI/OC/Kexts,在 config.plist 的 Kernel → Add 里启用。

重启后,OCLP Root Patch 终于能跑了。


六、第五回合:OCLP Root Patch——走了弯路的救世主(⚠️ 后来证伪,实际不需要)

# 进桌面打开 OCLP
open /Applications/OpenCore-Patcher.app

Post-Install Root Patch

  • Graphics: Intel Haswell → ✅ 勾上
  • 弹系统密码框 → 输入密码
  • 自动下载 Haswell 显卡 kext → 注入系统 → 重启

重启后:

system_profiler SPDisplaysDataType | grep "VRAM"

VRAM (Dynamic, Max): 1536 MB

Dock 毛玻璃回来了。Genie 动画回来了。系统信息里三个字:1536 MB。

以上的 OCLP 折腾其实是弯路,后来验证只需要 platform-id 填对 + 删掉 -igfxvesa 就够了,完全不需要 Root Patch。


七、Monterey vs Ventura 差异总览

项目Monterey 12Ventura 13
SMBIOSiMac16,2iMac18,1 (spoof,iMac16,2 被白名单封了)
SecureBootModelDefault 可用必须 Disabled
boot-args-v debug=0x100 keepsyms=1只删掉 -igfxvesa,别的照旧
csr-active-configAwoAAA== (0x803)同 Monterey,AwoAAA==
HD4600 驱动WEG 半原生同样是 WEG,platform-id 填对即亮
关键坑stolenmem/fbmem 手写-igfxvesa 残留
维护成本零,跟 Monterey 一样不需要额外维护

八、Ventura 最终配置

<!-- SMBIOS -->
<key>SystemProductName</key>
<string>iMac18,1</string>

<!-- boot-args:只比 Monterey 少了 -igfxvesa -->
<key>boot-args</key>
<string>-v debug=0x100 keepsyms=1 ipc_control_port_options=0</string>

<!-- SIP -->
<key>csr-active-config</key>
<data>AwoAAA==</data>  <!-- 0x803 -->

<!-- 显卡:只写 platform-id,不写任何 FB 参数 -->
<key>PciRoot(0x0)/Pci(0x2,0x0)</key>
<dict>
    <key>AAPL,ig-platform-id</key>
    <data>AwAiDQ==</data>  <!-- 0300220D -->
</dict>

<!-- 安全启动关 -->
<key>SecureBootModel</key>
<string>Disabled</string>

Kext 清单同 Monterey:Lilu / WhateverGreen / AppleALC (layout-id=3) / VirtualSMC / SMCProcessor / SMCSuperIO / RealtekRTL8111 / USBToolBox + UTBDefault


九、常见故障速查

9.1 开了 -igfxvesa 忘记删 → 永久 7MB

只删掉 -igfxvesa,不要动其他参数。 重启即可。

9.2 卡 kIOFBNotifyDisplayModeWillChange

三种可能叠加:-igfxvesa 残留 / DeviceProperties 手写了 stolenmem / SIP 没关透。

恢复环境挂载 EFI,三项逐条排除。

9.3 恢复环境没有 nano 怎么改 config

diskutil mount disk2s1

# sed 一行删掉 -igfxvesa
sed -i '' 's| -igfxvesa||g' /Volumes/EFI/EFI/OC/config.plist

# 验证
cat /Volumes/EFI/EFI/OC/config.plist | grep "boot-args"

diskutil unmount disk2s1

恢复环境是精简版 macOS,没有 nano,但 sed 和 vi 在。优先 sed,避免 vi 手滑。


十、排查清单

以后 Ventura + Haswell 遇到玄学问题,按这个顺序排查:

  • SMBIOS 是 iMac18,1?iMac16,2 被 Ventura 白名单封了 = 无限重启
  • SecureBootModel = Disabled?Default + spoof SMBIOS = 卡白苹果
  • boot-args 里删掉 -igfxvesa 了没?只删这一个,勿动其他参数
  • DeviceProperties 确定没有手写 stolenmem/fbmem/patch-enable?
  • AAPL,ig-platform-id0300220DAwAiDQ==)?

十一、最后三句话

  1. Ventura 下的 HD4600 并没有死。 platform-id 填对 + 删掉 -igfxvesa,它就活过来了。和 Monterey 一样,WEG 半原生驱动,不需要 OCLP。

  2. iMac18,1 spoof + SecureBootModel Disabled 是 Haswell 上 Ventura 必须的。 前者绕白名单、后者绕安全启动链,跟显卡本身没关系。

  3. 保留一个可启动的安装盘。 翻车时恢复环境的终端是你唯一的朋友,没有 U 盘 EFI 做救命稻草,清 CMOS 都不一定救得回来。

从 Monterey 到 Ventura,实际上就三个变化:换 SMBIOS、关 SecureBoot、删 -igfxvesa。Sonoma、Sequoia 同理——HD4600 在 macOS 上的终点就是 Sequoia,这套方法一路通。这台 2014 年的 B85 撑住了,Flutter 3.44 和 Xcode 15 都能跑了。希望下一个接盘这坨老硬件的人,少走弯路。


测试环境:技嘉 B85M-HD3-A / i5-4690 / HD4600 / Ventura 13.7.8 EFI 版本:OpenCore 0.9.x | 工具链:OpCore-Simplify + OCAT 参考:司波图 B站视频 BV1RtqEBiEDr

Hackintosh OpenCore Ventura Sonoma Sequoia HD4600 Haswell iMac18,1 黑苹果