离线环境中将现有的 WSL 1 升级到 WSL 2

在离线环境中将现有的 WSL 1 升级到 WSL 2 需要特殊处理。以下是完整的解决方案:

离线升级步骤(关键操作)

  1. 准备 WSL 2 内核更新包

    • 从联网电脑下载内核更新包:wsl_update_x64.msi
    • 通过U盘/内网传输到离线环境
  2. 强制关闭 WSL 服务

    powershell 复制代码
    wsl --shutdown
  3. 安装内核更新

    • 双击传输的 wsl_update_x64.msi 完成安装
  4. 手动设置版本转换

    powershell 复制代码
    # 设置默认版本为 WSL2
    wsl --set-default-version 2
    
    # 强制转换现有发行版
    wsl --set-version <发行版名称> 2 --force

    例如:wsl --set-version Ubuntu-20.04 2 --force

离线环境特殊问题解决

若转换后仍是 WSL 1

原因:系统组件注册异常或虚拟化支持未启用

解决方案

  1. 手动注册 WSL 2 组件:

    powershell 复制代码
    # 以管理员身份运行 PowerShell
    reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Lxss" /v DefaultVersion /t REG_DWORD /d 2 /f
  2. 检查虚拟化支持(离线环境必须):

    • 重启进入 BIOS/UEFI
    • 确保启用:
      • Intel VT-x 或 AMD-V
      • 二级地址转换(SLAT)
  3. 手动启用 Windows 功能:

    powershell 复制代码
    dism /online /Enable-Feature /FeatureName:VirtualMachinePlatform /All /NoRestart
    dism /online /Enable-Feature /FeatureName:Microsoft-Windows-Subsystem-Linux /All /NoRestart
    shutdown /r /t 0

替代方案:导出/导入迁移

若直接转换失败,使用此方法:

powershell 复制代码
# 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

验证命令

powershell 复制代码
# 检查WSL版本
wsl -l -v

# 检查内核版本(在Linux内运行)
uname -a
# 应显示:4.19.128-microsoft-standard 或更高

离线环境注意事项

  1. 确保 Windows 版本 ≥ 2004(19041)

  2. 提前下载以下依赖(如有):

  3. 禁用快速启动:

    powershell 复制代码
    powercfg /h off

重要提示:在转换过程中如遇卡死,尝试运行:

powershell 复制代码
wsl --terminate <发行版名称>
wsl --shutdown
netsh winsock reset

通过以上步骤,即使在没有互联网连接的环境中,也能成功完成 WSL 1 到 WSL 2 的迁移。

相关推荐
Imagine Miracle10 天前
【WSL】让WSL2后台持久运行不自动关闭的解决方案
linux·windows·wsl
zhou1352848226712 天前
Linux 系统安装 Ollama 详细教程
linux·ubuntu·wsl·ollama
西游音月12 天前
Windows环境下的WSL+Claude Code安装配置
windows·大模型·ai编程·wsl·claude code
随风一样自由17 天前
【WSL+Linux】国内网络连接微软官方服务器(或GitHub)不稳定,导致下载内核或Linux发行版时超时断开如何解决?
linux·服务器·wsl
假如梵高是飞行员18 天前
WSL2 从 img 镜像文件启动特定 Linux 发行版完整指南
linux·windows·wsl
Qres8211 个月前
docker & WSL & Ubuntu安装记录
ubuntu·docker·容器·wsl
weixin_ab1 个月前
【WSL2 + PgVector 远程连接排坑记】
wsl
糖少主1 个月前
WSL中使用Beyond Compare 3/4/5作为difftool
git·wsl·beyond compare·difftool
Dontla2 个月前
修改默认wsl发行版环境后报错(wsl --set-default)(wsl别名,$PROFILE)
wsl
勤奋的大熊猫2 个月前
VS code 打开后自动提示 WSL 更新
wsl