WSL2 / Ubuntu 20.04(Windows build 2004)(bootcamp)设置失败,错误代码为0x80370102。

我做的第一件事情是在“Windows功能”对话框中启用WSL,然后我从商店安装了Ubuntu 20.04。在做其他任何事之前,我找到了一篇名为WSL Kernel的文章,它说我应该从这里安装Linux内核的更新,这是一个msi安装程序(wsl_update_x64.msi)。我注意到在安装Ubuntu之前应该启用虚拟机平台,但那时已经太晚了。然后,我从开始菜单链接启动了Ubuntu,一个控制台窗口弹出并显示了以下错误:

Installing, this may take a few minutes...
WslRegisterDistribution failed with error: 0x80370102
Error: 0x80370102 The virtual machine could not be started because a required feature is not installed.

Press any key to continue...

微软文章Windows Subsystem for Linux Installation Guide for Windows 10中提到了错误(0x80370102)的解决方法。
Installation failed with error 0x80070003 or error 0x80370102

    Please make sure that virtualization is enabled inside of your computer's BIOS. The instructions on how to do this will vary from computer to computer, and will most likely be under CPU related options.


但是Mac电脑没有BIOS。那么,在没有访问BIOS设置的情况下,我如何确保在Macbook Pro上运行Windows 10(2004)的Bootcamp中启用虚拟化?
如果我卸载所有内容并禁用WSL和虚拟化,然后按正确顺序重新进行这一切,这样会解决问题吗?还是我仍然需要更改无法访问的BIOS设置?

2你最后解决了这个问题吗? - junglie85
安装Ubuntu后,您没有打开虚拟机平台吗?如果在打开虚拟机平台后仍然无法正常工作,您可以尝试卸载并重新安装Ubuntu。 - VidathD
那么,我如何确保在运行Windows 10(2004)的MacBook Pro上启用虚拟化技术(通过Bootcamp)呢?请注意,如果你要使用Mac,请使用MacOS,不要混合操作系统。 - Yunfei Chen
2个回答

解决这个问题有两个部分。大多数Mac支持虚拟化,但你需要找出如何检查它。我在stackoverflow上找到了这个问题如何在Macbook Pro上启用CPU虚拟化支持?。从macOS终端中,你需要运行以下命令:
``` sysctl -a | grep machdep.cpu.features ```
这将返回类似于以下内容:
``` machdep.cpu.features: FPU VME DE PSE TSC MSR PAE MCE CX8 APIC SEP MTRR PGE MCA CMOV PAT PSE36 CLFSH DS ACPI MMX FXSR SSE SSE2 SS HTT TM PBE SSE3 PCLMULQDQ DTES64 MON DSCPL VMX SMX EST TM2 SSSE3 FMA CX16 TPR PDCM SSE4.1 SSE4.2 x2APIC MOVBE POPCNT AES PCID XSAVE OSXSAVE SEGLIM64 TSCTMR AVX1.0 RDRAND F16C ```
如果返回的字符串包含"VMX",则表示支持虚拟化。
现在,您需要确保从 macOS 系统启用虚拟化。打开系统设置,然后转到启动磁盘。现在仅查看当前设置可能会显示您的 Windows 分区已设置为启动磁盘。您需要明确地进入并将其设置为 Windows,因此解锁挂锁并单击您的 Windows 分区。这样做会激活其他设置,包括启用虚拟化。当我第一次遇到这个问题时,我已经可以看到我的 Windows 分区在可选的启动磁盘列表中可见,我可能没有再多考虑,没有意识到您必须明确将其设置为 Windows。
在我这样做之后,重新启动到 Windows,然后打开“程序和功能”(运行 appwiz.cpl),然后选择“打开或关闭 Windows 功能”,查看选项并确保“Hyper V”不是禁用的灰色选项。选择“Hyper V”,然后启用“Windows 子系统用于 Linux”。现在,您应该能够继续使用 WSL2,而不会出现与未启用虚拟化相关的错误。

我不需要选择Windows作为启动盘(它甚至在系统偏好设置中都没有显示),有效的方法是启用Hyper-V的所有子功能。 - Nick McCurdy
嘿,尼克,你是怎么做到的呢?比如说,“启用 Hyper V 的所有子功能”?(这是在 Windows 系统中,在“打开或关闭 Windows 功能”下吗?如果我没记错的话,即使在 Mac 系统中没有按照之前描述的方法启用 Hyper-V,它也会被禁用。) - Plastikfan
是的,这是在Windows端。我在Mac端没有启用任何东西。我不确定为什么对你来说它是灰色的。 - Nick McCurdy
嗨,尼克,又见面了。确实有点奇怪。也许这是由于硬件的差异所致。我在使用一台2014年中期的MACBOOK-PRO,在你运行我上面显示的那个命令时,你是否看到相同的machdep.cpu.features列表?我知道它是一个很长的列表,但如果你贴出你的列表,我可以编写一个脚本来比较这两个列表,而不必手动逐个进行比对。 - Plastikfan
@Plastikfan 在Windows上,我收到的错误信息是“sysclt 不是一个可识别的命令”? - Yunfei Chen
嗨 @YunfeiChen,sysctl 是 macOS 的命令,不是 Windows 的。在 Mac 终端上运行它应该可以正常工作。 - Plastikfan
@Plastikfan op问到了关于“WSL2 / Ubuntu 20.04(Windows build 2004)(bootcamp)安装失败,错误代码为0x80370102”的问题。这是一个针对Windows的解决方案,为什么会有适用于Mac的解决方案呢? - Yunfei Chen
@YunfeiChen,我是楼主。我正在通过Bootcamp在Mac上运行Windows。(我在标题中提到了Bootcamp) - Plastikfan

在我的情况下,在启动计算机时按下F2按钮启用虚拟化并在Windows功能中打开Linux子系统后,仍然没有帮助,出现了错误0x80370102。我重新打开了Windows功能,并在虚拟机平台中进行了检查。然后错误被修复,Ubuntu成功安装在我的计算机的WSL环境中。 点击此处查看图片描述