使用启用了Hyper-V和安装了WSL2的VirtualBox无法启动Windows 10客户机

31

我最近将我的Windows 10版本更新到了2004版,并且也将WSL更新到了WSL2。

当我试图通过VirtualBox 6.1.8使用虚拟机(Windows 10 Host / Windows 10 Guest)时,遇到了一个问题。每次尝试启动它时,它变得非常缓慢,并且无法通过启动加载屏幕。

根据Microsoft的这个文档,最新版本的VB应该已经解决了这个问题。

我该怎么办才能解决这个问题?


这不算是一个完美的解决方案,但我找到了一种改善工作流程的方法。如果你不需要同时使用两者,但又不想禁用Windows功能(并每次都要重新启动),你可以打开 PowerShell 会话并暂时关闭 WSL。 wsl --suthdown - augustoht
3个回答

27
如果你想节省大量时间的话,可以降级回WSL1。我已经升级到了WSL2,并尝试让VirtualBox与其配合使用,但我并没有找到有用的信息。有一些指南建议关闭VirtualBox的某些功能可以使其正常工作,但这会使它比现在更慢,这实际上违背了初衷。参考链接:https://github.com/MicrosoftDocs/WSL/issues/536https://superuser.com/q/1531337

9
遗憾的是,MS文档问题已被关闭,并声称它是可行的。我另外开了一个案例:https://github.com/MicrosoftDocs/WSL/issues/798 - Jeff Learman
4
如果有人对降级操作感到困惑,请参考以下链接:https://github.com/MicrosoftDocs/WSL/issues/590#issuecomment-602029634 - techolic

20

自从VirtualBox 6.0版本后,增加了对Hyper-V的支持,但它仍处于试验阶段,这解释了性能不佳的原因(https://docs.oracle.com/en/virtualization/virtualbox/6.0/admin/hyperv-support.html)。

我可以通过在Windows功能中禁用WSL2来解决这个问题。 如果您进入控制面板>所有控制面板项目>程序和功能> Windows功能,您会发现一个列表,您可以在其中禁用或启用一些Windows功能。

可能Hyper-V已经在功能中禁用了,你可能会想为什么VirtualBox仍然无法正常工作。这是因为WSL2在底层使用Hyper-V,即使您未启用自定义使用。

要使VirtualBox再次可用,您必须取消勾选虚拟机平台适用于Linux的Windows子系统功能,并重新启动电脑以生效。

显然,这将禁用PC使用WSL2,但随时可以重新激活这些功能以再次使用WSL2。如果您不强制同时使用VirtualBox和WSL2,则此方法非常有效。


谢谢。我应该猜到了。 因为安装了WSL2后,我的Docker开始在未激活Hyper-V的情况下工作。 - Yevgeniy Afanasyev

2
您必须激活“Windows Hypervisor Platform”。
要做到这一点,请在开始菜单上搜索“Windows资源”。在搜索结果中打开“激活/停用Windows资源”。
在列表中选择“Windows Hypervisor Platform”选项,然后点击确定。这是由微软公开的API,使第三方虚拟化提供者与Hyper-V兼容,而WSL2使用的就是Hyper-V。
这是因为在主机机器上只能运行一个hypervisor。因此,WSL2使用的Microsoft Hyper-V hypervisor防止VirtualBox使用处理器虚拟化扩展。
请参阅下面的常见问题解答:

https://learn.microsoft.com/en-us/windows/wsl/wsl2-faq#will-i-be-able-to-run-wsl-2-and-other-3rd-party-virtualization-tools-such-as-vmware-or-virtualbox


5
我已经启用了它。我尝试更改加速的虚拟化接口,但每个选项都没有改善。启用/禁用嵌套分页加速似乎也没有任何区别。我不知道为什么这么慢。 - tbmsilva
这实际上被称为“打开或关闭Windows功能”,而不是“激活/停用Windows资源”。 - Andrew

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接