WSL安装Linux报错WslRegisterDistribution failed with error: 0x80370102

作者: 温新

分类: 【PHP基础】

阅读: 48186

时间: 2020-11-14 09:06:03

WSL下Linux早已安装好了,今天启动发现报错了,需要的配置条件都完成,是什么导致了这样的报错?VMware16、Hyper-v、WSL2、Docker之间出现了兼容性的问题。正是由于彼此的兼容性问题导致了错误的出现。

出现0x80370102错误,不是要求没有达到,而是兼容问题。

WSL必须满足的条件

  • Windows10(版本大于等于19041)
  • 开启VT虚拟化

首先安装WSL1,后面有需要再通过命令转为WSL2。

这里说明以下为什么先安装WSL1再转换成WSL2啊,为什么不直接设置成 wsl --set-default-version 2 默认安装WSL2呢?

答案是会遇到报错: WslRegisterDistribution failed with error: 0x80370102 这个错误查了很多文档都解决不了,可是先安装WSL1再转换2就不会遇到这个报错。

总结:安装WSL时,直接安装WSL1,千万不要将WSL2设置为默认版本,不然会出错。如果需要应用为WSL2版本,直接将应用转到WSL版本。

此篇博客讲的更加详细:https://www.yht7.com/news/30824

Win10安装WSL1

步骤一:启用适用于Linux的Windows子系统

以管理员身份打开PowerShell并运行

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

步骤二:更新到WSL2

前往官方文档下载

步骤三:启动虚拟机功能

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

步骤四:下载Linux内核更新包

前往官方文档下载

步骤五:Microsoft Store中安装Linux

下载安装Ubuntu 20.04LTS

步骤六:安装Linux

启动安装好的Ubuntu并设置账号与密码

步骤七:查看安装应用并将有需要的应用设置为WSL2

打开PowerShell

查看安装的应用

wsl -l -v

将某个应用设置为wsl2版本

wsl --set-version Ubuntu-20.04 2

或许是由于兼容性的原因,我这里将应用设置为wsl2无法成功。

VirtualBox的锅

由于之前尝试了Laravel官方推荐的环境,安装了VirtualBox等一系列所需要的软件,那么今天在使用wsl2时,出现了问题,那就是安装分支后,使用wsl将分支切换到2版本无效。上文的操作并没有直接解决问题,不再把时间放在网上,转后回到最开始使用wsl那会,切换版本是没有问题,那么问题出现在什么时候?

这一切的问题就要归根于VirtualBox。一切从它开始。自动安装它之后,wsl再也无法顺利将分支切换到2版本。明白了原因,果断将VirtualBox卸载,以及其他软件。卸载之后再将分支切换到2,果然成功了。

PHP8GA版本即将发布,由于windows10不支持php8,不过还得继续用呀,所以~~~~

我是小白,期待和优秀的你一起同行!

小白

2020年11月14日

请登录后再评论