1. 升级前的准备工作
1.1 WSL1 与 WSL2 到底差在哪里
第一次接触 WSL 的读者,十有八九都被同一个词卡住过:WSL2。很多人装了 Windows 自带的 Linux 子系统功能,用了一段时间觉得“够用”,直到某天想跑 Docker、想用 PyCharm 连远程解释器、想跑 CUDA,才发现 WSL1 根本干不了这些活。其实 WSL2 不是 WSL1 的“小改款”,而是一次底层架构的替换。
WSL1 的原理是在 Windows 内核里实现了一层 Linux 系统调用翻译,把 Linux 程序发出的系统调用翻译成 Windows API。好处是启动快、文件互相访问方便,坏处也很明显——不是所有调用都能翻译,Docker、systemd、GPU 直通这类依赖 Linux 内核特性的功能基本用不了。WSL2 则完全不同,它跑在真正的轻量虚拟机上,使用完整的 Linux 内核,兼容性接近原生 Linux。代价是首次启动稍慢、跨文件系统访问性能下降,但绝大多数场景下这些代价都是值得的。
用一句话总结:如果你只是想在 Windows 里敲几条 Linux 命令,WSL1 够用;如果你想在 Windows 上做正经开发,现在就升级到 WSL2,别犹豫。这也正是我在团队里带新人时最常说的一句话。
1.2 确认你的 Windows 版本是否支持
升级前先别急着敲命令,先确认系统版本。WSL2 依赖 Windows 10 版本 1903 以上(x64 系统)或 1909 以上(ARM64 系统),Windows 11 全系都支持。查版本的方法很简单,按下 Win + R,输入 winver 回车,会弹出一个窗口显示系统版本号。
如果你的系统是 Windows 10 且版本号低于 1903,建议先升级 Windows 再继续。不要试图在老旧系统上强行装 WSL2,我在实际工作中遇到过不少 Win10 1809 的机器,折腾半天最后只能放弃,浪费的时间远超系统升级的时间。另外需要记住,WSL2 默认基于虚拟机平台(Virtual Machine Platform),所以 Windows 的 Hyper-V 虚拟机监控程序组件也需要可用,如果你之前手动禁用了 Hyper-V,后面会单独提到怎么处理。
提示:Windows 家庭版也能用 WSL2,不是只有专业版才行。这个误解蛮常见的,别担心。
1.3 检查 BIOS 虚拟化是否开启
有一个“坑”几乎每个新手都会踩一次:命令全部按教程敲完了,最后启动发行版时报错 0x80370102,提示虚拟化未启用。这个错误的原因很简单——BIOS 里的虚拟化开关没打开。
开机时进入 BIOS(不同主板按键不同,通常是 Delete 或 F2),找到 Intel Virtualization Technology(Intel 平台)或 SVM Mode(AMD 平台),设为 Enabled。保存重启后再继续。这里有个小技巧:可以先在 Windows 的任务管理器里看一眼性能标签页,右下角会显示“虚拟化:已启用”或“虚拟化:已禁用”,先确认状态,能省去进 BIOS 的折腾。
如果你确定 BIOS 已经开启了虚拟化,但仍然报 0x80370102,那大概率是 Windows 的可选功能没有完整启用,后面的章节我会给出完整排查方案。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 正式操作:从检查到升级的完整流程
2.1 先把当前 WSL 状态摸清楚
在动手之前,先打开 PowerShell(普通用户权限即可),输入 wsl --status 查看当前 WSL 的版本状态。如果提示“默认版本:2”,说明你已经是 WSL2,整个流程可以跳过。如果提示“默认版本:1”,就需要继续。如果你连 wsl --status 都提示“无法将‘wsl’项识别为 cmdlet”,说明你的系统里根本没有安装 WSL 命令,稍后我会专门说这种情况。
另外一个常用的查询命令是 wsl -l -v,它会列出所有已安装的发行版以及每个发行版当前的 WSL 版本。这个命令在升级之后还会用到,用来验证升级结果。
注意:如果你以前用
lxrun /install或者直接启用“适用于 Linux 的 Windows 子系统”功能来安装 WSL1 发行版,系统里可能没有新版的wsl.exe命令,需要先通过 Microsoft Store 安装“Windows 子系统用于 Linux”应用,或者用官方离线包更新 wsl.exe。
2.2 启用必要的 Windows 功能
传统升级路径有两条,先说最稳妥的一条。以管理员身份打开 PowerShell,逐条执行以下命令:
powershell复制dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
第一条命令启用 WS
