配置 WSL2


WSL2 在更新 WSL 2.0 后更好用了。

安装 WSL2

为系统启用 WSL

以管理员身份运行 Windows PowerShell,输入以下命令。

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

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

设置使用 WSL2

运行 Windows PowerShell,输入以下命令。

wsl --set-default-version 2

安装 Linux 发行版

出于软件兼容性考虑,选择安装 Ubuntu 20.04

下载 WSL 内核

运行 Windows PowerShell,输入以下命令。

wsl --update --pre-release

设置 WSL2

启用镜像网络模式

按下 Windows + R,输入 %userprofile%,按下 Enter,在打开的文件夹中新建 .wslconfig,将其内容改为

[wsl2]
networkingMode=mirrored
dnsTunneling=true
firewall=true
autoProxy=true

以下是启用此模式的优势

使用管理员权限在 PowerShell 窗口中运行以下命令,以配置 Hyper-V 防火墙设置,从而允许入站连接:

Set-NetFirewallHyperVVMSetting -Name '{40E0AC32-46A5-438A-A0B2-2B479E8F2E90}' -DefaultInboundAction Allow

New-NetFirewallHyperVRule -Name "MyWebServer" -DisplayName "My Web Server" -Direction Inbound -VMCreatorId '{40E0AC32-46A5-438A-A0B2-2B479E8F2E90}' -Protocol TCP -LocalPorts 80

WSLg 适配 DPI 缩放

按下 Windows + R,输入 %userprofile%,按下 Enter,在打开的文件夹中新建 .wslgconfig,将其内容改为

[system-distro-env]
WESTON_RDP_HI_DPI_SCALING=false
WESTON_RDP_FRACTIONAL_HI_DPI_SCALING=false

记录 Windows 系统的 DPI 缩放并乘以 96,如 150% 缩放为 144;然后进入 WSL 的终端,输入

nano ~/.Xresources

添加以下内容

Xft.dpi: 144
Xft.autohint: 0
Xft.lcdfilter:  lcddefault
Xft.hintstyle:  hintfull
Xft.hinting: 1
Xft.antialias: 1
Xft.rgba: rgb

按下 Ctrl + X 并保存文件。在 WSL 的终端输入

echo "xrdb -merge ~/.Xresources" >> ~/.bashrc

实验性设置

详见 Advanced settings configuration in WSL

.wslconfig 添加以下配置

[experimental]
sparseVhd=true
hostAddressLoopback=true

运行 Windows PowerShell,输入以下命令。

wsl --manage Ubuntu-20.04 --set-sparse true

导出/导入发行版

运行 Windows PowerShell,输入以下命令。 Ubuntu-20.04 为需要导出的发行版名称

wsl --export Ubuntu-20.04 D:\wsl-Ubuntu-20.04.tar

卸载发行版

wsl --unregister Ubuntu-20.04

先创建存放虚拟磁盘的文件夹,导入分发版

wsl --import Ubuntu-20.04 C:\wsl\Ubuntu-20.04 D:\wsl-Ubuntu-20.04.tar

此时默认登录用户为 root,访问发行版的 /etc/wsl.conf 文件,增加以下内容

[user]
default=用户名

配置 VS Code

关闭 VS Code 的远程端口自动转发

{
    "remote.autoForwardPorts": false
}