更新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=\Device\HarddiskVolume1
path \EFI\Microsoft\Boot\bootmgfw.efi
description Windows Boot Manager
locale zh-CN
inherit {***}
default {***}
resumeobject {***}
displayorder {***}
{***}
{***}
toolsdisplayorder {***}
timeout 0
Windows 启动加载器
-------------------
标识符 {***}
device partition=C:
path \WINDOWS\system32\winload.efi
description Windows 11
locale zh-CN
inherit {***}
recoverysequence {***}
displaymessageoverride Recovery
recoveryenabled Yes
isolatedcontext Yes
allowedinmemorysettings 0x15000075
osdevice partition=C:
systemroot \WINDOWS
resumeobject {***}
nx OptIn
pae ForceEnable
bootmenupolicy Standard
hypervisorlaunchtype Auto
Windows 启动加载器
-------------------
标识符 {***}
device partition=C:
path \WINDOWS\system32\winload.efi
description Windows10 no Hyper-V
locale zh-CN
inherit {***}
recoverysequence {***}
displaymessageoverride Recovery
recoveryenabled Yes
isolatedcontext Yes
allowedinmemorysettings 0x15000075
osdevice partition=C:
systemroot \WINDOWS
resumeobject {***}
nx OptIn
bootmenupolicy Standard
hypervisorlaunchtype Off
Windows 启动加载器
-------------------
标识符 {***}
device partition=C:
path \WINDOWS\system32\winload.efi
description Windows10 no Hyper-V
locale zh-CN
inherit {***}
recoverysequence {***}
displaymessageoverride Recovery
recoveryenabled Yes
isolatedcontext Yes
allowedinmemorysettings 0x15000075
osdevice partition=C:
systemroot \WINDOWS
resumeobject {***}
nx OptIn
bootmenupolicy Standard
hypervisorlaunchtype 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,希望微软快点解决问题。