WSL2 2.0.0 更新
伴随着 Windows 11 23H2 更新,WSL2 的 2.0 更新带来了以下特性:
- 支持自动回收内存:WSL2 现在可以自动回收未使用的内存,提高系统性能和资源利用率;
- 支持自动释放 WSL2 虚拟硬盘空间:WSL2 现在可以自动释放未使用的虚拟硬盘空间,减少硬盘占用;
- 支持和 Windows 使用相同的网络(镜像网络):WSL2 现在可以与 Windows 共享相同的网络,实现更好的网络互通和访问;
- 支持 DNS Tunneling:WSL2 现在支持 DNS Tunneling,可以更方便地进行网络配置和访问;
- 支持同步 Windows 代理:WSL2 现在可以使用 Windows 设置的代理,方便进行网络代理配置;
- 支持 Windows 防火墙:WSL2 现在可以与 Windows 防火墙配合使用,提供更好的网络安全性;
- 支持 Multicast:WSL2 现在支持 Multicast,可以更好地进行多播网络通信。
WSL2 原本存在的网络问题
WSL1 是基于代理的虚拟化技术,它通过将 Linux 系统调用转换为 Windows 系统调用来实现与 Windows 内核的交互。WSL2 则使用了真正的虚拟机技术,它在 Windows主机 上运行一个轻量级的 Linux 内核。
WSL2 无法访问 Windows 的 localhost 网络是由 WSL2 的网络架构所致。WSL2 使用了一个虚拟网络适配器来与 Windows 主机进行通信,这导致 WSL2 无法直接访问 Windows 的 localhost 网络。因此,以往的 WSL2 在访问 Windows 网络时需要将其当作 LAN 的另一个设备,而 Windows 宿主则可以把 WSL 当作本机设备。这导致了很多问题,尤其是梯子方面的。
WSL2 2.0 引入的镜像网络可以解决 localhost 访问问题。启用镜像网络后,WSL2 和 Windows 主机将使用相同的网络,并且可以通过 localhost 访问本机系统上的服务。这意味着你可以在 WSL2 中访问本机系统上运行的应用程序,以及通过本机系统访问在 WSL2 中运行的应用程序。
更新到 WSL2 2.0
要更新到 WSL2 2.0 版本,你需要满足以下环境要求:
- Windows 11 23H2 或更高版本;
- 安装了 WSL2(Windows Subsystem for Linux)的先前版本。
可以通过 Win+R 输入 winver
来查询系统版本:
如果系统满足以上要求,你可以按照以下步骤更新到 WSL2 2.0 版本:
- 打开 PowerShell 或 Windows 命令提示符,以管理员身份运行。
- 运行命令
wsl --update --pre-release
,这将更新 WSL2 到 2.0.0 或更高版本。
配置 .wslconfig 文件开启新特性
这一步不能少。
[experimental]
autoMemoryReclaim=gradual # 开启自动回收内存,可在 gradual, dropcache, disabled 之间选择
networkingMode=mirrored # 开启镜像网络
dnsTunneling=true # 开启 DNS Tunneling
firewall=true # 开启 Windows 防火墙
autoProxy=true # 开启自动同步代理
sparseVhd=true # 开启自动释放 WSL2 虚拟硬盘空间
需要注意的是,[experimental]
不能加到 [wsl2]
的前面,一个正常的 .wslconfig
可能长成这个样子:
# Settings apply across all Linux distros running on WSL 2
[wsl2]
# Limits VM memory to use no more than 4 GB, this can be set as whole numbers using GB or MB
memory=8GB
# Sets the VM to use two virtual processors
processors=8
[experimental]
autoMemoryReclaim=gradual # 开启自动回收内存,可在 gradual, dropcache, disabled 之间选择
networkingMode=mirrored # 开启镜像网络
dnsTunneling=true # 开启 DNS Tunneling
firewall=true # 开启 Windows 防火墙
autoProxy=true # 开启自动同步代理
sparseVhd=true # 开启自动释放 WSL2 虚拟硬盘空间
你好,我让每一个wsl 发行版有不同的ip,但是能互相访问,该如何做呢?
得看何种意义上的互相访问,如果是互相直接能访问的话在用一个LAN就可以
感谢分享!
一直搞不明白HyperV的虚拟交换机机制…整个HyperV的交互逻辑都太差了,之前用VirtualBox的时候完全没这种感觉
回想起了以前倒腾IIS的感觉
实际上Hyper-V的性能是非常好的(好于VirtualBox),如今的WSL可能理解成一个docker的形式更好。
从经验来讲,只要不主动跨文件系统,一些并行计算的程序在WSL里面甚至比在宿主Windows中还要稍快。
无法初始化Mirrored网络。若要保切留换所回有NAT网络请从 C:\Users\ecomter\.wslconfig中 删除“experimental.networkingMode”
Error code: Wsl/Service/CreateInstance/CreateVm/ConfigureNetworking/0x803b0015