离线环境中将现有的 WSL 1 升级到 WSL 2
在离线环境中将现有的 WSL 1 升级到 WSL 2 需要特殊处理。以下是完整的解决方案:
离线升级步骤(关键操作)
-
准备 WSL 2 内核更新包:
- 从联网电脑下载内核更新包:wsl_update_x64.msi
- 通过U盘/内网传输到离线环境
-
强制关闭 WSL 服务:
wsl --shutdown
-
安装内核更新:
- 双击传输的
wsl_update_x64.msi
完成安装
- 双击传输的
-
手动设置版本转换:
# 设置默认版本为 WSL2 wsl --set-default-version 2# 强制转换现有发行版 wsl --set-version <发行版名称> 2 --force
例如:
wsl --set-version Ubuntu-20.04 2 --force
离线环境特殊问题解决
若转换后仍是 WSL 1
原因:系统组件注册异常或虚拟化支持未启用
解决方案:
-
手动注册 WSL 2 组件:
# 以管理员身份运行 PowerShell reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Lxss" /v DefaultVersion /t REG_DWORD /d 2 /f
-
检查虚拟化支持(离线环境必须):
- 重启进入 BIOS/UEFI
- 确保启用:
- Intel VT-x 或 AMD-V
- 二级地址转换(SLAT)
-
手动启用 Windows 功能:
dism /online /Enable-Feature /FeatureName:VirtualMachinePlatform /All /NoRestart dism /online /Enable-Feature /FeatureName:Microsoft-Windows-Subsystem-Linux /All /NoRestart shutdown /r /t 0
替代方案:导出/导入迁移
若直接转换失败,使用此方法:
# 1. 导出当前发行版
wsl --export <发行版名称> C:\wsl-backup.tar# 2. 注销旧实例
wsl --unregister <发行版名称># 3. 重新导入为 WSL2
wsl --import <新发行版名称> C:\wsl\new-instance C:\wsl-backup.tar --version 2# 4. 设置默认用户(替换YourUsername)
<新发行版名称> config --default-user YourUsername
验证命令
# 检查WSL版本
wsl -l -v# 检查内核版本(在Linux内运行)
uname -a
# 应显示:4.19.128-microsoft-standard 或更高
离线环境注意事项
- 确保 Windows 版本 ≥ 2004(19041)
- 提前下载以下依赖(如有):
- WSL2 内核更新包
- VC++ 运行时
- 禁用快速启动:
powercfg /h off
重要提示:在转换过程中如遇卡死,尝试运行:
wsl --terminate <发行版名称> wsl --shutdown netsh winsock reset
通过以上步骤,即使在没有互联网连接的环境中,也能成功完成 WSL 1 到 WSL 2 的迁移。