- 去Microsoft官网下载 Windows 11版本要求23H2+
- 打开
启用或关闭Windows功能勾选适用于Linux的Windows子系统和Hyper-V重启系统生效 - 下载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