官方教程: https://learn.microsoft.com/zh-cn/windows/wsl/install

系统要求

WSL2 对 Windows 版本有一定要求,要确保系统版本为 Windows 10(AMD 64) 1903(内部版本 18362.1049)或更高版本。

开启虚拟化

注意:最新版 Windows 可直接跳到步骤 3

以管理员身份运行 PowerShell 执行以下命令

启用 WSL 功能:

1
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

启用虚拟机功能:

1
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

重启 Windows。

安装 WSL

查看可安装的有效分发的列表

1
wsl --list --online

安装指定发行版本

1
2
3
4
wsl --install -d <DistroName>

例如:
wsl --install -d Ubuntu

之后输入wsl命令或者指定发行版名称来启动 WSL

执行 wsl 命令出错

如果电脑上安装了 Docker Desktop,那么 Ubuntu 和它在一起会出现这个 Bug。此时默认的发行版是 Docker-desktop-data,需要我们手动更改到Ubuntu-版本号。

查看 wsl 默认发行版wsl --list --verbose

image

执行wsl -s Ubuntu更改发行版为 Ubuntu

再次查看对应发行版wsl --list --verbose

image

此时执行 wsl 命令即可启动指定的发行版了

WSL 配置

主机名及默认用户

进入 WSL 后在 /etc/wsl.conf文件中可以修改相关配置

以下是 WSL 的配置示例

1
2
3
4
5
6
7
8
9
[boot]
systemd=true

[user]
default=testuser # WSL 启动时的默认用户

[network]
generateResolvConf=false # 不要自动生成 /etc/resolv.conf 文件
hostname=wsl-ubuntu24 # 指定 WSL 的主机名为 wsl-ubuntu24

解决默认 DNS 配置无法访问网络的问题

问题详情

进入 WSL 后使用ping qq.com命令发现不通,而宿主机却是通的,将宿主机 ping 到的 ip 拿到 WSL 里可以 ping 通

由此可以判断是 WSL 默认的 DNS 配置出了问题

解决方法

1
2
3
4
5
6
7
8
# 删除默认的 resolv.conf 文件(wsl2 默认生成的是一个软连接,指向另外一个路径)
rm /etc/resolv.conf

# 创建一个新的 resolv.conf 文件并写入相关参数
vim /etc/resolv.conf

# 在文件内写入如下参数,8.8.8.8 可以换成你需要的 DNS 服务器
nameserver 8.8.8.8

保存后重启 WSL

再次输入ping qq.com发现就可以 ping 通了。

迁移 WSL

WSL 支持在操作系统之间进行迁移,并且非常方便

导出系统

执行以下命令将系统封装为一个 tar 包:

1
2
3
4
wsl --export <发行版名称> <导出的文件名>

例如:
wsl --export Ubuntu Ubuntu.tar

导入系统

执行以下命令导入打包后的系统:

1
2
3
4
5
wsl --import <发行版名称> <安装位置> <tar 文件名>

例如:
wsl --import UbuntuNew . Ubuntu.tar
命令解释:该命令将刚才导出的 Ubuntu.tar 文件导入为一个 WSL 发行版,将该发行版命名为 “UbuntuNew”,安装路径为当前目录。

升级 WSL(以 Ubuntu 为例)

更新现有环境

1
apt update && apt upgrade -y

卸载没用的包和依赖

1
apt --purge autoremove

升级系统

执行以下命令升级到最新的 LTS 版本

1
do-release-upgrade

如果上述命令显示没有更新的版本,可以执行以下命令更新到最新的开发版本

1
do-release-upgrade -d

升级完成后执行lsb_release -a命令查看发行版本信息

image

WSL 常用命令

1
2
3
4
5
6
7
wsl --shutdown # 终止所有正在运行的发行版

wsl --terminate Ubuntu # 终止指定的发行版

wsl --unregister Ubuntu # 卸载指定发行版

wsl --set-default-version 2 # 设置 WSL2 为默认版本