WSL2 优化

搬迁

[WSL2]WSL2迁移虚拟磁盘文件ext4.vhdx_wsl ext4.vhdx-CSDN博客

压缩

随着使用时间的延长,WSL2 占用的硬盘空间会越来越多,这个时候就需要对其文件进行压缩。方法如下

1
2
3
4
5
6
7
8
wsl --shutdown
diskpart
# open window Diskpart
select vdisk file="C:\Users\Ci\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgsc\LocalState\ext4.vhdx"
# select vdisk file="C:\Users\Ci\AppData\Local\Packages\KaliLinux.54290C8133FEE_ey8k8hqnwqnmg\LocalState\ext4.vhdx"
attach vdisk readonly
compact vdisk
detach vdisk

内存

当然,WSL2 也会带来内存占用的问题,可以打开 $home/.wslconfig,进行如下设置

1
2
3
[wsl2]
memory=4GB
swap=0

WSL_systemd

安装好新版 wsl 后,通过以下命令来配置 wsl 启用 systemd:

1
echo -e "[boot]\nsystemd=true" | sudo tee -a /etc/wsl.conf

配置后需要通过 wsl --shutdown 命令关闭 wsl,来进行 wsl 的完整重启。

如何判断 Systemd 是否启用成功

判断 wsl 是否已启用 systemd,可通过以下命令查看:

1
ps --no-headers -o comm 1

如果命令返回的是 init 说明 systemd 未启用,如果是 systemd 那么你的 systemd 已启用成功了。

查看已启用的 Systemd Service

通过 systemctl 的 list-units、list-unit-files 命令,都可以很好的查看目前的 systemd 状态,命令如下:

1
2
systemctl list-units --type=service
systemctl list-unit-files --type=service --state=enabled

解决 Exec: Exec Format Error

1
sudo sh -c 'echo :WSLInterop:M::MZ::/init:PF > /usr/lib/binfmt.d/WSLInterop.conf'

After wsl --shutdown and logging back in, now next to systemd, explorer.exe and the like are finally working again!
[WSL2][systemd][interop] Unable to Execute Windows Binary when systemd enabled · Issue #8843 · microsoft/WSL (github.com)

启用 Systemd 支持后无法从 Wsl2 运行 Exe

1
sudo update-binfmts --disable cli