Win10安装WSL2及Ubuntu20.04子系统

本以为是小菜一碟,但还是遇到了WslRegisterDistribution failed和参考的对象类型不支持尝试的操作的坑,故记录一下。

为什么要升级到WSL2

WSL2主要是增加了完整的Linux内核和完全的系统调用兼容性,此外不再需要VM Ware和VirtualBox,而是将VM集成在后台管理和运行亦有助于提升性能节省资源。关于WSL2和1的详细比较见此处

强制升级Win10

WSL2要求Win10为目前最新的2020五月版(Build 19041),部分设备已经推送了系统更新,到控制面板的Windows更新处可以自动更新。而没有推送的设备官方建议是加入Windows Insider,但副作用是更新推送频繁,成了测试版的小白鼠。也有人建议下载ISO镜像来升级。
个人建议直接下载易升,比镜像快,亦无需接受Insider的推送。

安装WSL2

安装WSL

以管理员身份运行PowerShell。

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

开启虚拟机平台组件

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

设定WSL2为默认版本

1
wsl --set-default-version 2

安装Ubuntu20.04

Microsoft Store直接获取即可。

Debug

WslRegisterDistribution failed with error: 0x800706ba

下载后第一次运行Ubuntu报错:

1
2
3
4
5
Installing, this may take a few minutes...
WslRegisterDistribution failed with error: 0x800706ba
Error: 0x800706ba The RPC server is unavailable.

Press any key to continue...

产生这个错误有两个可能的原因:

LxssManager未正常运行。

以管理员身份运行cmd。重启该服务。

1
2
sc stop LxssManager
sc start LxssManager

之后可以通过sc query LxssManager检查服务运行状况。

DNS Client未运行。

运行service.msc查看该服务状态,若没有运行则开启服务。
但有可能碰到服务状态下的按钮为灰色不可更改的情况。此时需要修改注册表。
运行regedit,转到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Dnscache目录下。将Start的值由4(禁用)改为2(自动)。
重启系统。

参考的对象类型不支持尝试的操作

第一次启动Ubuntu后无法创建新用户,显示参考的对象类型不支持尝试的操作(The attempted operation is not supported for the type of object referenced.)。
以管理员身份运行cmd

1
netsh winsock reset

原因是WSL的通信和Proxifier通过Winsock LSP抓取TCP连接产生冲突。
如果重置winsock则wsl正常但Proxifer无法工作。Proxifier的开发者提供的解决办法如下:
下载http://www.proxifier.com/tmp/Test20200228/NoLsp.exe
以管理员身份运行cmd
1
NoLsp.exe c:\windows\system32\wsl.exe

使得wsl绕开Proxifer修改过的LSP。

附加信息

HOME文件夹位置

之前WSL1时数据是存在%LOCALAPPDATA%\Packages处,但官方并不建议在Win下修改子系统文件,主要是Win和Linux处理文件的元数据(权限,时间戳等)方式不一样,会造成Linux无法正确识别该文件,严重时会导致子系统崩溃甚至无法正常卸载。
现在五月更新后,直接在子系统终端执行explorer.exe .即可将子系统映射到Win中并用资源管理器打开,此时可以放心地用Win的工具修改文件而不用担心损坏文件了,方便了不少,详情见此处

参考资料

Windows Subsystem for Linux Installation Guide for Windows 10

×

纯属好玩

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

文章目录
  1. 1. 为什么要升级到WSL2
  2. 2. 强制升级Win10
  3. 3. 安装WSL2
    1. 3.1. 安装WSL
    2. 3.2. 开启虚拟机平台组件
    3. 3.3. 设定WSL2为默认版本
  4. 4. 安装Ubuntu20.04
  5. 5. Debug
    1. 5.1. WslRegisterDistribution failed with error: 0x800706ba
      1. 5.1.1. LxssManager未正常运行。
      2. 5.1.2. DNS Client未运行。
    2. 5.2. 参考的对象类型不支持尝试的操作
  6. 6. 附加信息
    1. 6.1. HOME文件夹位置
  7. 7. 参考资料
,