Win11 使用 WSL2

  • 环境:Windows 11 专业版 23H2

1. 安装 WSL2

  • Win + R:OptionalFeatures

2. 更新 WSL2

1
2
3
4
5
6
7
8
9
10
11
$ wsl --update --pre-release
#$ wsl --update --rollback # 回滚到上一个版本
$ wsl --set-default-version 2
$ wsl -v
WSL 版本: 2.3.17.0
内核版本: 5.15.153.1-2
WSLg 版本: 1.0.64
MSRDC 版本: 1.2.5326
Direct3D 版本: 1.611.1-81528511
DXCore 版本: 10.0.26100.1-240331-1435.ge-release
Windows 版本: 10.0.22631.4037

3. 配置镜像网络模式

  • 在用户家目录新建 .wslconfig 文件
1
2
3
4
5
6
7
8
[wsl2]
networkingMode=mirrored
dnsTunneling=true
firewall=true
autoProxy=true
[experimental]
bestEffortDnsParsing=true
useWindowsDnsCache=true

4. 安装 Debian 发行版

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 1. 安装Debian发行版
$ wsl --list --online
$ wsl --install --distribution Debian
$ wsl --set-default Debian
$ wsl -l -v
NAME STATE VERSION
* Debian Running 2

# 2. 移动Debian发行版
$ wsl --shutdown
$ wsl --manage Debian --move D:\WSL\Debian # WSL2.3.11版本后支持
#$ wsl --export Debian D:\WSL\debian.tar
#$ wsl --unregister Debian
#$ wsl --import Debian D:\WSL\Debian D:\WSL\debian.tar

# 3. 卸载Debian发行版
$ wsl --unregister Debian

5. 其他问题

(1) 使用 Systemd

1
2
3
4
5
6
7
8
9
# 默认使用SysVinit而不是Systemd
$ ps -p 1 -o comm=
init(Debian)

$ sudo vim /etc/wsl.conf
[boot]
systemd=true

$ wsl --shutdown
Sysvinit command Systemd command
service <service_name> start|stop|restart|status systemctl start|stop|restart|status <service_name>
chkconfig <service_name> on systemctl enable <service_name>
chkconfig <service_name> off systemctl disable <service_name>

(2) 无法访问 Docker 中启动的服务

1
2
3
4
5
$ sudo vim /etc/docker/daemon.json
{
"iptables": false,
......
}

(3) 在 WSL 中访问 Windows 文件系统

1
$ cd /mnt/d/

参考