官方教程: https://learn.microsoft.com/zh-cn/windows/wsl/install
系统要求
WSL2 对 Windows 版本有一定要求,要确保系统版本为 Windows 10(AMD 64) 1903(内部版本 18362.1049)或更高版本。
开启虚拟化
注意:最新版 Windows 可直接跳到步骤 3
以管理员身份运行 PowerShell 执行以下命令
启用 WSL 功能:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
启用虚拟机功能:
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
重启 Windows。
安装 WSL
查看可安装的有效分发的列表
wsl --list --online
安装指定发行版本
wsl --install <DistroName>
例如:
wsl --install Ubuntu
之后输入 wsl
命令或者指定发行版名称来启动 WSL
执行 wsl 命令出错
如果电脑上安装了 Docker Desktop,那么 Ubuntu 和它在一起会出现这个 Bug。此时默认的发行版是 Docker-desktop-data,需要我们手动更改到Ubuntu-版本号。
查看 wsl 默认发行版 wsl -l -v
执行 wsl -s Ubuntu
更改发行版为 Ubuntu
再次查看对应发行版 wsl --list --verbose
此时执行 wsl 命令即可启动指定的发行版了
WSL 配置
主机名及默认用户
进入 WSL 后在 /etc/wsl.conf
文件中可以修改相关配置
以下是 WSL 的配置示例
[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 配置出了问题
解决方法
# 删除默认的 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 包:
wsl --export <发行版名称> <导出的文件名>
# 例如:
wsl --export Ubuntu Ubuntu.tar
导入系统
执行以下命令导入打包后的系统:
wsl --import <发行版名称> <安装位置> <tar 文件名>
例如:
wsl --import UbuntuNew . Ubuntu.tar
命令解释:该命令将刚才导出的 Ubuntu.tar 文件导入为一个 WSL 发行版,将该发行版命名为 “UbuntuNew”,安装路径为当前目录。
升级 WSL(以 Ubuntu 为例)
更新现有环境
apt update && apt upgrade -y
卸载没用的包和依赖
apt --purge autoremove
升级系统
执行以下命令升级到最新的 LTS 版本
do-release-upgrade
如果上述命令显示没有更新的版本,可以执行以下命令更新到最新的开发版本
do-release-upgrade -d
升级完成后执行 lsb_release -a
命令查看发行版本信息
卸载 WSL
# 其中 <distroName> 是你的 Linux 发行版的名称
wsl --unregister <distroName>
# 例如:
wsl --unregister ubuntu
最后像卸载任何其他应用商店应用程序一样,在计算机上卸载 Linux 发行版应用
WSL 常用命令
wsl --shutdown # 终止所有正在运行的发行版
wsl --terminate Ubuntu # 终止指定的发行版
wsl --unregister Ubuntu # 卸载指定发行版
wsl --set-default-version 2 # 设置 WSL2 为默认版本