WSL2 "system.vhd找不到" 错误修复教程(实测有效)
一、错误现象
启动WSL2时提示:
无法将磁盘"C:\Program Files\WSL\system.vhd"附加到 WSL2: 系统找不到指定的文件。
错误代码: Wsl/Service/CreateInstance/CreateVm/MountDisk/HCS/ERROR_FILE_NOT_FOUND
二、适用场景
WSL2虚拟磁盘文件(system.vhd)丢失或损坏,但原有WSL发行版(如示例中的deepin)仍有残留配置时。
三、前置准备
-
以管理员身份打开PowerShell(按下Win+X,选择"Windows PowerShell (管理员)")。
-
确保目标磁盘(如示例中的D盘)有足够空间,用于导出WSL虚拟磁盘(示例导出文件约57GB)。
四、详细修复步骤
- 步骤1:关闭所有WSL实例
执行命令停止当前运行的WSL服务,避免导出时冲突:
bash
wsl --shutdown
- 步骤2:查看已安装的WSL发行版
确认需要修复的发行版名称(如示例中的"deepin")及状态:
bash
wsl --list --verbose
NAME STATE VERSION
deepin Stopped 2
- 步骤3:导出WSL发行版虚拟磁盘(关键步骤)
先尝试tar格式导出(若失败则用VHD格式,示例中tar导出失败,改用VHD成功):
失败尝试(可跳过):
bash
wsl --export deepin D:\WSL\deepin_251204.tar
成功方案(VHD格式导出):
bash
wsl --export deepin D:\WSL\deepin_251204.vhdx --vhd
提示"正在导出,这可能需要几分钟时间",等待进度完成后显示"操作成功完成"即可。
- 步骤4:注销原有损坏的WSL发行版
清除残留的损坏配置:
bash
wsl --unregister deepin
输出"正在注销。操作成功完成"即表示注销成功。
- 步骤5:卸载并更新WSL组件
先卸载现有WSL组件:
bash
wsl --uninstall
再更新WSL到最新版本:
bash
wsl.exe --update
提示"正在安装: 适用于 Linux 的 Windows 子系统",完成后显示"已安装 适用于 Linux 的 Windows 子系统"。
- 步骤6:重新导入WSL发行版
将步骤3导出的VHD文件重新导入为新的WSL实例:
bash
wsl --import deepin D:\WSL\deepin D:\WSL\deepin_251204.vhdx --vhd
输出"操作成功完成"即修复完成。
五、验证修复结果
关闭终端、再打开终端,应该可以了
六、注意事项
-
导出路径需提前创建文件夹(如示例中的"D:\WSL"),避免路径不存在导致导出失败。
-
导出的VHD文件建议备份,以防后续出现问题可再次导入。
-
命令中的"deepin""D:\WSL..."需根据自身WSL发行版名称和磁盘路径修改。