最近在做 RN 开发,安装了 Genymotion 模拟器。之后发现开 VMware Fusion 虚拟机调试旧 IE 时,会在启动时报「Could not open /dev/vmmon」的错误导致无法启动。
Could not open /dev/vmmon
Failed to initialize monitor device
如果用 sudo kextutil /System/Library/Extensions/vmmon.kext
启动则会报错:
Kext com.vmware.kext.vmx86 failed to load (0xdc008017).
Failed to load kext com.vmware.kext.vmx86 (error 0xdc008017).
在网上搜了一下,原因是 VMware Fusion 跟 VirtualBox(Genymotion 和 Docker for Mac 都会依赖的免费虚拟机应用)共存时,如果装了太多虚拟机或虚拟设备,会导致双方共同占用一项共享的系统资源(major device number),导致它被 VirtualBox 占满时 VMware Fusion 中的虚拟机无法启动。解决的方法很暴利,卸载 VirtualBox 就行了。
卸载完可以使用指令 sudo kextutil /System/Library/Extensions/vmmon.kext
启动,然后通过 kextstat | grep vmx
就可以看到已经启动成功。