系统找不到指定的文件-CreateInstance/CreateVm/HCS/ERROR_FILE_NOT_FOUND

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给你改坏了,一般也不会改这个文件,所以我还是复制到机械硬盘

抢救与重建步骤:

  1. 备份虚拟磁盘 :首先将找到的 ext4.vhdx 文件完整复制到其他安全的驱动器(这就是你的数据备份)。
  2. 重新导入发行版:在修复或重装 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),否则它会自动装回来。

如果卸载更新后仍然一样

下一层排查按顺序:

  1. 干净启动 排除第三方内核驱动(这台机器上有向日葵/Oray、GameViewer、AlibabaProtect、Quark、QQ 等大量带内核组件的软件):msconfig → 服务里勾选「隐藏所有 Microsoft 服务」→ 全部禁用 → 重启测试。干净启动下 WSL 能用就二分定位回那个软件。
  2. DISM /Online /Cleanup-Image /RestoreHealth + sfc /scannow,完成后重启。

重启成功

所幸成功

docker也启动成功

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

参考文章

参考解决方案

解决方法一

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

解决方法二

相关推荐
OpenPomeloxCommunity29 分钟前
Linux 驱动基础(二):驱动自动加载的设计与实现
linux
yyk333241 小时前
Linux常见的基础命令
linux·运维·服务器
启博网络2 小时前
实战:无公网IP环境下的企业异地组网方案(附拓扑与IP规划)
linux·网络·tcp/ip
TomEval2 小时前
【接口自动化】13 - 接口数据驱动与报告
运维·windows·自动化
Soari2 小时前
Linux 内核对比:PREEMPT_DYNAMIC vs PREEMPT_RT
linux·运维·ubuntu
Dr_Fourier3 小时前
mmap的使用与底层原理
linux·c++
Lydia 不加班3 小时前
Windows 服务器 人大金仓 54321 端口放行完整步骤
运维·服务器·windows
运维全栈笔记4 小时前
Windows 本地部署 Codex 全攻略:CC Switch 接入 DeepSeek 与模型自由切换
windows·深度学习·机器学习·chatgpt
linx2954 小时前
单元五 · 对称认知·下:编译与链接
linux·c语言·开发语言·c++·嵌入式硬件
橘色的喵4 小时前
Claude Code 状态栏脚本:一行显示模型、上下文占用、git 分支和当前目录
linux·git·bash·claude