实现 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 双系统的问题,期间碰到了不少的坑。尝试过的方案有:

  • PVE 做宿主,Windows 和 Linux 都作为虚拟机:NVIDIA 显卡透传的问题很大,PVE 作为宿主还要吃掉一小点性能。约等于同时维护三套系统,累。如果要远程开机和 SSH,还得先把 PVE 面板映射出来。
  • Linux 做宿主,Windows 跑在虚拟机:同样存在显卡透传问题,而且手动配 QEMU + KVM 虚拟机心智负担太大,我也不想用 libvirt 等方案。同时之前为了装 Windows 11 买的 TPM 模块就浪费了。我的 Linux 系统还做了硬盘加密,远程开机也废了。
  • Windows 做宿主,Linux 跑在虚拟机:无论是 VMware Workstation 还是 VirtualBox,都是大毛病没有,小毛病不断。不管哪个方案,Linux 内部的显卡都是残废状态,操作起来一卡一卡。如果只是在终端操作,倒还没什么问题,桌面操作就废了。如果宿主是笔记本,进入了 S0 睡眠模式,VMware Workstation 会出现内核 CPU stuck 错误,VirtualBox 则是出现时钟漂移。
  • 再买一台电脑:没钱。
  • WSL 1:内核太老,性能差。
  • WSL 2:有显卡加速,虽然不算是真·虚拟机,但比起上面几个方案好太多了。

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

参考资料

实现 WSL 2 开机免登录自动启动
https://www.sjdhome.com/blog/post/wsl2-auto-start/

本文作者
sjdhome
发布于
2024/4/8
许可协议

转载或引用本文时请遵守许可协议,注明出处、不得用于商业用途!

#技术#WSL

评论区加载中…

由于需要连接 GitHub,中国大陆访客可能面临加载缓慢。