总结归纳 Hackintosh 的一些问题

Cap1 前言

从2019年低开始正式入 Hackintosh 的坑,一直用到现在,从 Apple ARM 的桌面设备出现,就意味着 Hackintosh 进入死亡倒计时。不过最近买了新的主机,这可能对我来说是最后一台 Hackintosh 主机了。由于之前的 8700k 设备不能满足于开发和娱乐环境,就寻思要换主机设备。

Cap2 新主机

先说说硬件配置吧,要满足接近完美 Hackintosh 需要在硬件上做足准备,所以有些硬件在现在看起来不是主流,优先适配 Hackintosh 系统即可:

硬件类型 硬件说明 备注说明
处理器 Intel Core i7-14700KF
主板 技嘉 B760M AORUS ELITE
内存 金士顿 DDR5 64 GB 5600MHz 32GB x 2
系统硬盘 致态 SSD 1TB / 致态 SSD 500GB macOS / win 双系统
数据硬盘 金士顿 SSD 1TB / 希捷2T HHD
显卡 AMD Radeon RX 6900 XT 其他品牌刷蓝宝石 Bios
网卡 BCM4356 2230 macOS 免驱

Cap3 Hackintosh 配置

本来想在 Github 随便找个 EFI 用好了,不过玩 Hackintosh 这么久还是自己动手建立专属 EFI 使用,根据现有的资料,弄了能基本使用的 EFI

根据 Dortania 文档 查阅了解,根据我的设备信息 ACPI 需要如下文件:

ACPI 名 说明 备注
SSDT-AWAC.aml 修复电源管理
SSDT-EC-USBX.aml 修复嵌入式控制器
SSDT-PLUG-ALT.aml 修复系统时钟

据说技嘉主板需要很多类似的文件,不过上面我只弄了三个文件就可以用了。然后一些 Quirk 特性在网上找资料看看就可以了,推荐 国光黑苹果 教程,写的确实不错。关于 Kext 我列出目前已有的:

Kext 名 说明 备注
Lilu.kext 扩展库 必备核心
VirtualSMC.kext
USBMap.kext USB 映射定制 需定制,后面会提
SMCRadeonSensors.kext AMD 传感器驱动
BlueToolFixup.kext
AirportBrcmFixup.kext
BrcmFirmwareData.kext
BrcmPatchRAM3.kext
SMCProcessor.kext
SMCSuperIO.kext
WhateverGreen.kext
LucyRTL8125Ethernet.kext 网卡驱动
CPUFriend.kext
CPUFriendDataProvider.kext 这里使用 iMacPro1,1 的数据
CpuTopologyRebuild.kext boot arg 添加 -ctrsmt 参数
AppleSSD.kext 参考 可选
NVMeFix.kext
RestrictEvents.kext 显示正确 CPU 信息
AppleALC.kext

方便给OCAT 记录升级清单:

Lilu.kext | https://github.com/acidanthera/Lilu
AppleALC.kext | https://github.com/acidanthera/AppleALC
WhateverGreen.kext | https://github.com/acidanthera/WhateverGreen
VirtualSMC.kext | https://github.com/acidanthera/VirtualSMC
RestrictEvents.kext | https://github.com/acidanthera/RestrictEvents
BrcmPatchRAM.kext | https://github.com/acidanthera/BrcmPatchRAM
AirportBrcmFixup.kext | https://github.com/acidanthera/AirportBrcmFixup
NVMeFix.kext | https://github.com/acidanthera/NVMeFix
CPUFriend.kext | https://github.com/acidanthera/CPUFriend
LucyRTL8125Ethernet.kext | https://github.com/Mieze/LucyRTL8125Ethernet
SMCRadeonSensors.kext | https://github.com/ChefKissInc/SMCRadeonSensors
CpuTopologyRebuild.kext | https://github.com/b00t0x/CpuTopologyRebuild

上面配置这些驱动目前使用没有问题,后续可能继续再优化精简驱动。

使用 RestrictEvents.kext 需要开启 ProvideCurrentCPUInfo 选项 在 Kernel - Quirk 列表中

Cap4 USB 定制

Why should you USB map 就知道定制 USB 有天大的好处,不过此文档接近定制 USB 问题很繁琐,还好 USBToolBox 工具出来拯救手残党,不过使用这个工具必须在 Windows 环境下,根据 USBToolBox 文档介绍,此工具定制分为俩种情况:

  • 使用 Apple 原生类,会根据机型(SIMBIOS ID)生成专用的 USBMap.kext
  • 使用 USBToolBox 自有类,会生成通用的 UTBMap.kext,需要配合 USBToolBox.kext 一起使用

所以上面驱动我使用了原生类,因为原生类性能偏好,坏处就是要自己定制,不一定合适其他人的设备,除非你和我型号一摸一样。注意定制 USB 下面几个情况:

  • USB 端口不要超过 15 个
  • 蓝牙一定要内建,USBToolBox 可以选择 Port 并且修改内建类型,具体可以搜索资料学习

Cap5 显卡优化

由于 6000 系列显卡,需要在 boot-args 添加 agdpmod=pikera 参数,否则无法正常显示。然后在 DeviceProperties 添加设备:

			
<key>PciRoot(0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)</key>
<dict>
	<key>@0,name</key>
	<string>ATY,Carswell</string>
	<key>@1,name</key>
	<string>ATY,Carswell</string>
	<key>@2,name</key>
	<string>ATY,Carswell</string>
	<key>@3,name</key>
	<string>ATY,Carswell</string>
	<key>device_type</key>
	<string>ATY,CarswellParent</string>
</dict>

虽然不懂原理,但后续在测试 Geekbench 跑分的时候,大概提升了接近 6000 分,看起来多少是有一点效果。

Caps6 CPU 优化

NVRAM 添加数据进行修改处理器信息:

<key>4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102</key>
<dict>
	<key>revcpu</key>
	<integer>1</integer>
	<key>revcpuname</key>
	<string>14th Gen Intel(R) Core(TM) i7-14700KF</string>
	<key>rtc-blacklist</key>
	<data></data>
</dict>

然后在 Kernel 修改仿冒十代 CPU

  • Cpuid1Data: 55060A00 00000000 00000000 00000000
  • Cpuid1Mask: FFFFFFFF 00000000 00000000 00000000

上面说到添加 CpuTopologyRebuild.kext 会处理大小核心,在 boot arg 需要添加 -ctrsmt 参数进一步优化功耗。

测试下来最大酷睿和最小酷睿运转正常。

Cap7 声卡

主要参考资料是 AppleALCSupported codeshttps://github.com/acidanthera/appleALC/wiki/Supported-codecs

然后根据自己声卡型号找到对应的 id 即可,在 DeviceProperties 添加设备写入下面代码:

<key>PciRoot(0x0)/Pci(0x1F,0x3)</key>
<dict>
	<key>AAPL,slot-name</key>
	<string>Internal@0,31,3</string>
	<key>device_type</key>
	<string>Audio device</string>
	<key>hda-gfx</key>
	<string>onboard-2</string>
	<key>layout-id</key>
	<integer>98</integer>
	<key>model</key>
	<string>Starship/Matisse HD Audio Controller</string>
</dict>

Cap8 蓝牙睡死

博通网卡蓝牙模块在目前系统 macOS Ventura 13.6.6 会出现问题,具体表现为睡眠唤醒后,蓝牙会出现睡死的情况,需要过几分钟时间才能正常。在网上搜了很久资料没有治本的方法,不知道根本原因在哪里,归纳为是博通网卡导致恐慌问题,为了解决此问题利用 sleepwatcher 程序监听系统睡眠和唤醒事件,然后在不同的事件触发 blueutil 蓝牙开关。

# 安装 sleepwatcher
brew install sleepwatcher

# 安装 blueutil,注意:使用 sudo pkill bluetoothd 无效,利用 blueutil 有效
brew install blueutil

# 在根目录下新建 2 个文件
cd ~
touch .sleep
touch .wakeup

# 授予 read, write, and execute 权限 for everyone
sudo chmod 777 .sleep
sudo chmod 777 .wakeup

# 查看 blueutil 路径,比如 /usr/local/bin/blueutil,后面用得到
which blueutil

# 利用 vim (vim .sleep) 往 .sleep 中写入内容,睡眠时关闭蓝牙
/usr/local/bin/blueutil -p 0
echo "[`date "+%Y-%m-%d %H:%M:%S"`] sleep $?" >> ~/.sleepwatcher.log

# 利用 vim (vim .wakeup) 往 .wakeup 中写入内容,唤醒时开启蓝牙
/usr/local/bin/blueutil -p 1
echo "[`date "+%Y-%m-%d %H:%M:%S"`] wakeup $?" >> ~/.sleepwatcher.log

# 运行服务,会弹窗要求一个系统权限,即:在 Privacy & Security > Input Monitoring 中添加 sleepwatcher,同意
brew services start sleepwatcher

# 查看进程,检查执行脚本的路径对不对,应该是 /Users/xxx/.sleep 和 /Users/xxx/.wakeup ,xxx 是用户名。
# 如果路径不对,你会发现没有日志,因为脚本根本没有执行
ps aux | grep sleepwatcher

#### 如果是 /Users/brew/actions-runner/_work/homebrew-core/homebrew-core/bottles/home/,这就
### 参考 <https://github.com/Homebrew/discussions/discussions/4231>
## 1. 重装 sleepwatcher
HOMEBREW_NO_INSTALL_FROM_API=1 brew reinstall sleepwatcher
## 2. 重启服务
brew services restart sleepwatcher
## 3. 查看进程,检查执行脚本的路径对不对
ps aux | grep sleepwatcher

# 查看 ~/.sleepwatcher.log 来验证是否执行了脚本,如果没有问题了,删除输出日志的命令和.sleepwatcher.log