积分 65 最后登录 2023-9-26 精华 0 阅读权限 20 主题 4 UID 1699064 帖子 87 PB币 193 威望 5 贡献 0 技术 0 活跃 212
UID 1699064 帖子 87 PB币 193 贡献 0 技术 0 活跃 212
发表于 2019-10-17 23:18:31
IP属地浙江
| 显示全部楼层
本帖最后由 lycandcs 于 2019-10-18 11:45 编辑
近些日子来折腾 KVM 下的黑苹果,有一些心得,会不断更新,抛砖引玉,欢迎小伙伴们进行讨论
本教程不是完整的教程,完整的安装教程网上搜索一大把,这里主要介绍一些 Post Install 的性能及一些 Tips,基本上网上的教程很容易忽略掉的。
1. CPU
1.1 CPU Model
大家都知道 QEMU+KVM 下黑苹果要加入以下一行:
<qemu:commandline>
<qemu:arg value='-cpu'/>
<qemu:arg value='Penryn,kvm=on,vendor=GenuineIntel,+invtsc,vmware-cpuid-freq=on,+pcid,+ssse3,+sse4.2,+popcnt,+avx,+aes,+xsave,+xsaveopt,check'/>
</qemu:commandline> 复制代码 原理是虚拟 Penryn CPU,但是由于 Penryn 太老了,在新的黑苹果上无法直接运行(缺少一些 feature 例如 popcnt, avx等),所以在这里又会补加一些 feature。
但是为什么要用 Penryn 呢?经测试发现,使用 clover 的情况下,cpu model 最多选择到 IvyBridge 就到头了,更新的 model 会导致系统无法启动。
研究了代码发现 clover 对于 CPU Model 会做一些处理,如果大于 IvyBridge 则会报错,所以如果使用 clover 最好使用 IvyBridge 模型(原因下面会说)。
但是近来发现,使用 opencore 后 CPU Model 可以任意选择!所以如果你是 Intel CPU,可以直接使用 host-passthrough 尽可能的 passthrough feature 以提升性能。
1.2 CPU Topology
如果 CPU Model 选择比 Penryn 更新的模型,或者核数是奇数或者大于8核,需要去掉xml中“topology”这一行保证能够启动,否则会遇到“x86_topology_lock error"的错误,原因未知,有进展会更新;去掉后不影响性能
<cpu mode='host-passthrough' check='none'>
<topology sockets='1' cores='3' threads='2'/>
</cpu> 复制代码
1.3 CPU Performance
KVM最令人担忧的 passthrough 后的性能。但经过一番操作后基本可以获得台式机的性能,要点就是上述说的 cpu model 选择更新的接近的 CPU Famliy,或者直接 host-passthrough(opencore)。
另外一个要点是使用 IvyBridge 而不是 Penryn 的原因是如果你的 CPU 支持 avx2/fma 等更新 feature,需要 IvyBridge 模型后 MacOS 才能够正确识别,如何查看系统正确识别了透传的features:
一些比较重要的feature,能 passthrough 就 passthrough(主要列出网上没有提到的一些):
avx(没有这个 feature 系统功能会收到影响,会无法启动) fma(没有这个feature metal支持会有问题) f16c bmi1 bmi2 avx2
2. GPU
2.1 GPU Passthrough(HDMI audio)
按照网上的教程,非常容易无法使用 HDMI audio,这也是最长遇到的一点。例如下面的 passthrough xml:
<hostdev mode='subsystem' type='pci' managed='yes'>
<driver name='vfio'/>
<source>
<address domain='0x0000' bus='0x2d' slot='0x00' function='0x0'/>
</source>
<rom file='/mnt/user/domains/mojave/Sapphire.RX560.4096.170419.rom'/>
<address type='pci' domain='0x0000' bus='0x01' slot='0x00' function='0x0' multifunction='on'/>
</hostdev>
<hostdev mode='subsystem' type='pci' managed='yes'>
<driver name='vfio'/>
<source>
<address domain='0x0000' bus='0x2d' slot='0x00' function='0x1'/>
</source>
<address type='pci' domain='0x0000' bus='0x01' slot='0x00' function='0x1'/>
</hostdev> 复制代码 其中2d:00.00和2d:00.01分别为显卡和音频设备,需要注意的是,两者必须使用同一个 bus(0x01) 不同的 function(显卡0x0,声卡0x1),这里会影响到 metal 加速和 hdmi 音频的识别!
上面这一点是 metal 和 hdmi 音频所必须的,否则你哪怕使用 Lilu/WEG 等也是无效的。
2.2 GPU 性能和硬解,Smbios 的选择
硬解的加速可以参照之前大神的独显硬解开启的方法。
这里推荐使用 iMacPro1,1 和 MacPro7,1 两个 SMBIOS,前者大家熟悉的比较多,后者比较新,但是理论上更适合黑苹果,但目前对于里面的配置了解的不多
另外在 kvm 下,我发现 Lilu 和 WEG 之前是不 work 的!查看代码后发现 Lilu 不能够识别 QEMU 的 pci-bridge vendor-id,导致 Lilu 找不到显卡设备(声卡不确定),所以 WEG 是根本无法使用的!(所有网上教程叫你放 Lilu/WEG 都是没用的)。我已经给 Lilu 提交了 Issues 和解决方案(见这里),Lilu 已经在 master 上更新了 QEMU 版本,所以如果使用 Lilu/WEG ,请务必将 Lilu 更新到 1.3.9 版本以后,否则是没法使用的。
3. 网络
KVM 下网络基本有四个选择:e1000-82545em, vmxnet3, virtio, passthrough
3.1 e1000-82545em(推荐,稳定)
intel 的适配器,好处是免驱,稳定,但是速度被限制在 1000M
3.2 vmxnet3
速度快(和 host 通信 4Gb/s +),苹果最先加入的虚拟支持。但是 bug 非常多(无法使用 icloud/apple store,上传速度慢,跨机器通信不稳定),不稳定,不推荐使用(网上也推荐这个的最多)
3.3 virtio
mojave 及以前 virtio 是无法使用的(有个人开发了 virtio 的驱动但是几年没更新了),但是!
catalina 加入了 virtio 的支持,见下面图片。但是当前还有一些 BUG,我也没见到相关讨论,但是我发现了如果去开启它:
不要在 xml 中添加 virtio 的网络 单独准备一个 xml,里面只写 virtio 的驱动 boot args 里面需要添加 debug=0x100 和 keepsyms=1,否则机器会无限重启 启动机器,进入 clover 界面后,在 host 终端下输入:
3.4 passthrough
3.4.1 ASUS XG-C100C
这个网卡之前 10.13.3 时有个 bug,安装系统时会被自动升级成苹果的 firmware,从而可以在苹果中使用;但是后续版本被取消了。同时使用苹果的firmware 会导致在 windows 下驱动异常。(见讨论)
在 Catalina 里意外的发现可以免驱使用了!
做法:
从这里下载最新的 Aquantia AQC firmware 并在 windows 下更新 firmware 在 clover 中添加 patch<dict>
<key>Comment</key>
<string>AQC 107 10 GbE v2</string>
<key>Identifier</key>
<string>com.apple.driver.AppleEthernetAquantiaAqtion</string>
<key>Count</key>
<integer>1</integer>
<key>Enabled</key>
<false/>
<key>Find</key>
<data>YnVpbHQtaW4=</data>
<key>InfoPlistPatch</key>
<false/>
<key>Name</key>
<string>AppleEthernetAquantiaAqtion</string>
<key>Replace</key>
<data>YnVpbHQtaW4=</data>
<key>Skip</key>
<integer>0</integer>
</dict> 复制代码
4. USB
5. 其它
5.1 常见报错
5.1.1 开机 panic,提示 AppleMCEReportError
catalina 加入了 mce 的支持,如果机型选择 MacPro7,1 或 iMacPro1,1,且 CPU 不被支持(更老或者AMD),那么就会报错。
解决办法就是添加一个 AppleMCEReporterDisabler.kext.zip。讨论见这里
5.2 性能
以下是 windows 下跑分
以下是 amd-vanilla 下跑分
以下是 kvm-hackintosh 下跑分(只有4核8线程)
展开阅读全文​
附件:
你需要登录 才可以下载或查看附件。没有帐号?注册