配置 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
- IPv6 支持
- 使用 localhost 地址 127.0.0.1 从 Linux 内部连接到 Windows 服务器。不支持 IPv6 localhost 地址 ::1
- 改进了 VPN 的网络兼容性
- 多播支持
- 直接从局域网 (LAN) 连接到 WSL
使用管理员权限在 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
}