背景
无论你是需要使用Ubuntu WSL还是需要使用Docker Desktop,你都需要先开启WSL。但是,如果你使用的是Windows 11 Pro最近的几个版本,例如25H2或者24H2,那么你首次开启虚拟化后安装WSL时几乎必定会发生如下的报错:
PS C:\Users\XXX> wsl --set-default-version 2
适用于 Linux 的 Windows 子系统必须更新到最新版本才能继续。可通过运行 “wsl.exe --update” 进行更新。
有关详细信息,请访问 https://aka.ms/wslinstall
按任意键安装适用于 Linux 的 Windows 子系统。
按 CTRL-C 或关闭此窗口以取消。
此提示将在 60 秒后超时。
已禁止(403)。这个时候如果你在搜索引擎搜索,网络上的大部分教程会告诉你,这是因为网络问题或权限问题,导致系统无法自动下载WSL2的更新包,你需要到
这个步骤似乎没错,你将wsl_update_x64.msi下载下来并安装,那么这个时候你会遇到第二个问题:安装程序报错弹框This update only applies to machines with the Windows Subsytem for Linux,然后安装程序就退出了。
这会儿你肯定已经懵逼了,更新包的安装程序说我的电脑上没有WSL,那我刚刚运行的命令是什么?然后你就会去检查自己是不是真的开了WSL功能和虚拟机平台,就算你去问 AI 它也大概率告诉你的是要求你去再次检查是否已经开启那两项功能并且已经重启。一切就此卡住。
原因
先说原因吧,导致上面的问题的罪魁祸首有两个:
wsl.exe --update 的“403 已禁止”报错,基本可以确定是系统无法访问微软商店/相关内容分发节点(被企业策略、WSUS、代理或地区网络限制),这在中国大陆地区很常见。
在Windows 11的最新几个版本中,WSL已经改为通过微软商店包分发(Store 版 WSL),老的内核 MSI 仅适用于“inbox 版”WSL,检测到你不是该通道或检测不到对应组件时自然就会拒绝安装。
因此,你根据网络上的教程去手动下载的更新包实际上是与你的系统不匹配的。
解决办法
方法A:离线安装 Store 版 WSL 包
我更推荐这种方法,手动安装能够避免自动安装过程中带来的网络问题。
去Github上下载最新版本的WSL的安装包(.msixbundle):
https://github.com/microsoft/WSL/releases ,文件名类似这样Microsoft.WSL_xxx_x64_ARM64.msixbundle。直接双击打开安装包安装即可。
安装好之后你再去wsl --set-default-version 2就会发现一切正常了。
方法B:绕过微软商店更新通道
说实话不建议使用这种方法,因为即便你能够成功连接到Github,在国内直连下载文件的速度也会超级慢。
以管理员权限打开 PowerShell,执行: wsl --update --web-download 这条命令会直接从 GitHub 的 WSL 发布页下载并安装,而不是走微软商店/CDN,通常能绕过 403 问题。
成功后执行: wsl --set-default-version 2 再运行 wsl --version 和 wsl --status 看看是否已显示内核版本、WSL 版本。