VMware Fusion 虚拟化 macOS Ventura
2022-10-26 20:21:24 Author: 非尝咸鱼贩(查看原文) 阅读量:20 收藏

macOS Ventura 正式版在 10 月 24 日推送。那么作为 macOS 平台主流虚拟机之一的 VMware Fusion 对新系统的兼容性如何?

首先是基于 ARM 指令的 M1 / M2 等芯片,目前只能跑 arm 版 Linux 和 Windows。想要虚拟的 macOS 仍然只能 Intel 里跑 Intel。

如何升级?

而在 x64 系统上,尝试创建新虚拟机并使用 macOS 安装镜像引导,并未能如愿:

如果安装了 macOS Monterey,直接在旧版虚拟机内运行安装包 app,可以无痛升级。

客户机和宿主机都是最新版,看似没有问题。

才怪……没问题我就不会写这篇笔记了。

网卡异常

VMware 的虚拟网卡和新版系统不兼容。效果就是 guest 和 host 之间网络不通,偶然会有个别数据包发送成功,但总体上连 ping 都不可达。

另一个奇怪的现象是客户机系统会经常 kernel panic(五国)。尝试分析发现这些内核崩溃看上去完全没有章法,出现在随机的模块中。

而打开系统诊断的 Console.app,可以看到大量用户态进程也出现了高频次的内存访问错误。光看崩溃日志很像是 use afrer free 的特征,但在正式版系统里出现高频率的崩溃很不正常。

内核和用户态都有内存地址错误,看上去好像有什么东西在给随机物理内存做位翻转。尝试安装和卸载 vmtools,有没有都一样。

折腾数小时后刚好看到 VMFusion 的产品线经理也在把玩新系统。找客服不如找一线的工程师吐槽,很快得到了一个解决方案。

熟悉 VMware 的用户,改 vmx 配置文件是常规操作。

首先虚拟机关机,选择在 Finder 中查看。右键虚拟机的 bundle 目录,选择显示包内容,就可以找到对应的 vmx。

配置里搜索 e1000e,找到类似如下的一行:

ethernet0.virtualDev = "e1000e"

改成 

ethernet0.virtualDev = "vmxnet3"

这个改网卡设备的技巧早在几年前就在 VMware 的支持论坛中有提到,不知道为什么现在还不是默认配置。

重新启动虚拟机之后,网络问题解决,诡异的 kernel panic 和用户态程序错误也消失了。


Recovery

一些情况下需要进 Recovery 修改系统的配置,例如关闭 SIP 以获得对系统进程的调试权限。

普通的 Intel mac 进入 Recovery 的方式是在引导期间按组合键,但在虚拟机环境中并不奏效。

在 macOS Monterey 的客户机中,一个方案是在引导时进入 BIOS,选择从修复分区启动。

如果启动画面过快导致无法进入 BIOS 设置,同样可以通过改 vmx 配置解决。修改配置的时候一定要保持客户机为“关机”状态,否则会被覆盖。

加入如下配置可以强制在下一次引导时进入 BIOS。

bios.forceSetupOnce = "TRUE"

或者使用如下配置增加启动画面等待时间,单位毫秒。

bios.bootDelay = "1000"

选择 Enter setup / Boot from a file,然后用 Recovery 分区里的 boot.efi 启动系统。

macOS Ventura 同样的办法并不奏效,一闪而过便退出了。恐怕这个需求得用上一版本的安装镜像引导。

但另一方面,如果通过安装包升级之前,Monterey 系统上就已经修改过 NVRAM 配置,那么系统更新并不会重置这个设置。有需求关掉 SIP 的用户,这个配置肯定早就动过了。

参考资料

  1. Accessing the BIOS when the POST screen clears too quickly (1004129)
    https://kb.vmware.com/s/article/1004129

  2. https://twitter.com/mikeroySoft/status/1584989763903557634


文章来源: http://mp.weixin.qq.com/s?__biz=Mzk0NDE3MTkzNQ==&mid=2247484581&idx=1&sn=0f1614a634a07396cb451acb0881a2eb&chksm=c329fa55f45e7343c0d456555f45bdd67b8a03c7bbcb444d8628169434485db679a372c772a4#rd
如有侵权请联系:admin#unsafe.sh