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 声卡
主要参考资料是 AppleALC
的 Supported codes
:https://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