实现 WSL 2 开机免登录自动启动

WSL 2 在个人使用时,根据终端随开随用很方便,长时间不用自动关闭也节能。但作为服务器系统使用就不够了。

WSL 2 的自动启动有很多方案,本文写的是基于 Windows 自带的任务计划程序的方案。WSL 之前一直不支持通过任务计划程序启动,这个 BUG 直到 2023年9月27日 才被修复,真不愧是微软。

步骤

  1. 一定要确保 WSL 当前处于最新版本(即 WSL September 2023 update 之后的版本),系统自带版本不支持这种开机启动。
  2. 打开任务计划程序。
  3. 点击右边的创建任务。
  4. 任务的名称和描述可以随便写,安全选项需要选择“不管用户是否登录都要运行”。
  5. 点击上方的“触发器”选项卡,点新建按钮,然后会卡几秒(微软的老 BUG )。开始任务中选择“启动时”,然后点击确定。
  6. “操作”选项卡中,点新建按钮,然后“程序或脚本”下的文本框里输入"C:\Program Files\WSL\wsl.exe",引号也要带上(非常重要,除了这个目录下的wsl.exe,其他位置的都不行)。添加参数可以根据需要填写,比如-d Debian指定发行版。
  7. “条件”选项卡中,所有选项全部取消勾选。
  8. ”设置“选项卡中,除了“允许按需执行任务”,其他全部取消勾选。
  9. 点击确定关闭窗口。可以先右键运行试试效果。这种方法运行的 WSL 即使当前用户注销也是会继续运行的。

Linux 内部的自动启动就得靠 SystemD 了,这里就不赘述了。

故事环节

最近几个月一直在纠结 Windows 和 Linux 双系统的问题,期间碰到了不少的坑。尝试过的方案有:

用 WSL 2 做服务器 Linux 似乎不太正经,不过我也不要求有多高的稳定性,能充分利用我现有的硬件就够了。如果有更高要求,直接去 AWS 买 EC2 吧 ¯\(ツ)/¯ 。

参考资料