eiyen / OpenZeppelin-Learning

0 stars 0 forks source link

搭建Openzepplin环境时,出现WSL2启动错误,应该怎么办? #2

Open eiyen opened 1 year ago

eiyen commented 1 year ago

问题描述

在启动WSL2时,出现了以下报错:

[2022-12-31 05:08:53.691] WSL2 is not supported with your current machine configuration.
[2022-12-31 05:08:53.691] Please enable the "Virtual Machine Platform" optional component and ensure virtualization is enabled in the BIOS.
[2022-12-31 05:08:53.691] For information please visit https://aka.ms/enablevirtualization
[2022-12-31 05:08:53.691] Error code: Wsl/Service/CreateInstance/CreateVm/0x80370102

大意是:由于系统的"Virtual Machine Platform"选项没有开启,因此WSL无法正常启动。 解决方案是:进入系统的BIOS界面,打开VMP选项。

系统信息

版本 Windows 11 家庭中文版 版本 22H2 安装日期 ‎2022/‎6/‎10 操作系统版本 22623.1037 体验 Windows Feature Experience Pack 1000.22638.1000.0

我的操作

在重启电脑时,按F10进入BIOS界面后,发现唯一和VMP选项相关的,是Virtual Technology,而这个选项是默认开启的。

而且,我的电脑刚买回来的时候,使用WSL2并没有问题,这个问题也是今天突然出现的。

更新疑问

eiyen commented 1 year ago

查询资料

关于如何开启Windows电脑的Virtualization选项,可以查看Microsoft的官方文档

文档中解释到,Virtualization的选项,是为了能让Windows系统去运行安卓或Linux模拟器,而这一选项是默认开启的。

以惠普电脑为例,Microsoft给出了更加精确的官方文档,我的操作也与文档操作完全相符,甚至还重置了一遍BIOS的设置。

但是,在进行以上操作后,打开VSCode WSL2时,依然会出现如问题所述的报错。

问题更新

为什么在 BIOS 中打开 Virtual Technology 选项后,WSL2 依然会检测 到Virtual Machine Platform 选项未开启?

eiyen commented 1 year ago

进一步搜索

我将错误代码 Wsl/Service/CreateInstance/CreateVm/0x80370102 拿到Google中搜索,看见了一篇知乎文章,上面提到了针对这个问题的解决方法。

我先尝试按照他的方法,在Winodws设置-应用-可选功能-更多Windows功能中,找到了类似于 Virtual Machine Platform 的选项“Windows 虚拟机监控程序平台”,然后重启电脑更新设置。

image

但是,在打开WSL2时,依然会出现同样的报错。

进一步操作

攻略的操作方法是:在 Windows 10 的功能中,找到并打开 Hyper-V, Virtual Machine Platform, 以及 Windows Subsystem for Linux。其中,后两者对应于 Winodws 11 当中的“虚拟机平台”和“适用于 Windows 当中的 Linux 子系统”,而这两个选项是默认开启的。

为了让 Windows 10 的 Hyper-V 功能能够在 Windows 11 中打开,我搜索到了脚本之家的一篇文章,发现 Windows 11 家庭版无法直接打开 Hyper-V 的功能,需要通过命令行打开。

在按照攻略,运行了打开 Hyper-V 的脚本后,发现在运行 WSL2 时,依然会出现同样的问题。

下一步行动

在确定已经完成知乎攻略的第1,2步后,可以去完成第三步:重装 WSL2。

推荐阅读

如果以上思路依然不正确,可以尝试在Goggle中搜索 windows 11 wsl2 0x80370102, 寻找在 Windows 11 中解决以上问题的方法。

eiyen commented 1 year ago

命令行开启WSL相关服务

按照知乎文章所写,尝试在 Powershell 中输入启动以上3个服务相关的命令:

但是,收到了报错,表示 Hyper-V 服务没有找到,无法启用。

不过,这个问题先放着。

重装WSL2

在启动了两个和WSL相关的服务后,接下来就是重装WSL了。

卸载WSL,只需要在应用中找到Ubuntu,然后点击卸载即可完成。

而安装WSL则遇到了一些困难。

根据官方文档中的说明,我在 Powershell 管理者模式中,输入 wsl --install 命令时,提示我 Ubuntu 已存在,不用安装。

cm 可能是因为卸载后,电脑没有重启,可以重启一下试试。

之后,我尝试去 Microsoft 商店中,手动安装 Ubuntu 和 Ubuntu LTS,但是发现它们都无法被 VSCode 中的 WSL 插件检测到。

所以,我重新回到命令行界面,将 WSL 安装命令更新为 wsl.exe --intall ubuntu14.04,固定版本下载 Ubuntu,此时便可以下载 Ubuntu 了。

新的问题

在卸载重装 Ubuntu 后,VSCode WSL 插件提示出现了新的问题:No WSL distros found. New distros can be installed from the Microsoft Store.

image

下一步行动

  1. 尝试重启一下电脑,看看能否正常加载出 WSL。(已尝试,暂无效)
  2. 如果不行,试着根据官网关于 VSCode WSL 的部分操作一遍。
  3. 如果还是不行,试着在Google上直接搜索报错,寻找解决方案。
  4. 或者去 Patrick 视频里面看看,当初是如何安装 WSL2 的。

cm 如果问题拖地太久,影响完成主线的话,用 Windows 环境去编译也未尝不可。