更新win11后,vmware无法正常使用了,症状如下:可以打开虚拟机,但是挂起的时候会报错
VMware Workstation 不可恢复错误: (vcpu-0),Exception 0xc0000005 (access violation) has occurred.
传输 (VMDB)错误 -14: Pipe connection has been broken。
还有一些其他的症状,比如说不能保存快照,虚拟机无法使用虚拟化引擎等,如果说只是不能挂起还可以将就,但影响这么多了,就不得不处理这个问题了。
经过漫长的google,发现是win11的更新导致hyper-v又跟vmware的虚拟化技术冲突了,win10本来已经解决了这个问题,但现在又出现了,一时也等不到微软去解决这个问题,只好在hyper-v与vmware之间选取一个。
但是问题又来了!win11无法通过控制面板去关闭hyper-v,又是搜索搜索,发现可以通过管理员身份打开cmd,执行命令
bcdedit /set hypervisorlaunchtype off
执行并重启之后发现,不仅wsl2用不了了,而且使用vmware打开虚拟机还会直接自动重启,服了。。。
最后几经周折,发现bcdedit的输出如下
Windows 启动管理器--------------------标识符 {***}device partition=DeviceHarddiskVolume1path EFIMicrosoftBootbootmgfw.efidescription Windows Boot Managerlocale zh-CNinherit {***}default {***}resumeobject {***}displayorder {***} {***} {***}toolsdisplayorder {***}timeout 0Windows 启动加载器-------------------标识符 {***}device partition=C:path WINDOWSsystem32winload.efidescription Windows 11locale zh-CNinherit {***}recoverysequence {***}displaymessageoverride Recoveryrecoveryenabled Yesisolatedcontext Yesallowedinmemorysettings 0x15000075osdevice partition=C:systemroot WINDOWSresumeobject {***}nx OptInpae ForceEnablebootmenupolicy Standardhypervisorlaunchtype AutoWindows 启动加载器-------------------标识符 {***}device partition=C:path WINDOWSsystem32winload.efidescription Windows10 no Hyper-Vlocale zh-CNinherit {***}recoverysequence {***}displaymessageoverride Recoveryrecoveryenabled Yesisolatedcontext Yesallowedinmemorysettings 0x15000075osdevice partition=C:systemroot WINDOWSresumeobject {***}nx OptInbootmenupolicy Standardhypervisorlaunchtype OffWindows 启动加载器-------------------标识符 {***}device partition=C:path WINDOWSsystem32winload.efidescription Windows10 no Hyper-Vlocale zh-CNinherit {***}recoverysequence {***}displaymessageoverride Recoveryrecoveryenabled Yesisolatedcontext Yesallowedinmemorysettings 0x15000075osdevice partition=C:systemroot WINDOWSresumeobject {***}nx OptInbootmenupolicy Standardhypervisorlaunchtype Off发现不仅有win11的,还有win10的启动加载器,然后我前面执行的关掉hyper-v的命令只影响了win10的,win11的hypervisorlaunchtype属性还是auto!不是off。
因此怎么去掉旧的win10的东西就可能是解决方法。
最后考虑到C:/windows.old文件夹,这个是新系统更新时保留旧系统的东西,用于回滚到win11。
但是删除它也不是个容易的事,管理员权限也搞不定它,最后通过 设置->系统->存储->临时文件
删除临时文件中的旧系统文件即可。
删除windows.old文件后,再次执行命令
bcdedit /set hypervisorlaunchtype off
重启后发现vmware正常了!
bcdedit命令的输出中也没有win10的东西了,win11的hypervisorlaunchtype属性确实是off了。
最后,这种方法是牺牲了hyper-v的,暂时无法使用wsl2,希望微软快点解决问题。