WSL2

windows 10 build 18917开始使用WSL2,WSL2与WSL1相比,支持的feature更多:
在这里插入图片描述

依赖

如果要升级到WSL2,需要满足一下几个条件:

  1. Windows 10 build 18917 或更高版本;
  2. 启用“虚拟机平台”可选组件;
  3. 在bios上启用虚拟化;

操作流程

首先打开PowerShell

wsl --list --verbos

会看到如下:
在这里插入图片描述
可以看到已安装的wsl版本情况。如果想升级wsl为wsl2,需要输入如下命令:

 wsl --set-default-version 2

会看到如下提示:
在这里插入图片描述
代表设置成功了。如果这一步操作失败,请参考升级需要的前提条件。
设置之后,在微软应用商店里可以选择按照linux的发现版本,此时就是WSL2内核的了。
如果想升级旧版本的wsl,在上一步中输入之前按照的linux版本号。即:

 wsl --set-default-version Ubuntu-20.04 2

可能遇到的问题

设置了wsl2后,如果在安装linux过程中出现:

WslRegisterDistribution failed with error: 0xc03a001a

解决方案:

找到 C:\Users\你的用户名\AppData\Local\Packages
找到 CanonicalGroupLimited.Ubuntu20.04onWindows 前缀的文件夹
在这个文件夹上右键>属性>高级
取消勾选压缩内容以节省磁盘空间
确定

关于使用WSL2出现“参考的对象类型不支持尝试的操作”的解决方法。
在这里插入图片描述

解决方法:

  1. 常见临时解决方案(不推荐):

以管理员身份运行CMD,输入:

netsh winsock reset

重启计算机即可修复。

  1. 长期解决的方案(推荐):

(1)下载此软件:
www.proxifier.com/tmp/Test20200228/NoLsp.exe​

(2)管理员身份运行CMD输入:

NoLsp.exe C:\windows\system32\wsl.exe

请自行注意NoLsp.exe程序的位置,以及你的wsl.exe位置。

产生原因和解决方法分析:

代理软件和wsl2的sock端口冲突,使用netsh winsock reset重置修复。Proxifer开发人员解释如下:

如果Winsock LSP DLL被加载到其进程中,则wsl.exe将显示此错误。最简单的解决方案是对wsl.exe使用WSCSetApplicationCategory WinAPI调用来防止这种情况。在后台,该调用在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WinSock2\Parameters\AppId_Catalog中为wsl.exe创建一个条目。
这将告诉Windows不要将LSP DLL加载到wsl.exe进程中
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐