我认为这种情况是在我更新 Windows 11 后开始发生的。当前版本是 Windows 11,版本 22H2(操作系统内部版本 22623.1037)。
最初,我的 Docker Desktop 也停止了工作,但我卸载了它,只专注于 WSL。
我尝试过的:
wsl -l -v
--> 没有回应从开始菜单打开 Ubuntu 20.04 图标 --> 无响应。WSL(使用 WSL2)完全没有响应,我的 Docker Desktop 也是如此。
显然,我希望 WSL 显示 shell 提示屏幕,但它完全没有响应!
答案1
WSL 在 Windows 11 22H2 中确实发生了很大变化,因此升级可能是一个因素。至少对于排除此故障来说,好消息是现在有两种不同的 WSL 安装“类型”。如果其中一种有问题,那么切换到另一种也许可以解决问题。这两种“类型”是:
WSL 作为 Windows 功能——这是 WSL 的原始交付方式(现已过时)。这被称为 WSL 的“内置”版本,因为它“随 Windows 提供”,只需启用即可。
WSL 作为商店 (UWP) 应用——这是安装 WSL 的新方法。它自 2021 年 10 月以来一直处于预览状态,但随着 Windows 11 22H2 的推出,它成为了安装新 WSL 版本的官方方式。Windows 11 22H2
wsl --update
中的 A 应该(根据我的经验)从内置版本切换到商店版本。更准确地说,两者都已启用,但商店版本优先。
这两个版本仍然需要在 Windows 中启用“虚拟机平台”功能(或 Hyper-V)才能提供 WSL2 功能。通过打开或关闭 Windows 功能设置,确保 VMP 已启用。如果没有,请启用它并重新启动。在我看来,它不太可能被禁用,因为启动 WSL2 发行版时通常会收到错误消息(而不是无响应)。不过,仍然值得仔细检查。
确定您使用的是收件箱还是商店/应用程序的最简单方法是检查“开始”菜单中的“适用于 Linux 的 Windows 子系统”。如果存在,则表示商店版本。如果没有,则表示收件箱。
取决于结果:
如果您发现您正在使用内置版本,请尝试安装商店版本。您可以从Microsoft Store 页面直接地。
建议重新启动,尤其是在您的情况下。
然后检查
wsl --version
。如果它报告组件版本,则表示 WSL App 已安装。看看wsl -l -v
此时您是否可以启动发行版或运行。如果您使用的是 Store/App 版本,请尝试卸载它。只需在“开始”菜单中搜索“Windows Subsystem for Linux”,右键单击,然后卸载也可以通过正常添加或删除程序设置。
卸载后,确认打开或关闭 Windows 功能“适用于 Linux 的 Windows 子系统”功能已启用,重新启动,然后尝试启动您的发行版并运行
wsl -l -v
。如果是这样,您可能需要尝试重新安装商店版本,看看简单的“卸载/重新安装”是否能解决问题。
其他故障排除步骤:
安装商店版本后,尝试在新的“安全模式”下运行。为此,请在您的视窗用户配置文件目录,
.wslconfig
内容如下:[wsl2] safeMode = true
尝试再次运行。
在 PowerShell 中运行以下命令:
Get-ChildItem HKCU:\Software\Microsoft\Windows\CurrentVersion\Lxss\
查找此处的任何“异常”,我知道这很难量化,因为您没有已知的“良好状态”。但是,潜在问题的一个明显示例是目录或发行版名称中的乱码。
卸载所有可能的程序(发行版除外)并重新安装。这包括卸载 WSL Store App 并关闭适用于 Linux 的 Windows 子系统和虚拟机平台特征。
单独重新打开每个组件(从 VMP 开始,然后是 WSL 功能)可能会给你一些更深层次问题的迹象。在重新启动期间仔细观察与组件安装相关的消息。
在最坏的情况下(但不是现在,如果需要,让我们继续进行故障排除),您可以尝试备份并删除在那里找到的现有 WSL 注册表项。您可以从属性中指定的目录(
BasePath
在该LocalState
目录下)备份 WSL2 磁盘映像本身。WSL2 映像的文件名应始终(当前)为ext4.vhdx
。如果您将子系统本身恢复到工作状态,则可以恢复该映像。