设置WSL2服务自启动

7,708 阅读1分钟

微软发布了最新的2004版本,其中最让我喜欢的就是WSL升级到了WSL2,新版本最大的特点就是可以使用localhost访问Linux系统中的服务。
但是一个重要的问题是:Linux系统不支持自启动程序,只好另辟蹊径,通过命令行启动Linux中的程序。

  1. 在Ubuntu里执行:
    sudo vim /etc/init.wsl

  2. 在文件中加入并保存:

#! /bin/sh
# service docker start
service mysql start
service ssh start
  1. 赋予文件执行权限
    sudo chmod +x /etc/init.wsl

  2. 在Windows中创建文本文件

因为WSL2有一个BUG,就是开机启动后不能使用localhost访问WSL2,但是重启问题就解决了。因此需要在开机后让他自动重启下
原本使用了下面的命令重启WSL服务,不过这需要管理员权限。后来发现直接重启服务器也可以解决这个问题
net stop LxssManager
net start LxssManager

@echo off

wsl --shutdown
wsl -d Ubuntu-20.04 -u root /etc/init.sh
:: wt ssh root@localhost //测试下能不能连上
:: wt -p "Ubuntu-20.04" //打开WSL2的端口

pause>nul

此处的 Ubuntu-20.04 是子系统的名字,可以通过 wsl -l 查看你电脑中的WSL2系统列表

  1. 将文本文件保存为 linux-start.bat
  2. win + r 输入 shell:startup ,将刚刚的文件拖进去