折腾记—— macOS 虚拟机软件
这篇文章记录的时间是2021-11-14,目前我碰到的关于 virtualbox 的问题已经随着升级解决了,但是这一次没有结果的折腾让我们在 macOS 生态下选择 VM 软件有了一些参考。
上周看到了 macOS monetery 12.0.1的升级推送就顺手点了升级,然后神奇的事情就发生了:我的 vagrant virtualbox 虚拟机启动失败了,WTF!
原因探索
根据 vagrant up
命令执行报错的信息进行搜索,报错截图如下:
这种问题一般 stackoverflow、github 都会有比较类似答案,然后就发现了下面的这个 issue:
macOS Monterey and VirtualBox 6.1.28e
总结下来,引起这个问题的原因有三点:
- VMs cannot be started headless VB#20636
- kexts not being loaded properly VB#20637
- Cannot create network within given subnet VB#20626
前两个问题都能够通过降级 VirtualBox 版本和执行命令来解决,唯独第三个网络问题无法解决,我搭建的开发环境依赖网络构建 remote vscode,同时还需要依赖网络挂在本地文件到虚拟机里面,所以结论是在下个解决版本之前 VirtualBox 我是没法使用了。
替代方案
网络问题决定了当前在 macOS 上 VirtualBox 是无法使用了,无奈之下只能寻求替代解决方案:
VMware Fusion
VMware Fusion 是 VMware 的 macOS 专用版本(当前的版本是 VMware Fusion 12),特别值得一提的是 VMware 提供了 player 版本,这个版本功能有一定阉割不过他对个人用途是免费的。
VMware Fusion 12 当前还不支持 macOS 12.0.1
Parallels Desktop
Parallels Desktop(后面简称 PD)则支持 macOS 12.0.1,作为一款不算便宜的虚拟机软件它跟 macOS 系统的无缝搭配做的是非常好的,说得上是名声在外。
开源方案
qemu/kvm 这种解决方案都是针对 Linux Kernel 开源社区的虚拟机软件要在 macOS 系统上运行还是有问题,特别是想以此为生产工具的话还是差一点,有一个社区支持的版本:kholia/OSX-KVM: Run macOS on QEMU/KVM. With OpenCore + Big Sur + Monterey support now! Only commercial (paid) support is available now to avoid spammy issues.,不过还是需要付费。
各有千秋
VMware Fusion
我的个人电脑上有使用 VMware Fusion player 版本,其实这个版本已经够了,但是对个人使用才能免费工作场景是需要买 license 的。VMware 毕竟是 2B 的软件,软件质量上、对 Linux 系统的支持等都是最好的,可惜目前还不支持 macOS 12.0.1。另外,VMware 是买断制的,149$ 是贵了一点,这是让我唯一犹豫的地方。
PD
关于 PD 的优点,我就一句话总结:macOS 系统适配优异,全面支持 Windows,能耗优异。
接下来就是 PD 一些令人硌手的总结:
- 作为一个收费不菲的软件,客户支持、使用文档、社区维护确实差很多,特别是针对 Linux 系统
- 无法试用 pro 版本,对于需要自定义配置的用户而言,prctl 命令行工具参数混乱、文档很难找
- 挂载 macOS 使用的是自研 kernel 模块(据说还申请了专利),然后对于主流的各个版本 kernel 有的连编译都有问题(对标 VirtualBox 的 vboxfs)
- vagrant 等支持需要 pro 版本才能支持,一个开源软件的支持还要额外收费
- 配置界面混乱,vm 有配置,PD 本身有配置,两个配置中间还会相互激活
- 对于后台运行虚拟机的 headless 模式的配置和运行,让我觉得有点疑惑,感觉 PD 没理解后台进程,为什么 dock 上一定要有个后台进程的 icon
- 订阅制,针对上述硌手的地方,不得不说尽管只有 VMware 一半的订阅费用,我还是觉得收费确实很贵
直白一点说,PD 就是一个玩具级别的虚拟机软件,当然对 Windows 还是很棒的,只是这不是我需要。不过有一说一,PD 的售后还是很不错的,我买完就后悔,30天內无责退款,没二话退钱。
最后
PD 是肯定放弃了,VMware Fusion 支持新版本的 macOS 还在路上,VirtualBox 隔三个月才能有新版本升级。留给我的方案就是“等”。