我在 VirtualBox 6.1.30 上使用 Windows 11,Windows 11 内部的 Core m3-6Y30 CPU @ 0.90GHz。
我从 Microsoft Store 下载了 Ubuntu 20.04。当我启动它时,出现一条消息,提示在 Windows 功能中的控制面板中应启用名为“适用于 Linux 的 Windows 子系统”的选项。
我打开该功能,重启电脑,然后尝试再次启动 WSL Ubuntu。这次出现了一条更新到 WSL2 的消息。
因此,在具有管理员权限的 PowerShell 中我输入了以下命令:
dism.exe / online / enable-feature / featurename command: VirtualMachinePlatform / all / norestart
...然后重新启动计算机并下载提到的内核更新包这里。
最后,在具有管理员权限的 PowerShell 中,我运行了推荐的命令:
wsl --set-default-version 2
之后,我重启了电脑,并在 WSL 上启动了 Ubuntu,并得到了这个问题。
我跑完之后它才起作用wsl --set-default-version 1
。
这可能是什么原因?硬件虚拟化出了问题?
其余一切都可以在 VirtualBox 上运行。
我从命令开始wsl --set-default-version 1
,然后检查了bcdedit / set hypervisorlaunchtype auto
,但它不起作用。
只有在此之后才wsl --set-default-version 1
起作用。
答案1
鉴于我们在评论中讨论的内容,我个人的建议是坚持使用 WSL1。它涵盖了最多通过在对 Linux 内核 API 的调用和对 Windows 内核的调用之间创建“转换层”,WSL2 的用例得以实现。WSL2 在虚拟化方面确实(至少)更进了一步,但这只在受支持的硬件上才能很好地工作。
至于 WSL2,你可能会遇到不止一个问题,但至少有一种可能性是你需要在 VirtualBox 中启用“嵌套虚拟化”。
WSL2 使用 Windows Hyper-V 虚拟机管理程序的功能来创建虚拟机。由于您已经在 VirtualBox VM 中运行 Windows 11,这意味着您正在“在 VM 内运行 VM”——这就是“嵌套虚拟化”。
我相信从 VirtualBox 6.1.4 开始就添加了对该功能的支持,但您必须启用它。请参阅本文档页面了解详细信息,但总结一下:
如果你正在使用 VirtualBox Manager GUI,请转到处理器标签并打开启用嵌套 VT-x/AMD-V。请注意,正如我们在评论中了解到的,由于您的 CPU(Core m3-6Y30)不支持基于硬件的虚拟化,因此该选项在您的 VM 上显示为灰色。
另外,您应该能够使用 来从命令行设置选项
VBoxManage modifyvm vm-name --nested-hw-virt on
。据报道,即使在未受支持的硬件上,这也会“强制”虚拟化(但我无法确认)。请注意,从对这个答案,“预计业绩将非常糟糕”如果您的 CPU 不支持必要的功能。