让WSL开机启动,后台运行,以减少唤醒时间
上次分享了《WSL 2 上启用微软官方支持的 systemd》后,有博客园的读者评论说开启了SYSTEMD后,发现启动时间变慢了,询问有没有什么解决办法。
其实WSL启动时间变慢我也早有发觉,这个问题在我启用SYSTEMD前就已经存在。
WSL2会默认关闭不使用的实例,当你关闭了WSL的Console后,实例会自动关闭。在和Distrod的比较中,我提到过这样的产品设计的初衷,是为了减少计算机资源占用。
但是对于会频繁唤醒WSL的用户来说,确实会出现启动时间过长的情况。如果你的计算机资源比较充足,那么是可以在开机时通过VBS脚本启动一个 WSL 实例,让它挂起在那里不要休眠。
方法如下:
- WIN+R 运行
shell:startup
打开启动目录 - 在此目录中创建文件 wsl-startup.vbs
- 在 wsl-startup.vbs 中填充如下内容,Arch需替换为你使用的发行版名称。
set ws=wscript.CreateObject("wscript.shell")
ws.run "wsl -d Arch", 0
这样当你系统启动,登录系统后,Windows会开启 WSL 实例,它会永久等待输入,不会关闭。所以当你下次再使用WSL命令时,就不会遇到需要重新唤醒 WSL 的耗时。
如果你担心后台挂着WSL对系统资源占用过高,可以通过配置 .wslconfig 文件来限制 WSL 的资源占用。 WSL 会默认占用50%内存,最大8GB。使用所有CPU线程。我一般会限制到4GB,2线程。
配置方法如下:
notepad %USERPROFILE%\.wslconfig
[wsl2]
memory=4GB
processors=2
Ref:
https://github.com/microsoft/WSL/issues/8854
https://askubuntu.com/a/1452424/911078
https://learn.microsoft.com/en-us/windows/wsl/wsl-config
本文采用 知识共享署名 4.0 国际许可协议 进行许可