1. 去Microsoft官网下载 Windows 11版本要求23H2+
  2. 打开启用或关闭Windows功能勾选适用于Linux的Windows子系统和Hyper-V重启系统生效
  3. 下载WSL2 Linux kernel update package for x64 machines安装。

WSL常用操作

查看WSL版本

wsl --version

可以在运行(win+R)或资源文件管理器的路径里直接输入\\wsl$进入Ubuntu的目录

更新 WSL:

wsl --update --pre-release

关机、重启

wsl --shutdown
wsl

其它

# 列出分发版本
wsl -l -v
# 关闭指定版本
wsl -t Ubuntu
# 启动指定版本
wsl -d Ubuntu

不能使用 systemctl 开启、停止或查看服务的运行,使用这些服务文件有许多功能 {start|stop|reload|force-reload|restart|try-restart|status},WSL可以使用service或/etc/init.d/,例如

service docker start
/etc/init.d/nginx start

WSL2+Docker 开机自启

WSL2子系统中的应用默认不会开机自动启动,这里以docker为例,安装docker

wget -qO- get.docker.com | bash

可以手动启动docker

service docker start

不过有时候我们希望它能开机自动启动,接下来使用

WSL2内操作

echo "#! /bin/sh
service docker start" > /etc/init.wsl
chmod +x /etc/init.wsl

Windows内操作

使用

wsl -l -v

列出分发版本,例如我装的是Ubuntu 18.04.6 LTS得到的是Ubuntu-18.04

  NAME            STATE           VERSION
* Ubuntu-18.04    Running         2

然后新建

Set ws = WScript.CreateObject("WScript.Shell")        
ws.run "wsl -d Ubuntu-18.04 -u root /etc/init.wsl"

其中Ubuntu-18.04替换成自己运行的Linux子系统名称,另存为linux-start.vbs保证后缀格式为.vbs即可

按 win+R 输入 shell:startup 将以上vbs文件放入C:\Users\Usersname\AppData\Roaming\Microsoft\Windows\Start adminnu\Programs\Startup该目录下

wsl下的debian系统中docker无法启动运行

sudo update-alternatives --set iptables /usr/sbin/iptables-legacy
sudo sed -i 's/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/g' /etc/sysctl.conf

然后打开 powershell

wsl --shutdown