WSL启动失败,系统找不到指定的文件-CreateInstance/CreateVm/HCS/ERROR_FILE_NOT_FOUND
事故回忆
几天前查看电脑右下角有更新,不过我的系统由于某些未知问题,win10一直升级失败,我指的不是升级到win11,因为不支持TPM,所以一般没有通过Windows11InstallationAssistant.exe更新Windows10

就在今天凌晨4:14,我还在使用docker和wsl开始SpringBoot项目时,系统突然关机,重启之后发现wsl ubuntu 无法启动,报错
系统找不到指定的文件。
错误代码: Wsl/Service/CreateInstance/CreateVm/HCS/ERROR_FILE_NOT_FOUND
网上查找教程,重启wsl,重新卸载安装Hyper-V,虚拟机平台,适用于 Linux 的 Windows 子系统,重新安装Windows for Linux 2.7.0,wsl.2.7.10.0.arm64.msi,结果都不行,让Claude-Code MiniMax-M3, ZCode GLM-5.3-Flash都没有解决出来,没有办法,将上面重试操作日志提供给ZCode,
powershell
wsl -l -v
NAME STATE VERSION
* Ubuntu-22.04 Stopped 2
C:\Users\Gavin>wsl -d Ubuntu-22.04
系统找不到指定的文件。
错误代码: Wsl/Service/CreateInstance/CreateVm/HCS/ERROR_FILE_NOT_FOUND
C:\Users\Gavin>wsl --export Ubuntu-22.04 F:\wsl_backup.tar
正在导出,这可能需要几分钟时间。 (0 MB)
系统找不到指定的文件。
错误代码: Wsl/Service/CreateVm/HCS/ERROR_FILE_NOT_FOUND
C:\Users\Gavin>wsl --unregister docker-desktop
正在注销。
不存在具有所提供名称的分发。
错误代码: Wsl/Service/WSL_E_DISTRO_NOT_FOUND
打开Docker也提示无法启动
bash
There was a problem with WSL
An error occurred while running a WSL command.
Please check your WSL configuration and try again.
running wslexec: The system cannot find the file specified.
Wsl/Service/RegisterDistro/CreateVm/HCS/ERROR_FILE_NOT_FOUND:
c:\windows\system32\wsl.exe --import-in-place docker-desktop
<home>\appdata\local\docker\wsl\main\ext4.vhdx:
exit status 0xffffffff (stderr: , wslErrorCode:
Wsl/Service/RegisterDistro/CreateVm/HCS/ERROR_FILE_NOT_FOUND)
我在写博客的时候(已解决后)发现,Docker启动,在导入他的虚拟磁盘,但是启动服务失败,而且这个ext4.vhdx linux虚拟文件系统磁盘文件和wsl的文件名称一样,也就是说docker和wsl都依赖底层的某个虚拟机服务,


解决方案
重装Windows系统服务无用

更新WSL无用
另外我还发现在我卸载系统更新,重新启动系统,查看wsl版本和之前的一样

卸载更新之前
cmd
wsl --version
WSL 版本: 2.7.13.0
内核版本: 6.18.33.2-2
WSLg 版本: 1.0.73.2
MSRDC 版本: 1.2.7214
Direct3D 版本: 1.611.1-81528511
DXCore 版本: 10.0.26100.1-240331-1435.ge-release
Windows: 10.0.19045.6466
磁盘抢救
这种情况一般是磁盘损坏的时候进行的,我让ZCode分析不是虚拟磁盘问题,对与你应该也是,如果有磁盘有较大容量,还是考虑备份一下,万一Code Agent给你改坏了,一般也不会改这个文件,所以我还是复制到机械硬盘
抢救与重建步骤:
- 备份虚拟磁盘 :首先将找到的
ext4.vhdx文件完整复制到其他安全的驱动器(这就是你的数据备份)。 - 重新导入发行版:在修复或重装 WSL 本体后,如果原发行版仍无法启动,可以将备份的 VHD 文件作为新的发行版导入:
bash
# 原位导入 VHD(适用于 WSL 2.3 及以上版本)
wsl --import-in-place Ubuntu-Restored C:\backup\ext4.vhdx
# 或从副本完整导入到指定目录
wsl --import Ubuntu-Restored C:\WSL\Ubuntu-Restored C:\backup\ext4.vhdx --vhd
启动新导入的发行版并确认文件是否完好:
bash
wsl -d Ubuntu-Restored
极端情况下的文件级抢救:
即使 VHD 本身损坏导致无法直接作为系统启动,你通常也可以将其挂载到能够读取 Linux 文件系统的环境(如其他正常的 WSL 发行版、物理 Linux 机器或虚拟机)中,逐个抢救出需要的文件:
bash
# 以裸盘模式挂载受损的 VHD,以便从其他正常发行版中读取数据
wsl --mount --vhd C:\backup\ext4.vhdx --bare
⚠️ 重要警告 :
执行 wsl --unregister 命令会彻底删除 对应的 ext4.vhdx 文件。在数据抢救和备份彻底完成之前,绝对不要执行此命令!
卸载更新
这波属实给ZCode加鸡腿,要不然我真的要尝试,重新安装WSL了,然后原地导入备份的虚拟磁盘文件

问题链
qfe更新记录:KB5126256(安全更新)安装于 2026-09-09,就是昨天- 今晨 04:14 的重启正好是这次更新关机时完成安装(当时 WSL VM 还在运行中,属于更新强制重启)
- 此后 hypervisor 分区创建全部失败:HCS 事件日志报
0xC0370103,WSL 报ERROR_FILE_NOT_FOUND,Hyper-V 管理器直接挂死 - 所有文件层面检查(kernel/initrd/vmcompute/vid/hvservice/CBS 状态/pending rename)全部正常,功能重装无效------符合「更新本身的 bug 或其安装过程损伤了系统」的特征
推荐操作
管理员权限执行
powershell
wusa /uninstall /kb:5126256
按提示重启,然后测试 wsl -d Ubuntu-22.04。如果 wusa 提示无法卸载,用 DISM 找到包名再卸:
powershell
dism /online /get-packages | findstr 5126256
dism /online /remove-package /packagename:<上面查到的包名>
卸载成功后建议在 Windows 更新设置里暂停更新 7 天(或用 wushowhide 工具屏蔽 KB5126256),否则它会自动装回来。
如果卸载更新后仍然一样
下一层排查按顺序:
- 干净启动 排除第三方内核驱动(这台机器上有向日葵/Oray、GameViewer、AlibabaProtect、Quark、QQ 等大量带内核组件的软件):
msconfig→ 服务里勾选「隐藏所有 Microsoft 服务」→ 全部禁用 → 重启测试。干净启动下 WSL 能用就二分定位回那个软件。 DISM /Online /Cleanup-Image /RestoreHealth+sfc /scannow,完成后重启。
重启成功
所幸成功

docker也启动成功

最后还是提一嘴第一次ZCode没有解决的原因,可能在于提供的背景信息不够(或者是尝试的方法,报错信息等),比如设置Windows服务,重启,这一点ZCode还做不到操作你的电脑重启,能不能做到我不知道,可能它就算能,也不会,只能让用户自己操作,因为重启了,自己的会话都会中断,对于它也拿不到工具调用信息

参考文章
- 通过wsl修复
- https://blog.path-finder.jp/troubleshooting/修复-wsl-service-createinstance-createvm-hcs-error_file_not_found-错误-wsl-2-7-3-更新后发行版无法启/
- https://www.zhihu.com/question/439585675
- 【Linux】安装WSL(Linux子系统)时遇到" 系统找不到指定的文件"的解决方案
参考解决方案
解决方法一

我尝试了 https://github.com/microsoft/WSL/releases?page=2#release-2.7.10,结果没有用,不过这也不适合我这种非常少见的情况,一般通过其他方法即可实现
解决方法二
