启动和管理 WSL 发行版,在 Windows 上运行 Linux。
wsl 负责启动默认发行版、安装和列出发行版、切换 WSL1/WSL2、导入导出以及关机。WSL1 把 Linux 系统调用翻译到 Windows 内核,启动快、访问 Windows 文件方便,但没有真实 Linux 内核,兼容性和 systemd 支持有限;WSL2 在轻量虚拟机里运行微软维护的 Linux 内核,系统调用兼容、支持 systemd 和容器,但跨系统访问 /mnt/c 明显更慢。WSL2 是当前默认版本。
版本前提:wsl --install 一键安装要求 Windows 10 2004+(Build 19041+)或 Windows 11;WSL2 本身要求 Windows 10 1903+(Build 18362+)或 Windows 11,并在固件中开启虚拟化。更老的系统要手工启用“适用于 Linux 的 Windows 子系统”和“虚拟机平台”功能。wsl --install 需要管理员权限,装完通常要重启或注销。
边界:WSL 不是双系统,也不是完整的桌面替代;图形应用依赖 WSLg,服务器能力受发行版和内核配置限制。发行版数据默认在 WSL2 的 ext4.vhdx 里;wsl --unregister 会永久删除该发行版和全部数据,没有回收站。修改 .wslconfig 或转换版本后,通常要 wsl --shutdown 才生效。
# 1. 查看默认发行版、默认版本和内核状态
C:\> wsl --status
# 2. 列出所有发行版及 WSL1/WSL2 版本,* 表示默认发行版
C:\> wsl --list --verbose
# 3. 查看可安装发行版并安装 Ubuntu(需要管理员和网络)
C:\> wsl --list --online
C:\> wsl --install -d Ubuntu
# 4. 以 root 在指定发行版执行命令,不进入交互 shell
C:\> wsl -d Ubuntu -u root -- apt-get update
# 5. 在指定发行版的家目录启动,避免落在 /mnt/c
C:\> wsl -d Ubuntu --cd ~
# 6. 新安装默认用 WSL2;已有发行版用 --set-version 转换
C:\> wsl --set-default-version 2
C:\> wsl --set-version Ubuntu 2
# 7. 先导出备份,再导入到新位置或新机器
C:\> wsl --export Ubuntu C:\backup\ubuntu.tar
C:\> wsl --import Ubuntu C:\wsl\Ubuntu C:\backup\ubuntu.tar --version 2
# 8. 关闭全部 WSL(会中断所有发行版)或只终止某一个
C:\> wsl --shutdown
C:\> wsl --terminate Ubuntu
wsl --version 报未知参数不一定是 WSL 坏了,旧的内置版 WSL 没有这个子命令;改用 wsl --status,需要新功能时 wsl --update 或安装 Microsoft Store 版 WSL。wsl --install 提示所需功能未启用,先确认虚拟化已在 BIOS/UEFI 打开,再启用“虚拟机平台”和“适用于 Linux 的 Windows 子系统”,重启后重试;Windows 10 2004 以下要按手工安装步骤做。wsl --unregister Ubuntu 会永久删除该发行版的数据、设置和软件,无法撤销;执行前必须 wsl --export Ubuntu C:\backup\ubuntu.tar,回滚用 wsl --import 导入备份。影响范围只限该发行版,但删除后不可恢复。wsl --set-default-version 2 只影响新安装的发行版,已有发行版要逐个 wsl --set-version <名称> 2;转换可能耗时,先备份,转换失败时数据通常仍在原发行版中。/mnt/c 下的项目做 git/npm 构建会非常慢;把代码放在 Linux 家目录(如 ~/projects),Windows 侧通过 \\wsl.localhost\ 访问,性能差异会小很多。localhost,WSL 访问 Windows 服务要用主机 IP;需要复杂局域网访问时再评估 mirrored 网络模式,别默认假设和 WSL1 一样共享网络栈。.wslconfig 后只 wsl --terminate 一个发行版可能不够,因为 WSL2 虚拟机还被其它发行版使用;改全局内存/CPU 配置要 wsl --shutdown 并等待约 8 秒再启动。.exe(如 notepad.exe);路径用 wslpath 转换,不要手写 /mnt/c 以外的不存在挂载点。合上页面,先回答,再展开对照。
wsl --set-default-version 2 能让已有 Ubuntu 变成 WSL2 吗?wsl --unregister 的危险在哪里?执行前和回滚时分别怎么做?wsl --set-version Ubuntu 2。wsl --export 备份,回滚用 wsl --import 导入备份。
小程序版
微信扫码,随时查命令