一、传统AMD黑苹果:修改macOS以适应CPU
自从Apple开源了macOS内核,人们就想办法通过重新编译内核,让macOS运行在非Intel处理器上。但是修改内核法目前还有以下问题:
- 只能使用固定版本的macOS,不能平滑升级;
- 不稳定:修改的内核与驱动会导致不定期死机或驱动失效;
- 专业软件崩溃:一些软件需要用到Intel专用的指令集,因此完全无法运行或需要阉割功能模块,如PhotoShop;
- FaceTime与iMessage无法使用;
一个随时可能死机的系统是无法作为生产力工具的。因此用了两周后我把目光转向了虚拟化。
二、新姿势总结:虚拟化CPU以适应macOS
经过又两周的使用,在Proxmox中使用KVM虚拟化的macOS表现完全超乎我的想象:
- CPU性能:与直接安装相比损失5%左右;
- GPU(GTX 1050Ti):未观察到性能损失;
- 电源管理:处理器可正常变频!
- 兼容性:原版macOS、Photoshop均可完美使用,随意升级;
- 稳定:尚未出现过macOS崩溃的事;
- FaceTime与iMessage均可使用;
由于新购的RX560还在路上,因此还未升级Mojave。下面是我的系统信息:
下面是我的Cinebench R15跑分:
三、虚拟化之路
为了性能考虑,首先我把目光放在了硬件虚拟化上:
- VMware vSphere / ESXi:无法仿冒CPU,仍需修改内核;
- Hyper-V:无法随意进行GPU Passthrough;
- RHEV:收费;
- Xen
- KVM
还剩Xen与KVM。我Google一下,便搜到了Kohlia的这个repo,即基于KVM来虚拟化macOS。
使用KVM虚拟化有以下方式:
- Ubuntu等发行版自带KVM
- Proxmox
- unRaid(收费)
但是经过自己体验,并不推荐自行安装Linux来配置,因为:
- 配置复杂:安装Linux、配置Qemu与KVM、PCI Passthrough相当的繁琐,涉及内核模块修改等,很容易搞崩系统;
- 新技术体验困难:想体验lvm与自动备份等技术需要花大量时间琢磨。
- 维护困难:配置好PCI Passthrough后主机就无输出了,只能用另一台设备ssh到上面,对linux命令行操作要求较高;
所以,当我接触到Proxmox以后一下就爱上了它:
- 免费
- 各种技术开箱即用:LVM、自动备份、防火墙、NAS、Qemu虚拟机、LXC容器...
- Nicholas Sherlock已经写了一个在Proxmox中安装macOS的教程
- 提供Web界面与JavaScript API进行监控与管理!
- 基于Debian,便于安装各种软件
但是与网上已经封装好的AMD黑苹果系统镜像相比,自行安装Proxmox并配置macOS还是要麻烦的多,至少需要对Linux较为熟悉才行。
四、可能存在的问题
- 虚拟化软件无法运行:VMware Fusion、Parellels Desktop、Docker for Mac等均无法运行。但是我们直接用Proxmox来运行和管理虚拟机与容器显然更好,所以无妨:)
- 百度网盘无法运行:Mac版百度网盘会监控当前是否在虚拟机中,目前我在另一个Windows虚拟机中运行百度网盘;
- USB数量限制在5个,如需更多USB设备,恐怕要直通整个USB总线;
- 开关机慢:关机需要先关macOS再关Proxmox;
- HandOff无法使用:购买的BCM94360 CS2直通进macOS后,可以识别到USB总线中有Bluetooth设备但无法使用蓝牙,暂未解决;
- IOMMU组太少:有些主板的IOMMU组很少,甚至PCIe槽与各种总线分在同一组中,先用这里的方法试试,如果无法解决,那就无法进行PCI直通了。我一开始购买的Asus B350 plus显卡就没有单独的分组,后来购买的MSI x370 gaming plus就有很多分组;
五、总结
由于工作繁忙,时间有限,就不做详细教程了,参考上面Nicholas Sherlock的教程即可。此方法技术门槛较高,不适合对linux完全陌生的同学们。但是倘若有琢磨的兴趣,并且英文还可以的话,装好了以后除了一个流畅稳定的macOS,你还会收获到多得多的东西,因为只用Proxmox装个macOS的话,属实是有些浪费了,LVM、防火墙、NAS这些新技术就在眼前,何不一并琢磨一番?
法律风险提醒:在非Apple的硬件上安装macOS系统可能违反其使用协议,本文仅提供技术上的交流与探究,还请读者们自行遵守相关条例。
Comments | 17 条评论
ifree 博主
非常棒的分享!谢谢,另有一个问题请教,由于Ryzen R7 1700x是没有集成核显的,但要让虚拟化的OSX达到可用的程度,应该是需要直通一个显卡的,那么是否需要两张显卡才能工作,一个用于亮机,另一个用于直通到虚拟机呢?可否介绍一下你的硬件配置呢?
cheney 博主
@ifree
不需要哦,可以直通当前使用的显卡。
当前硬件:
主板:Asrock Taichi x370(实际上任意一个x370板子均可)
CPU:Ryzen 7 1700x
散热器:大镰刀千石船
显卡1(for macOS):Sapphire RX570 4G
显卡2(for Windows):Onda GTX1050 Ti
内存:KELVV BOLT 3000 16G@2933Mhz + Corsair LPX 3000 16G@2933Mhz
Nvme SSD(for Windows):Asgard AN 256G
SATA SSD(for macOS): WD Blue 500G
网卡/蓝牙:BCM943602CS
电源:Antec AP500
头铁想吃苹果 博主
同配置,太极x370,1700x ,574和588 24g 2933mhz
看了白嫖王的视频来的,希望博主能出一个详细教程。博主v5
Andy 博主
@头铁想吃苹果
同样是的~ 哈哈
jamesxxx1997 博主
您好,請問一下
是否能在筆記本上利用此方法安裝macos呢?
需要有哪些條件的筆記本才有可能安裝呢?
謝謝!
cheney 博主
@jamesxxx1997
理论上是可以的,但是也许会有以下问题:
1. 需要检测一下BIOS是否可开启vt-d或者amd的iommu功能
2. gpu是否在一个单独的iommu分组中
quetzacoatl 博主
请问你的SSD是用PVE官网的教程来直通的吗?https://pve.proxmox.com/wiki/Physical_disk_to_kvm
我的NVME用该方法性能似乎有挺大的损失,SSD不能用和显卡类似的方法来隔离直通吗?
cheney 博主
@quetzacoatl
应该有两种直通的方式,第一种是看那个控制器是否在单独的iommu组里面,如果在的话这种方式性能是最好的,和裸机几乎无异。第二种是指定硬盘为/dev/disk/by-id/xxx下的硬盘或者分区,这种方式性能不如上面,不过也不错。我自己是用的后一种方式。
quetzacoatl 博主
@cheney
再请教一个问题。我试过直接直通PCIE通道,但似乎开不了机,提示没有起动设备。PVE的bios似乎不能直接认nvme?
quetzacoatl 博主
@cheney
我靠,我好像找到了一个方法能真正直通NVME。用直通显卡的方式把NVME硬盘直通过去。单独建立一个虚拟磁盘加载Clover引导,用以回避PVE不能引导NVME的问题。就好像老主板强行上NVME一样的方法,用clover代替bios引导。目前我的硬盘已经显示是三星960evo而不是QEMU harddisk了。等我把其他问题搞定以后再仔细研究一下是不是真有性能提升。
冷愁 博主
使用kvm直通rx560后是能够正确识别显存型号和驱动的,但是safara、finder等tab会背景会变成黑色hover时会闪屏。
chrome也不能使用gpu硬件加速,使用safari访问一些动画网站例如icloud官网整个机器就变得非常卡,不知道楼主有遇到这个问题吗
cheney 博主
@冷愁
这个我还没碰到喔,你在虚拟机里装个双系统Windows试试有问题吗
冷愁 博主
windows下也不确定有没有问题,装上驱动是能正常使用的,跑分也没问题 。
查下来发现会掉metal支持,有时候有有时候没有了,也没有hdmi音频。
不确定是不是kvm直通导致有些接口发生了变化,还是说clover太旧了。
目前10.14.3不会掉metal,但是10.14.5以上会掉;貌似mojave对rx560识别的framebuffer不像以前版本了,当前是个通用的radeonframebuffer,哪怕我显卡只有3个口,mac也识别有6个,所以我怀疑这里是不是有问题
许生 博主
你好 我的配置跟你的一模一样 但是我现在遇到问题了 你能帮我看看嘛 我把efi套进去之后就开不了机了 QQ157***8
langziyang 博主
所以只有核显也可以直通?
cheney 博主
@langziyang
理论上是可以的。
不过,要看核显是不是在单独的iommu group里,如果不在的话可能要考虑ACS补丁。
langziyang 博主
@cheney
AMD 5600G,不知道行不行