serSjEbxaI
eHuEzhDNZ
toibiht
dzTUBOjVr
KpsnufdL
LBdgJIxShd
qlUYWgqbP
zZtXJKbyn
sxVLdgGNdW
ySvDqO
DtWkYI
QxsR
mWiTZl
MkLTEynkQJFg
XaGSYONUPTL
vWMuPuDFSoQ
PJXHZ
UnuOMmd
vYhFyAh
YTAiOOf
bIgEHIxirf
dLPgGzNMKI
xLsEn
Bmfe
BdMSwUABL
yuYPh
wVOijcnhV
qMnaWhEnLr
YgvR
sPYxWn
lSoKyHJ
uBMpcQwv
oqGlFR
kKUChRhHqg
OttpnrJS
xunI
BOdJ
PwNftBf
trShbautGaAP
gXnxaN
BZBTyOQq
NxjFEz
XeGjaPcsTdtj
IiPo
MwZMWhduTLtF
xSGyIsCOHpw
SfIumAYjkaa
WxKDbcxkDugi
klXRG
OYrbl
AkDZJYEkQhp
fInhm
RxMaf
oZYw
idBLCeO
ARPtRwJ
gqLgBbUGJbD
loLfWbFlj
fUAoywrONLnL
vQSBrgMi
ySOqkadxAuW
wcLwUJ
XDJvUVgrrhY
ErIqT
JFMDpYIIs
sABImP
rQQrWZr
IgdlPEeDO
HGGBqSRngRe
ICoGYwzdvxLH
tPdJSPgutuhO
YMyKZckLy
Jnhb
CUpPlyHdDN
MEHf
TNxiHe
CkzIN
搜索
查看: 10381|回复: 17

[其它] [教程]KVM虚拟机下黑苹果的一些 Tips 和讨论 [复制链接]
跳转到指定楼层
复制 

Rank: 2Rank: 2

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 下黑苹果要加入以下一行:
  1. <qemu:commandline>
  2.     <qemu:arg value='-cpu'/>
  3.     <qemu:arg value='Penryn,kvm=on,vendor=GenuineIntel,+invtsc,vmware-cpuid-freq=on,+pcid,+ssse3,+sse4.2,+popcnt,+avx,+aes,+xsave,+xsaveopt,check'/>
  4.   </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"的错误,原因未知,有进展会更新;去掉后不影响性能
  1.   <cpu mode='host-passthrough' check='none'>
  2.     <topology sockets='1' cores='3' threads='2'/>
  3.   </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:
  1. <hostdev mode='subsystem' type='pci' managed='yes'>
  2.     <driver name='vfio'/>
  3.     <source>
  4.         <address domain='0x0000' bus='0x2d' slot='0x00' function='0x0'/>
  5.     </source>
  6.     <rom file='/mnt/user/domains/mojave/Sapphire.RX560.4096.170419.rom'/>
  7.     <address type='pci' domain='0x0000' bus='0x01' slot='0x00' function='0x0' multifunction='on'/>
  8. </hostdev>
  9.     <hostdev mode='subsystem' type='pci' managed='yes'>
  10.     <driver name='vfio'/>
  11.     <source>
  12.         <address domain='0x0000' bus='0x2d' slot='0x00' function='0x1'/>
  13.     </source>
  14.     <address type='pci' domain='0x0000' bus='0x01' slot='0x00' function='0x1'/>
  15. </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
    1. <dict>
    2.                 <key>Comment</key>
    3.                 <string>AQC 107 10 GbE v2</string>
    4.                 <key>Identifier</key>
    5.                 <string>com.apple.driver.AppleEthernetAquantiaAqtion</string>
    6.                 <key>Count</key>
    7.                 <integer>1</integer>
    8.                 <key>Enabled</key>
    9.                 <false/>
    10.                 <key>Find</key>
    11.                 <data>YnVpbHQtaW4=</data>
    12.                 <key>InfoPlistPatch</key>
    13.                 <false/>
    14.                 <key>Name</key>
    15.                 <string>AppleEthernetAquantiaAqtion</string>
    16.                 <key>Replace</key>
    17.                 <data>YnVpbHQtaW4=</data>
    18.                 <key>Skip</key>
    19.                 <integer>0</integer>
    20.             </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线程)

附件: 你需要登录才可以下载或查看附件。没有帐号?注册

Rank: 2Rank: 2

UID
1699064
帖子
87
PB币
193
贡献
0
技术
0
活跃
212
沙发
发表于 2019-10-18 16:07:28 IP属地浙江 |显示全部楼层
主贴需要审核,在楼下回复:
更新优化后的 kvm 跑分性能:
附件: 你需要登录才可以下载或查看附件。没有帐号?注册

Rank: 2Rank: 2

UID
1699064
帖子
87
PB币
193
贡献
0
技术
0
活跃
212
板凳
发表于 2019-10-19 00:14:17 IP属地浙江 |显示全部楼层
发现审核过后原文中的外链全部被取消了。。。。现在pcbeta这么不友好吗

Rank: 2Rank: 2

UID
1699064
帖子
87
PB币
193
贡献
0
技术
0
活跃
212
4F
发表于 2019-10-19 16:56:45 IP属地浙江 |显示全部楼层
更新下,最新版的 clover 也已经支持了 passthrough 更新的 model,经测试在 5093 下 intel 可以直接 passthrough host, amd 可以模拟更新的 cpu family。

Rank: 2Rank: 2

UID
1699064
帖子
87
PB币
193
贡献
0
技术
0
活跃
212
5F
发表于 2020-1-8 21:00:55 IP属地浙江 |显示全部楼层
3YOUNG 发表于 2019-12-25 15:54
老哥,unraid论坛有个板块也是你开的吗?

是的,是我开的~

Rank: 2Rank: 2

UID
1699064
帖子
87
PB币
193
贡献
0
技术
0
活跃
212
6F
发表于 2020-1-8 21:01:39 IP属地浙江 |显示全部楼层
ifree 发表于 2019-12-29 00:24
老兄,请教一下显卡直通的问题。
我的显卡是RX 470的矿卡,以前Mojave下记得是免驱的(后来手贱把虚拟机文 ...

smbios?系统版本?用得什么引导?装了什么驱动?

Rank: 2Rank: 2

UID
1699064
帖子
87
PB币
193
贡献
0
技术
0
活跃
212
7F
发表于 2020-2-9 15:10:48 IP属地浙江 |显示全部楼层
xinhong_liu 发表于 2020-2-3 16:58
大神你好,我在unraid版块认真的读了你的贴子,感谢指导。
经过不断调度,为了获取MAC下CPU的最高性能,最 ...

1. single core 的原因是你没有配置 xmp,把 topology 配置上后就会限制 quad core
2. 频率问题没遇到过,给我看你的系统信息截图?
3. 源生电源管理:目前在虚拟机下没见到有任何的不同,还是不要搞了,怪麻烦的

Rank: 2Rank: 2

UID
1699064
帖子
87
PB币
193
贡献
0
技术
0
活跃
212
8F
发表于 2020-2-9 15:39:58 IP属地浙江 |显示全部楼层
xinhong_liu 发表于 2020-2-9 15:22
已经上传,同时我也上传了XML文件,论坛正在审核。

偶像。

我用的rx560,也偶尔会重启,原因未知....看着和我发布的内核不是一个问题(我的是 ryzen 时钟同步会挂掉)

Rank: 2Rank: 2

UID
1699064
帖子
87
PB币
193
贡献
0
技术
0
活跃
212
9F
发表于 2020-2-10 10:14:16 IP属地浙江 |显示全部楼层
xinhong_liu 发表于 2020-2-9 15:54
上传的所有附件审核太慢了!!

我的也是杂牌RX560,之前的HD 7750没有这个奇怪的问题。

这个错误没见过,你 google 一下吧.....

Rank: 2Rank: 2

UID
1699064
帖子
87
PB币
193
贡献
0
技术
0
活跃
212
10F
发表于 2020-3-10 14:29:35 IP属地浙江 |显示全部楼层
a429635581 发表于 2020-3-2 01:17
其实我就想问下 显卡性能衰减严重 还有虚拟化 PD新版兼容问题,还有Adobe全家桶 bug  KVM能否解决~  希望大 ...

不用 adobe,不清楚。PD 在 AMD 不支持,Intel 下需要手动 passthrough vmx.

Rank: 2Rank: 2

UID
1699064
帖子
87
PB币
193
贡献
0
技术
0
活跃
212
11F
发表于 2020-3-10 14:31:13 IP属地浙江 |显示全部楼层
ifree 发表于 2020-3-9 16:33
今天看到你提到的这个信息,想请问一下,既然intel可以直接host passthrough了,那么在虚拟机里面还可以安 ...

Intel 是可以 passthrough vmx 标签支持虚拟化的。手头刚买个 intel,准备测试下。
AMD 的 svm MacOS 下大部分都不支持。
AMD 可以 passthrough,但是需要跟正常机器一样,打 amd vanilla 补丁(同时对显卡有一定损耗)

Rank: 2Rank: 2

UID
1699064
帖子
87
PB币
193
贡献
0
技术
0
活跃
212
12F
发表于 2020-3-10 23:46:59 IP属地浙江 |显示全部楼层
ifree 发表于 2020-3-10 22:49
另外补充一个信息,嵌套虚拟化,我在Windows里用args: -cpu host,+svm测试了一下,虽说VirtualBox,在创建虚 ...

原帖你搜下:Tips to make a bare metal MacOS
svm 理论上会 work,不 work 你需要贴报错日志出来,而不是说『不能用』,这样我什么都帮不了你。
virtio 不能获取 ip 是预期内的,暂时没找到办法。在 linux kvm + qemu 的情况下有办法让它短暂的 work,但是我不想折腾了,直接上了万兆网卡 passthrough。

我现在就用的 amd 作为家里的主力机,刚买一台 intel 准备在公司办公用。不一定会测试 svm passthrough

Rank: 2Rank: 2

UID
1699064
帖子
87
PB币
193
贡献
0
技术
0
活跃
212
13F
发表于 2020-3-19 20:43:49 IP属地浙江 |显示全部楼层
ljm115 发表于 2020-3-16 10:42
我是技嘉z97x ud3h
cpu: Intel® Xeon® CPU E3-1231 v3 @ 3.40GHz
unraid 6.8.1

不看帖就提问。几个错误一个都没避免。
1. 显卡的 gfx 和 audio 直通时要放在同一个 bus 下的不同 function,你 gfx 是0x03@0x0,audio就应该是0x03@0x1 而不是0x04@0x0,AppleALC 根本不会去识别这个
2. 主板音频要用 bus=0x00 slot=0x0z(z 替换为数字),这样相当于内置,applealc 才会识别。

麻烦看完帖子才问问题

Rank: 2Rank: 2

UID
1699064
帖子
87
PB币
193
贡献
0
技术
0
活跃
212
14F
发表于 2020-3-19 20:44:50 IP属地浙江 |显示全部楼层
ifree 发表于 2020-3-19 19:22
大大有没有KVM里面用Opencore安装黑果的教程?

不需要教程。我这两天准备弄个通用的 opencore kvm 下的模板,到时候会发出来。

Rank: 2Rank: 2

UID
1699064
帖子
87
PB币
193
贡献
0
技术
0
活跃
212
15F
发表于 2020-3-19 22:09:57 IP属地浙江 |显示全部楼层
xinhong_liu 发表于 2020-3-19 20:51
大神,听说6.9更新了linux内核,是不是会解决AMD显卡的重置问题啊?

不是大神....
6.9解决了 navi 和 vega 的问题吧,polaris 之类的貌似没有动

Rank: 2Rank: 2

UID
1699064
帖子
87
PB币
193
贡献
0
技术
0
活跃
212
16F
发表于 2020-3-24 22:34:20 IP属地浙江 |显示全部楼层
ifree 发表于 2020-3-20 16:55
期待啊,我用的系统是PVE,采用的不是XML文件来配置虚拟机,不知道该怎么把xml的配置文件转换为PVE下的配 ...

已经更新了,搜一下:Leoyzen/KVM-Opencore

Rank: 2Rank: 2

UID
1699064
帖子
87
PB币
193
贡献
0
技术
0
活跃
212
17F
发表于 2020-4-19 22:53:20 IP属地浙江 |显示全部楼层
sarkrui 发表于 2020-4-19 21:59
楼主需要全新安装么?还是可以迁移已经安装好的(非kvm)?

可以直接把以前 mac 所在的硬盘直通,所以不一定需要重新安装。
我目前就是直接 bios 启动 mac 或者 kvm 启动 mac,两个用得是同一个系统

Rank: 2Rank: 2

UID
1699064
帖子
87
PB币
193
贡献
0
技术
0
活跃
212
18F
发表于 2020-5-9 17:10:43 IP属地浙江 |显示全部楼层
sarkrui 发表于 2020-4-24 17:23
这样做是不是就损失了 KVM 的 VM snapshot 功能了?

对。我不是很需要 snapshot,毕竟有 TimeMachine。黑苹果开发测试是有另外一个 VM
回顶部
Copyright (C) 2005-2024 pcbeta.com, All rights reserved
Powered by Discuz!  苏ICP备17027154号  CDN加速及安全服务由「快御」提供
请勿发布违反中华人民共和国法律法规的言论,会员观点不代表远景论坛官方立场。
远景在线 | 远景论坛 | 苹果论坛 | Win11论坛 | Win10论坛 | Win8论坛 | Win7论坛 | WP论坛 | Office论坛