可将 WSL1 发行版升级为 WSL2 而不重装系统或丢失数据,前提是已安装 WSL2 内核更新包并执行 wsl --set-default-version 2;通过 wsl --set-version <发行版名> 2 单独升级,或用 PowerShell 脚本批量升级;完成后运行 wsl -l -v 确认 VERSION 列为 2。

在 Windows 11 上将已安装的 WSL1 发行版升级为 WSL2 内核,无需重装系统、不丢失任何已有文件和配置,但必须确保 WSL2 运行环境已就绪。
确认当前发行版状态与前提条件
以管理员身份打开 Windows Terminal(或 PowerShell),执行:
wsl -l -v
观察输出中目标发行版(如 Ubuntu)对应的 VERSION 列是否为 1;若为 2,说明已是 WSL2,无需升级。若显示 1,且 STATUS 为 Stopped,可继续操作;若 STATUS 为 Running,需先退出该发行版终端并执行 wsl --shutdown。
【必须满足:已手动安装 WSL2 内核更新包(wsl_update_x64.msi),且已执行 wsl --set-default-version 2】。仅启用 WSL 功能或运行过 wsl --install 不代表 WSL2 环境就绪——很多用户卡在这一步,升级命令会静默失败。
执行单发行版升级
在 PowerShell 或 Windows Terminal 中输入以下命令(将 Ubuntu 替换为你实际使用的发行版名称,注意大小写和空格):
wsl --set-version Ubuntu 2
命令执行后会显示“正在转换…”,耗时取决于发行版磁盘占用大小(通常 1~5 分钟)。转换期间请勿关闭终端、不要重启电脑、不要强制终止进程。转换完成后自动退出,无成功提示语——你只需再次运行 wsl -l -v,VERSION 列变为 2 即表示完成。
批量升级所有已安装发行版
方法一:逐个指定升级
对每个发行版重复执行 wsl --set-version <发行版名> 2,例如:
wsl --set-version Debian 2 → wsl --set-version KaliLinux 2 → wsl --set-version Ubuntu-22.04 2
方法二:用 PowerShell 脚本一键遍历(推荐)
复制粘贴以下代码到管理员权限的 PowerShell 中并回车:
$distros = (wsl -l -q) | ForEach-Object { $_.Trim() }
foreach ($distro in $distros) { Write-Host "正在升级 $distro..." -ForegroundColor Green; wsl --set-version $distro 2 }
脚本会自动识别所有已注册发行版并逐个升级。遇到某发行版升级失败(如因路径含特殊字符),脚本会跳过并继续下一个,不影响其余升级。
验证升级结果与常见问题处理
执行 wsl -l -v,确认所有目标发行版 VERSION 列均为 2,STATUS 为 Stopped 或 Running 均可。
若某发行版升级后无法启动,报错 “WslRegisterDistribution failed: 0x80370102”,说明其根文件系统损坏或磁盘空间不足——此时需先清理空间,再执行 wsl --unregister <发行版名> 后重新导入备份(如有);若无备份,只能重装该发行版。
升级完成后首次启动发行版时,系统可能提示“正在初始化新内核”,这是正常现象,等待约 10~30 秒即可进入 shell。

















