wsl2支持同时安装多个隔离的linux发行版,通过wsl --install -d指定名称安装,用wsl -l -v查看状态,wsl -d启动指定实例,wsl --set-default切换默认发行版。
windows 下用 wsl2 管理多个 linux 发行版,核心在于独立安装、分别命名、按需启动、版本可控。不是“装一个就全有了”,而是每个发行版都是隔离的实例,互不干扰,可共存、可切换、可单独配置。
如何安装多个不同发行版
WSL 支持同时安装 Ubuntu、Debian、Kali、openSUSE、Oracle Linux 等数十种发行版,全部通过 wsl --install 命令或 Microsoft Store 安装:
-
查看所有可选发行版:
wsl --list --online
或简写为
wsl -l -o,输出类似:NAME FRIENDLY NAME Ubuntu Ubuntu Debian Debian GNU/Linux kali-linux Kali Linux Rolling Ubuntu-22.04 Ubuntu 22.04 LTS openSUSE-Tumbleweed openSUSE Tumbleweed
-
安装指定发行版(例如 Debian):
wsl --install -d Debian
安装过程自动完成,首次启动会提示创建用户名和密码。
不指定发行版时,默认安装 Ubuntu;想换默认,可后续用
wsl --set-default <distroname></distroname>设置。
如何区分和管理多个已安装实例
每个发行版在 WSL 内部有唯一名称(NAME 列),系统通过该名称识别和操作:
-
查看当前所有已安装发行版及其状态:
wsl --list --verbose
输出示例:
NAME STATE VERSION * Ubuntu Running 2 Debian Stopped 2 kali-linux Stopped 2
-
启动指定发行版(不切换默认):
wsl -d Debian
进入后就是纯 Debian 环境,
lsb_release -a显示 Debian 版本,apt包管理器可用。
linux-performance-analyzer下载Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
-
设置默认启动发行版(执行
wsl命令时直接进入):wsl --set-default Debian
-
终止某个运行中的实例(不关机,仅停止):
wsl --terminate Debian
-
卸载某个发行版(彻底删除,含所有文件和设置):
wsl --unregister Debian
如何为不同发行版做独立配置
每个发行版可拥有自己的 .wslconfig(全局)+ /etc/wsl.conf(发行版级),实现差异化资源分配与行为控制:
-
全局配置(影响所有 WSL2 实例):
在 Windows 用户目录下新建或编辑%USERPROFILE%\.wslconfig,例如:[wsl2] memory=3GB processors=2 swap=1GB localhostForwarding=true
-
发行版专属配置(只对某发行版生效):
在对应发行版内(如wsl -d Ubuntu后),编辑/etc/wsl.conf:[automount] enabled = true root = /mnt/ [network] generateHosts = true generateResolvConf = true
⚠️ 注意:
.wslconfig修改后需wsl --shutdown再重启发行版才生效;/etc/wsl.conf修改后重启该发行版即可。
如何在不同发行版间共享或隔离开发环境
文件系统天然隔离:每个发行版有自己的根文件系统(如
/home,/usr),彼此不可见。Windows 文件可互通:所有发行版都能通过
/mnt/c/访问 C 盘,但建议避免在/mnt/c/中直接运行 Node.js/Python 项目(性能差、权限异常多);应把代码放在 Linux 文件系统(如~/projects)中运行。-
跨发行版调用命令(较少用,但可行):
# 从 PowerShell 直接运行 Debian 里的 Python 脚本 wsl -d Debian python3 /home/user/script.py
Docker 使用注意:若要在多个发行版中使用 Docker,推荐统一在 Ubuntu(启用 systemd)中运行 Docker Desktop 的 WSL2 后端,其他发行版通过
docker context连接,而非各自安装 Docker Engine。
不复杂但容易忽略。










