一、WSL 是什么
1.1 定义
适用于 Linux 的 Windows 子系统(WSL)是 Windows 的一项功能,让你在 Windows 计算机上运行 Linux 环境 —— 既不用单独开一台虚拟机,也不用折腾双系统。它面向的是需要同时兼顾 Windows 和 Linux 的开发人员,要的就是无缝、高效。
装上 WSL 之后,你可以安装 Ubuntu、OpenSUSE、Kali、Debian、Arch Linux 等 Linux 分发版,直接在 Windows 上使用 Linux 应用程序、实用工具和 Bash 命令行工具,无需任何修改,也不必承担传统虚拟机或双启动带来的开销。
1.2 WSL 能做什么
安装并运行各种 Linux 分发版,例如 Ubuntu、Debian、Kali 等:可以从 Microsoft 应用商店安装并自动接收更新,也可以导入商店里没有的分发版,甚至自己做一份自定义分发版。
把文件存放在独立的 Linux 文件系统中,每个分发版各有一套。
运行 BASH 这类命令行 shell。
运行常见的 BASH 命令行工具,例如
grep、sed、awk,以及其他 ELF-64 二进制文件。运行 Bash 脚本和 GNU/Linux 命令行应用,包括:
- 工具:vim、emacs、tmux
- 语言:NodeJS、JavaScript、Python、Ruby、C/C++、C# & F#、Rust、Go 等
- 服务:SSHD、MySQL、Apache、lighttpd、MongoDB、PostgreSQL
用分发版自带的包管理器安装其他软件。
在类 Unix 的命令行 shell 里调用 Windows 应用程序。
在 Windows 上调用 GNU/Linux 应用程序。
运行 GNU/Linux 图形应用,它们会直接融入 Windows 桌面。
调用 GPU 加速跑在 Linux 上的机器学习任务。
1.3 开源资源
- WSL 开源文档网站:https://wsl.dev
- GitHub 上的 WSL 仓库:https://github.com/microsoft/WSL
- WSL 发布页(MSI 离线包从这里下载):https://github.com/microsoft/WSL/releases
二、WSL 2 升级了什么
安装 Linux 分发版时,默认用的就是 WSL 2。WSL 2 借助虚拟化技术,在一个轻型实用工具虚拟机(VM)里运行 Linux 内核,各个 Linux 分发版则以独立容器的形式跑在这个托管 VM 内部。
2.1 架构变化
传统虚拟机的体验往往不尽如人意:启动慢、环境隔离、吃资源,还得花时间维护。WSL 2 没有这些问题。
WSL 2 保留了 WSL 1 的全部优点 —— Windows 与 Linux 无缝集成、启动快、占用资源少,而且不需要配置或管理 VM。虽然 WSL 2 确实用到了 VM,但它完全在后台运行,用起来的感觉和 WSL 1 没什么两样。
通过 WSL 2 运行的各个分发版会共享同一套网络命名空间、设备树(/dev/pts 除外)、CPU/内核/内存/交换和 /init 二进制文件,但各自拥有独立的 PID 命名空间、装载命名空间、用户命名空间、Cgroup 命名空间和 init 进程。
2.2 完整 Linux 内核
WSL 2 的 Linux 内核由 Microsoft 基于 https://kernel.org 上的最新稳定分支构建,并针对 WSL 2 做了专门优化 —— 重点就在体积和性能上,为的是在 Windows 上带来更好的 Linux 体验。内核更新由 Windows 更新负责推送,安全补丁和内核改进会自动送达,不需要你自己维护。
WSL 2 的 Linux 内核同样开源:https://github.com/microsoft/WSL2-Linux-Kernel
2.3 提高了文件 IO 性能
WSL 2 处理文件密集型操作(例如 git clone、npm install、apt update、apt upgrade 等)明显更快。
具体能快多少,取决于跑的是什么应用、以及它访问文件系统的方式。WSL 2 最初的版本在解压 tarball 时比 WSL 1 最快可达 20 倍;用 git clone、npm install 和 cmake 处理各类项目时,提速约 2-5 倍。
2.4 完整的系统调用兼容性
Linux 二进制程序靠系统调用来完成访问文件、申请内存、创建进程等操作。WSL 1 用的是 WSL 团队自己写的转换层,而 WSL 2 内置了真正的 Linux 内核,系统调用完全兼容。带来的好处是:
- 一大批此前跑不了的应用现在能在 WSL 里运行,比如 Docker。
- Linux 内核一有更新就能立刻用上,不用等 WSL 团队去实现、再去适配。
2.5 功能对比表
| 功能 / 特点 | WSL 1 | WSL 2 |
|---|---|---|
| Windows 与 Linux 之间的集成 | ✅ | ✅ |
| 快速启动时间 | ✅ | ✅ |
| 与传统虚拟机相比,资源占用很小 | ✅ | ✅ |
| 使用 VMware 和 VirtualBox 的当前版本运行 | ✅ | ❌ |
| 托管 VM | ❌ | ✅ |
| 完整 Linux 内核 | ❌ | ✅ |
| 完整的系统调用兼容性 | ❌ | ✅ |
| 跨 OS 文件系统的性能 | ✅ | ❌ |
| systemd 支持 | ❌ | ✅ |
| IPv6 支持 | ✅ | ✅ |
如上表所示,WSL 2 架构在多数方面都优于 WSL 1,唯一的短板是跨操作系统访问文件的性能。这一点也好解决:把项目文件和使用它们的工具放在同一个操作系统上就行。
WSL 2 需要 Windows 11,或 Windows 10 版本 1903、内部版本 18362 及以上。查看版本按 Windows 徽标键 + R,输入 winver 后回车。低于 14393 的版本则完全不支持 WSL。
注意:WSL 2 可以和 VMware 15.5.5 及以上版本共存;VirtualBox 6 及以上虽然宣称支持 WSL,但实际仍有明显问题,官方并不支持。
三、WSL 的在线安装
3.1 先决条件
要使用下面的命令,系统必须是 Windows 10 版本 2004(内部版本 19041)或更高版本,或者 Windows 11。版本更老的机器,请参考「手动安装页」。
3.2 一条命令完成安装
现在只需要一条命令,就能装好运行 WSL 所需的全部组件。右键点击 PowerShell,选择「以管理员身份运行」,输入 wsl --install,装完重启计算机即可:
wsl --install
这条命令会启用 WSL 所需的全部功能,并装上 Ubuntu 这个 Linux 分发版。
第一次启动新装好的分发版时会弹出控制台窗口,需要等一会儿让文件解压缩并写入本机。之后再启动就快了,基本不到一秒。
注意
只有在完全没装过 WSL 的机器上,这条命令才会走安装流程。如果运行 wsl --install 后只是弹出 WSL 帮助文本,可以先运行 wsl --list --online 看看有哪些分发版可用,再用 wsl --install -d <DistroName> 安装。如果安装进度卡在 0.0%,先运行 wsl --install --web-download -d <DistroName>把分发版下载下来,然后再执行安装。
3.3 更改安装的默认 Linux 分发版
默认装的是 Ubuntu。想换一个,加 -d 参数就行:
# 安装指定的分发版
wsl.exe --install -d [Distro]
# 查看可从在线商店获取的分发版列表
wsl.exe --list --online
把 [Distro] 换成你想装的分发版名称。
如果想装的分发版不在可安装列表里,可以用 TAR 文件「导入任意 Linux 分发版」;某些情况下也可以用 .appx 文件安装。你还可以「构建自己的自定义 Linux 分发版」给 WSL 用。
3.4 设置 Linux 用户信息
装好 WSL 之后,还要为新装的分发版创建用户账户和密码。详见「设置 WSL 开发环境的最佳实践」。
3.5 检查正在运行的 WSL 版本
# 列出已安装的分发版及其 WSL 版本
wsl.exe --list --verbose
# 为以后新建的分发版设置默认 WSL 版本(设为 WSL 2)
wsl.exe --set-default-version 2
# 设置 wsl 命令默认使用哪个分发版
wsl.exe --set-default <Distro>
# 临时运行某个分发版,不改变默认设置
wsl.exe --distribution <DistroName>
例如,在 PowerShell 里输入 wsl -s Debian,就把默认分发版设成了 Debian。此后在 PowerShell 中运行 wsl npm init,就相当于在 Debian 里执行 npm init。
3.6 运行多个 Linux 分发版的方法
WSL 想装多少个分发版都行。装好之后,有下面几种启动方式:
- Windows 终端(推荐) 。Windows 终端可以同时开任意多个命令行,用标签页或分屏并排显示,在多个 Linux 分发版与 PowerShell、命令提示符、Azure CLI 等其他命令行之间快速切换。配色方案、字体样式、字号、背景图片和快捷键都能自定义。
- 开始菜单。打开开始菜单,直接输入分发版名称(比如「Ubuntu」)并回车,就会在一个独立的控制台窗口里启动它。
- 在 PowerShell 里直接输入分发版名称,例如
ubuntu。 - 在 PowerShell 里输入
wsl.exe,在当前命令行中打开默认分发版。 - 在 PowerShell 里输入
wsl [command] ,直接调用默认分发版执行命令,不用先进去。比如 wsl -l -v 列出已装的分发版,wsl pwd 查看当前目录在 WSL 中的挂载位置。一个有意思的对比:在 PowerShell 里执行 Get-Date 拿到的是 Windows 的日期,而 wsl date拿到的是 Linux 的。
用哪种取决于你当时在干什么。如果在 PowerShell 里进了 WSL 命令行想退出来,输入 exit 即可。
四、WSL 基本命令参考
下面按 PowerShell / Windows 命令提示符的格式列出 WSL 常用命令。如果要在 Bash 或分发版的命令行里执行这些命令,需要把 wsl 写成 wsl.exe。完整列表请运行 wsl --help。
4.1 命令速查表
| 命令 | 说明 |
|---|---|
wsl --install | 安装 WSL,同时装上默认的 Ubuntu 分发版 |
wsl --install <Distribution Name> | 安装指定的 Linux 分发版 |
wsl --list --online(wsl -l -o) | 列出可从在线商店获取的分发版 |
wsl --list --verbose(wsl -l -v) | 列出已装分发版、运行状态与 WSL 版本 |
wsl --set-default-version <Version> | 设置以后新建分发版的默认 WSL 版本 |
wsl --set-default <Distribution Name> | 设置默认 Linux 分发版 |
wsl ~ | 在用户主目录中启动 WSL |
wsl --distribution <Distro> --user <User> | 以指定用户运行指定分发版 |
wsl --update | 将 WSL 更新到最新版本 |
wsl --status | 查看 WSL 配置的概况 |
wsl --version | 查看 WSL 及各组件的版本信息 |
wsl --help | 查看可用选项和命令列表 |
wsl --user <Username> | 以指定用户身份运行 |
<Distro> config --default-user <Username> | 更改分发版登录时使用的默认用户 |
wsl --shutdown | 立即终止所有运行中的分发版和 WSL 2 虚拟机 |
wsl --terminate <Distro> | 终止指定的分发版 |
wsl --unregister <Distro> | 注销并卸载分发版(数据将永久丢失) |
4.2 安装相关的选项
wsl --install 的常用选项:
--distribution:指定要安装的 Linux 分发版。有哪些可选,运行 wsl --list --online就能查到。--no-launch:只安装,装完不自动启动。--web-download:从网络源安装,不走 Microsoft Store。--location:指定分发版装到哪个文件夹。
机器上还没装 WSL 时可用的选项:
--inbox:用 Windows 自带组件安装 WSL,而不是从 Microsoft 应用商店安装。(此后 WSL 更新随 Windows 更新推送,而不是由商店随时推送。)--no-distribution:只装 WSL,不装任何分发版。
注意
在 Windows 10 或更早版本上,可能需要在 --install 里显式加上 -d 指定分发版:wsl --install -d <distribution name>
五、WSL 的离线安装
本节面向这几类情况:访问不了 Microsoft 应用商店、处在内网环境、或者 wsl --install 一直卡在 0.0% 。全部材料都可以提前下载到 U 盘或内网文件服务器上分发。
5.1 官方给出的脱机安装步骤
Microsoft 官方文档「脱机安装」给出的步骤如下:
- 从 GitHub 发布页下载并安装最新的 WSL MSI 包;
- 以管理员身份打开 PowerShell,运行
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
启用「虚拟机平台」可选组件,可能需要重启计算机才会生效; - 通过
.wsl 文件安装分发版。.wsl 文件的下载地址可以在 DistributionInfo.json 里找到。
5.2 离线安装前的准备
| 序号 | 材料 | 说明 |
|---|---|---|
| 1 | WSL MSI 离线安装包(wsl.2.7.14.0.x64.msi) | WSL 本体,用来替代 Microsoft 应用商店版本。下载地址见第六节 |
| 2 | Ubuntu 26.04 或 Ubuntu 24.04.4 的 .wsl 离线安装文件(二选一) | 分发版镜像(WSL 2 格式分发包),两个版本挑一个就行 |
| 3 | 管理员权限的 PowerShell / 终端 | 以下命令都需要管理员权限 |
| 4 | BIOS/UEFI 中已开启硬件虚拟化 | 任务管理器 → 性能 → CPU →「虚拟化」应显示为「已启用」 |
建议把这些文件放在一个短路径目录里(例如
C:\wsl-offline\ 或 D:\wsl-offline\),避免路径中的空格和中文引起命令解析问题。
5.3 步骤一:启用「虚拟机平台」可选组件
以管理员身份打开 PowerShell,执行:
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
等价的 PowerShell 写法:
Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform -NoRestart
也可以走图形界面:控制面板 → 程序 → 程序和功能 → 启用或关闭 Windows 功能,勾选「虚拟机平台」,确定后重启。
注意
这一步做完必须重启计算机才会生效。没重启就装分发版,很可能报 0x80370102之类的错。
5.4 步骤二:安装 WSL MSI 离线包
双击 wsl.2.7.14.0.x64.msi 跟着向导走就行;也可以在管理员 PowerShell 里静默安装:
msiexec /i "C:\wsl-offline\wsl.2.7.14.0.x64.msi" /quiet /norestart
装完之后重启(如果上一步还没重启过),然后验证:
wsl --version
wsl --status
wsl --version 会输出 WSL 版本、内核版本、WSLg 版本等信息(WSL 版本应为 2.7.14.0);wsl --status 则显示默认分发类型、默认分发版和内核版本等概况。
注意
离线环境下不要用 wsl --update 或 wsl --update --web-download,这两个都要联网(前者走 Microsoft 应用商店,后者走 GitHub)。以后要升级,重新下载新版 MSI 包覆盖安装即可。
.wsl5.5 步骤三:使用 文件离线安装分发版
最省事的做法是直接双击那个 .wsl 文件 —— Windows 已经把这种格式和 WSL 关联好了,会自动调用 WSL 完成安装,全程不联网。两个 Ubuntu 版本二选一,装一个就够;装出来的分发版名称由文件本身决定。
如果想自己指定分发版名称或安装位置,再改用命令行:在管理员 PowerShell 里用 --from-file 指向本地的 .wsl 分发包(路径按实际存放位置改)。
# 安装 Ubuntu 26.04
wsl --install --from-file "C:\wsl-offline\Ubuntu-26.04.wsl"
# 或者装 Ubuntu 24.04.4
wsl --install --from-file "C:\wsl-offline\Ubuntu-24.04.4.wsl"
可用的选项以 wsl --install --help 的输出为准。
5.6 步骤四:初始化用户并验证
第一次启动新装的分发版时会弹出控制台窗口,需要等文件解压缩并写入磁盘;随后会要求创建用户账户和密码。之后每次启动就基本是秒开了。
# 查看已装的分发版、运行状态与 WSL 版本
wsl --list --verbose
# 启动默认分发版
wsl
进到分发版里,可以再确认一下系统版本:
cat /etc/os-release
uname -a
六、离线安装包下载指南
为了给您提供最便捷的体验,我们将所有可用下载方式汇集于同一页面。访问下方链接后,您可根据个人网络环境与偏好,自由选择最合适的下载渠道。
请访问下载页面:
- WSL v2.7.14:https://www.changjiu365.cn/download/WSL
- Ubuntu 26.04:https://www.changjiu365.cn/download/wsl-ubuntu?version=26.04
- Ubuntu 24.04.4:https://www.changjiu365.cn/download/wsl-ubuntu?version=24.04.4
页面内可选的下载源包括:
- 本站高速直链: 享受由阿里云 CDN 带来的高速、稳定下载。
- 公共云盘镜像: 本站提供 百度网盘、阿里云盘、123云盘、天翼云盘、迅雷云盘、Google Drive 与 OneDrive 分流。
重要信息:
- 版本选择: WSL 安装最新版本即可;两个 Ubuntu 版本二选一,不用都下。
- 文件校验: 下载完成后,请务必用页面提供的 SHA-256 哈希值核对文件一致性。
七、常见问题与排错
| 现象 | 可能原因 | 处理建议 |
|---|---|---|
运行 wsl --install 只弹出帮助文本 | 这台机器上已经装过 WSL | 用 wsl --list --online 查可用分发版,再用 wsl --install -d <DistroName> 安装 |
| 安装进度卡在 0.0% | 商店或网络下载受阻 | 先试 wsl --install --web-download -d <DistroName>;不行就走第五节的离线方案 |
报错 0x80370102 | 「虚拟机平台」没启用,或 BIOS 里的硬件虚拟化没打开 | 执行上面的 dism 命令启用虚拟机平台并重启;进 BIOS/UEFI 打开虚拟化 |
报错 0x8007019e | WSL 平台组件没启用,或没用管理员权限安装 | 以管理员身份重新执行 wsl --install;离线环境则改用第五节的 MSI 方案 |
报错 0x800701bc | WSL 2 内核包没装(多见于旧版手动安装的机器) | 安装「Linux 内核更新包」,或直接装 WSL 2.7.14 的 MSI 包 |
wsl --update 一直没反应 | 离线,或商店不可达 | 从 GitHub 发布页下载新版 MSI 包覆盖安装 |
| 跨系统读写文件很慢 | WSL 2 跨 OS 文件性能偏弱 | 把项目文件放进 Linux 文件系统,配合 VS Code 远程 WSL 扩展使用 |
| 想卸载 | — | wsl --unregister <DistroName> 注销分发版(数据将永久丢失);卸载 WSL 参见「卸载旧版 WSL」 |
八、参考资料
- 安装 WSL | Microsoft Learn
- 什么是适用于 Linux 的 Windows 子系统 | Microsoft Learn
- 比较 WSL 版本 | Microsoft Learn
- WSL 的基本命令 | Microsoft Learn
- 适用于旧版本的 WSL 手动安装步骤
- 设置 WSL 开发环境的最佳实践
- WSL 常见问题解答
- GitHub 上的 WSL 发布页