WSL2 坑 记录

  • WSL2 折腾的坑

  • 资料来源:

    <>

  • 更新

    1
    2022.09.23 初始

导语

一些关于 WSL2 的备忘

wsl2 占用大量内存

wls2 按道理来说有自动的内存回收,但是时常会直接占用到宿主机的大量内存,尤其是实验室那台只有 8g 的机器…

好在有办法全局限制,创建 %UserProfile%\.wslconfig 写入

1
2
3
4
5
[wsl2]
processors=4
memory=1.0GB
swap=3GB
localhostForwarding=true

大致上限制使用 4 个 CPU, 内存 1G, swap 3G, 允许 localhost:port 转发.

wsl2 桥接(这样能支持 ipv6)

wsl2 version >= 0.51.2 支持了 hyper-v 的桥接模式,这意味着 wsl2 终于能当作独立设备联网了,但是 wsl2 吗,肯定有坑…

  • 参考 > Bridged Networking under WSL

新建 hyper-v 的 external switch -> Create a virtual switch for Hyper-V virtual machines

用户下 .wslconfig 文件添加,vmSwitch 指向刚刚新建的交换机.

1
2
3
[wsl2]
networkingMode = bridged
vmSwitch = Bridge

但是到这一步还没有 ipv6 地址

接下来实际上和 wsl2 就没关系了,是配置 Systemd-Networkd 启用 ipv6 支持.

新建 /etc/network/interface/xx.network

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[Match]
Name=eth0

[Network]
Description=Virtual switch
DHCP=true
IPv6AcceptRA=true
MulticastDNS=true
LLDP=true
EmitLLDP=true

[DHCP]
CriticalConnection=true
RouteMetric=10
UseDomains=true

sudo systemctl enable systemd-networkd + reboot boom ipv6 来了.

原文说这样会存在两个 ipv4 地址,但是基本不影响使用.

wsl2 systemd 支持

这个是最近才支持,需要 version >= 0.67.6,为了保险还是手动下载 msixbundle 安装吧.

启用很简单,写入 /etc/wsl.conf 几行配置

1
2
3
4
sudo cat > /etc/wsl.conf <<EOF
[boot]
systemd=true
EOF

至此我认为 wsl2 算是完全体了.