使用windows计划任务实现wsl2开机自启,并且保持运行

wsl2启动速度比wsl1慢了很多,因此我过去一直都是使用wsl1,但是wsl1对docker的支持不太好,只有旧版能正常运行,参考WSL 中 Docker 使用总结 - 简书 (jianshu.com) ,wsl2速度慢准确来说应该是启动速度慢,wsl中的发行版在一段时间不使用后就会停止,再进入wsl就会有一个启动过程,这里wsl2比wsl1要慢很多。

知道了导致wsl2速度慢的原因了,怎么解决呢?

首先,想到的是让wsl2开机运行,这样也能减少第一次启动花费的时间,实现开机运行程序的一个比较好的方法就是windows计划任务,直接启动wsl是不行的,会弹出来一个终端窗口,最小化也还是在任务栏里,这样和开机手动启动一个终端进去wsl2然后最小化不久没区别了?解决这个问题,powershell是个很好的答案,我推荐最新的powershell7,速度更快,功能更强大。powershell有一个参数,可以设置窗口模式,其中Hidden就是隐藏窗口执行,并且不会在任务栏显示,相当于后台执行。

f518e650c84148ca26b89619a68a5273/20230318172424.png

有了这些,我们就可以编写计划任务 了

右键此电脑,点击管理,选择计划任务,然后点击创建任务

25150a7b67db7688ad8951b1d97af242/20230318172513.png

常规 设置如下

7e65202f20d6034d29c6364c6e1ca2b5/20230318172525.png

触发器 新建一个登录时的触发器

e62eb44c9af10bcb2a8712863c549c56/20230318172540.png

操作 新建一个启动程序的操作,程序填pwsh.exe(没有安装powershell7的话填powershell.exe),参数填

1
-WindowStyle Hidden -Command "while(1){wsl -d Distrod-Ubuntu -e /opt/distrod/alias/bin/bash}"

dc9d870dea0c8806c3df40f2ea15670c/20230318172557.png

其中Distrod-Ubuntu改为你想要开机自启并保持运行的wsl容器,如果你安装的不是带systemd的distrod,-e后面的内容则改为/usr/bin/bash

参考文章 WSL2下使用systemd的最佳方案 了解 wsl-distrod

如果需要wsl2开机自动挂载vhd虚拟硬盘文件,首先要安装wsl preview - Get Windows Subsystem for Linux Preview - Microsoft Store ,该功能只有wsl preview支持,然后将参数设置为

1
-WindowStyle Hidden -Command "wsl --shutdown; while(1){wsl --mount --vhd D:\WSL\DISKS\disk-128g-01.vhdx --bare; wsl -d Distrod-Ubuntu -e /opt/distrod/alias/bin/bash}"

其中vhd文件路径和wsl容器名称要改为你自己的

条件 把这里的勾都去掉

388157095b050e061e6be709b49fc5d4/20230318172613.png

其他的设置就可以保持默认,点击确定保存后,wsl2就可以实现开机自启并保持运行了

打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2021-2025 lorzzn
  • 访问人数: | 浏览次数:

      请我喝杯咖啡吧~

      支付宝
      微信