WSL安装Linux报错WslRegisterDistribution failed with error: 0x80370102
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日