Win10 20H1 发布在即,来看看瞩目的 WSL2。

WSL2,基于 Hyper-V 轻量级虚拟机。

首先,WSL2 要求系统为 19041 或更高,并启用 VirtualMachinePlatform feature。

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

然后,设定 WSL2 为默认,手动将之前的 WSL1 distro 升级到 WSL2。

wsl --set-default-version 2
wsl --list --verbose
wsl --set-version <distribution name> <versionNumber>

WSL2 文件

WSL2,使用 9p 挂载 win盘分区,WSL1 则使用 drvfs,都需要对挂载 metadata 做配置,以适应 fmask、umask、dmask 要求。

关于性能,WSL2 本地磁盘的性能会提高(虚拟机挂载 ext4.vhdx);9p 挂载的 win盘分区,和 drvfs 相比,还是要看之后的表现。

WSL2 内存

WSL2 运行一段时间可能会占用可观的内存,观察 vmmem 进程, 刚运行时,占用内存 300MB,使用一段时间,内存可能占用 2000MB 以上, 在退出 WSL2 一段时间后,vmmem 会分阶段退还内存,最后退出。

WSL2 在读写大量本地文件(/mnt/*)时内存可能暴涨,虽然据 build 19013 1 称, 内存在一段时间空闲后可以退还给宿主系统,但触发条件不清楚;可以关闭 WSL2 来强行释放。

内存可通过 .wslconfig 2 中的 memory 等相关参数控制。

WSL2 网络

WSL2 使用 Hyper-V Virtual Ethernet Adapter,在自己的子网内,拥有自己的 IP。

IPv6 尚未支持。

Npcap 0.9991 可以抓取 Hyper-V Virtual Ethernet Adapter.

宿主机 访问 WSL2

  • 18945 开始,可以使用 localhost 或 WSL2.ip 访问 WSL2 网络服务;
  • 从宿主机访问 WSL2 中监听 127.0.0.1:port 的服务,使用 localhost,或 在 WSL2 中将其他请求转发到 127.0.0.1;

WSL2 访问 宿主机

  • WSL2 内部不能使用 localhost 访问宿主机,宿主机 IP 可以从 /etc/resolv.conf 中的 nameserver 得到;
  • DNS 有时出问题,可能需要修改 nameserver,但重启试试也可能恢复正常;

Example 配置

%USERPROFILE%/.wslconfig, /etc/wsl.conf

详见 MS 文档2.

后续

Win 10 停在 10.0.19044, 更多特性需要在 Win11 中体验.


Related Posts


Published

Last Updated

WSL

Category

windows

Tags

Contact