近日,大量 Windows 10/11 用户反馈,在系统重启后,Windows Subsystem for Linux 2(WSL2)无法正常启动,并抛出 CreateVm/HCS/ERROR_FILE_NOT_FOUND 错误。令人困惑的是,WSL 的安装状态在命令行中显示为“健康”,相关组件也似乎完整无缺。这一现象在高版本 Windows 系统上集中出现,引发开发者社区广泛关注。

问题现象:重启后“起死回生”失败

用户在完成一次系统重启后,尝试通过 wsl --list --running 或直接启动发行版(如 Ubuntu、Debian)时,会收到类似如下错误信息:

WSL2 fails to start with CreateVm/HCS/ERROR_FILE_NOT_FOUND

部分用户还反馈,同一台机器上之前正常运行的 WSL2 实例,在重启后彻底无法访问。而通过 wsl --status 检测,结果却显示“默认版本:2”以及“安装状态:已安装”,没有任何报警。

“看起来一切正常,但就是启动不了,”一位来自上海的开发者表示,“我检查了 Hyper-V、虚拟机平台、WSL 内核更新包,全部显示已安装,错误却依然存在。”

技术背景:与 Hyper-V 和 HCS 的关系

CreateVm/HCS 是 Windows 的 Hyper-V 计算服务(Hyper-V Compute Service)的一部分,负责创建和管理虚拟机实例。WSL2 底层依赖于轻量级虚拟机,当系统重启后,HCS 在尝试重建该虚拟机时,却无法找到某个关键文件,从而抛出 ERROR_FILE_NOT_FOUND(错误代码 0x80070002)。

初步分析认为,该错误可能与 Windows 更新、虚拟化驱动加载顺序、或 Virtual Machine Platform 组件的注册表状态异常有关。部分用户在问题出现前刚刚安装了 Windows 累积更新(KB5034204 等),也有人怀疑是第三方安全软件或优化工具误删了必要文件。

社区与官方反应:解决方案陆续出炉

在 GitHub 的 WSL 仓库、Microsoft Q&A 以及 Reddit 上,该问题已形成多个讨论串。微软工程师在部分帖子中回复称,正在调查根本原因,并建议用户尝试以下临时修复方案:

  1. 重新启用虚拟化平台:以管理员身份运行 PowerShell,执行
    dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all
    随后重启。

  2. 重置 WSL 内核:下载并覆盖安装最新版 WSL2 Linux 内核更新包。

  3. 手动清理并重置网络/虚拟机状态:关闭所有 WSL 实例,运行 wsl --shutdown,再执行 netsh winsock reset 后重启。

  4. 检查 Hyper-V 服务:确保 HvHostvmmsvmic 等服务正在运行,若被禁用则改为自动启动并重启。

有用户表示,执行以上步骤后成功恢复了 WSL2 功能;但也有部分用户反映问题仍未完全解决,只能回退到 WSL1 或暂时禁用重启后的虚拟机重建功能。

专家建议:提前备份配置,避免强制重启

安全专家提醒,在微软发布正式修复补丁之前,开发者应定期备份 WSL 发行版的配置文件(通常位于 %USERPROFILE%\AppData\Local\Packages 下),并尽量避免在重要项目期间进行系统更新或重启。若已遭遇该问题,可优先尝试上述方法,或考虑将 WSL2 降级为 WSL1 以临时过渡。

微软目前尚未发布包含该修复的 Windows 可选更新,但内部消息称,一个针对 HCS 文件路径解析的补丁已在测试中,预计将于近期通过 Windows Update 推送。

结语

WSL2 作为 Windows 生态中重要的 Linux 开发环境,其稳定性直接影响大量开发者的工作效率。本次 ERROR_FILE_NOT_FOUND 问题虽然令人头痛,但好在社区和微软均已积极介入。对于普通用户而言,保持系统更新、留意虚拟化服务状态,是避免此类错误的关键。未来几天内,建议受影响用户密切关注 Windows 更新日志,并及时应用官方修复。