WSL 灾难性故障:Wsl/Service/E_UNEXPECTED

6 阅读1分钟

WSL 灾难性故障:Wsl/Service/E_UNEXPECTED

启动 WSL 时,如果反复出现 Wsl/Service/E_UNEXPECTED,即使重启 Windows 也无法恢复,问题可能已经不只是某个 Linux 发行版没有正常退出,而是 WSL 的宿主服务状态异常。此时可以先关闭 WSL 实例,再重启负责管理 WSL 生命周期和运行衔接的 Windows 服务。

解决方案

操作前先保存 WSL 中的工作,并退出 Docker Desktop 等依赖 WSL 的程序。下面的命令需要在 Windows 管理员身份的 PowerShell 或命令提示符中执行,不要在 WSL Shell 中执行。

  1. 关闭所有 WSL 实例:

    wsl --shutdown
    
  2. 重启 WSL 服务。对于使用 Windows 内置 WSL 组件的系统,服务名通常是 LxssManager:

    net stop LxssManager
    net start LxssManager
    

    LxssManager 负责管理 WSL 实例的启动、停止和生命周期,并衔接 wsl.exe 与 Linux 子系统。重启服务会结束当前 WSL 实例,因此需要先保存未完成的工作。

  3. 服务启动完成后,重新打开 WSL:

    wsl
    

如果找不到 LxssManager 服务

部分通过 Microsoft Store 安装或更新的 WSL 版本,可能使用 WslService 替代 LxssManager。可以先查询服务:

Get-Service LxssManager, WslService -ErrorAction SilentlyContinue

如果查询结果中存在 WslService,请重启该服务:

net stop WslService
net start WslService

然后再次执行 wsl。如果服务无法停止或启动,先确认 Docker Desktop 等程序已经退出,再以管理员身份重试。

参考:Microsoft Learn:WSL 基本命令、WSL FAQ