如果你是一名开发者,或者正在学 Linux,大概率听过一句话:"想认真搞开发,还是得上 Linux / macOS。" 但现实是,很多人电脑里装的是 Windows,换系统又舍不得游戏和各类软件。
好消息是:微软早就给了你一个"两全其美"的方案——WSL2。它让你在 Windows 里直接跑一个完整的 Linux,不需要装笨重的虚拟机,也不需要双系统。
这篇文章,我会从"WSL2 是什么"讲到"一步一步装好",并把我自己安装时真实遇到的两个坑和解决办法写出来。照着做,你大概率能一次成功。
一WSL2 到底是什么?
WSL 全称 Windows Subsystem for Linux(适用于 Linux 的 Windows 子系统)。WSL2 是它的第二代。
你可以把它理解成 Windows 里的一个"轻量级 Linux 虚拟机",但它和 Windows 深度集成,用起来像原生应用一样顺滑。
图 1:WSL2 在 Windows 里跑着一个真实的 Linux 内核,两边文件系统还能互通
它和传统的 VMware、VirtualBox 虚拟机最大的不同:
- 真正的 Linux 内核:WSL2 在一个轻量虚拟机里运行完整的、真实的 Linux 内核,带来近乎 100% 的系统调用兼容性。Docker 这类工具能直接原生运行。
- 性能强:文件 I/O 比 WSL1 快 3~5 倍,编译代码、装包时优势明显。
- 启动快、占用小
- 和 Windows 无缝打通:Linux 里能访问 Windows 文件,Windows 开始菜单里能直接启动 Linux 发行版。
二WSL1 和 WSL2,到底差在哪?
一句话:WSL1 是"翻译官",把 Linux 指令实时翻译成 Windows 能懂的话,所以只兼容约 30% 的系统调用;WSL2 是"真内核",直接跑一个 Linux 内核,兼容近乎 100%,还原生支持 Docker 和 systemd。
图 2:翻译层 vs 真实内核,差别一目了然
绝大多数情况下,无脑选 WSL2 就行。
三正式安装:一行命令搞定
前提条件:
- Windows 10 版本 2004 或更高(内部版本 19041 及以上),或者 Windows 11。
- 确认你的 CPU 虚拟化已开启(任务管理器 → 性能 → CPU → 右下角"虚拟化:已启用")。
步骤:
图 3:四步装好 WSL2
1️⃣ 以管理员身份打开 PowerShell(右键开始菜单 →"终端(管理员)"或"Windows PowerShell(管理员)")。
2️⃣ 输入命令并回车:
wsl --install
这条命令会自动启用所需功能,并默认安装 Ubuntu。
3️⃣ 安装完成后重启电脑。
4️⃣ 重启后,从开始菜单启动 Ubuntu,按提示设置 Linux 用户名和密码。
搞定!之后你就能像用普通 Linux 一样,在里面对装软件、跑命令了。
想装别的发行版?wsl --list --online看列表,wsl --install -d <名字>装指定版本。
如果安装卡在 0.0%不动,用 wsl --install --web-download -d <名字>走网络下载。
四踩坑实录:我遇到的两个真问题
理论很美好,实操翻过车。下面是我安装时真实碰到的两个坑。
🕳️ 坑 1:装完重启,wsl -l -v显示"没有已安装的分发版"
现象:按教程 wsl --install后重启,想看看装好没,结果命令行报"适用于 Linux 的 Windows 子系统没有已安装的分发版"。
原因:WSL2 依赖 Windows 的两个关键功能,有时被系统更新或设置意外关掉了。
解决:手动把这两个功能重新打开。以管理员打开 PowerShell,依次执行:
# 启用"适用于 Linux 的 Windows 子系统"dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart # 启用"虚拟机平台"(WSL2 必需)dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
执行完重启电脑,然后去微软商店重新安装 Ubuntu(商店方式更稳定)。
🕳️ 坑 2:启动 Ubuntu 报 0x800701bc
现象:重新安装后一点 Ubuntu,弹出:
Installing, this may take a few minutes... WslRegisterDistribution failed with error: 0x800701bcError: 0x800701bc WSL 2 需要更新其内核组件
原因(划重点):系统已经准备好跑 WSL2 了,但缺了它必需的"地基"——最新的 Linux 内核更新包。这个包因为体积原因没有随 Windows 一起预装。
解决:手动补上这个内核包。
- ① 访问微软官方下载地址:https://aka.ms/wsl2kernel(会自动下载 wsl_update_x64.msi)
- ④ 重启后重新打开 Ubuntu,这次顺利进入,提示设置用户名密码。
补充(进阶排错):
- 装完内核包还报错?在管理员 PowerShell 里执行 wsl --set-default-version 2,确保新装发行版默认用 WSL2;再 wsl --update拉最新内核。
- 若出现 0x80370102:多半是 BIOS 里 CPU 虚拟化没开(见下图)。
- 公司 / 校园网无法访问微软商店?wsl --update --web-download可绕过商店直连微软服务器下载。
图 5:虚拟化没开会导致 0x80370102,进 BIOS 打开即可
五装好之后能玩点啥?
Web / 后端开发原生跑 Docker数据科学 / AI练 Linux 命令跑 systemd 服务
- 开发:Web / 后端开发,在 Linux 环境编码、编译、测试。
- 容器:原生跑 Docker(Docker Desktop 默认就用 WSL2 当后端)。
- 数据科学 / AI
- 练命令
- 跑服务:需要 systemd 的现代 Linux 服务也能跑。
—— 希望这篇能帮你少走弯路 ——
WSL2 是我个人在 Windows 上搞开发最离不开的工具之一。装一次,省下无数折腾虚拟机的时间。
如果你在安装中遇到别的报错,欢迎在评论区留言,咱们一起排雷。也别忘了点赞 / 在看,让更多被虚拟机折磨的朋友看到这篇。