wsl2 冻结(无法运行任何发行版)。我可以恢复数据吗?Windows 11

wsl2 冻结(无法运行任何发行版)。我可以恢复数据吗?Windows 11

长话短说 - WSL2 在尝试对任何发行版执行任何操作时会一直挂起,直到系统重新启动。我尝试过启动/停止 LxssManager,但似乎没有任何效果。此时我只想从分布中恢复数据。不通过 WSL 访问 shell 是否可行?

更多细节。

  • 我可以在系统启动时执行大多数 WSL 命令,wsl -l -v然后再尝试打开或执行与发行版相关的任何操作
  • wsl -l -v尝试运行发行版后,WSL 会永久冻结,直到系统重新启动。之前运行的命令现在无限期挂起,因此,例如,我在尝试启动发行版后无法执行。wsl --help运行正常,也一样wsl --set-default-version
  • wsl --export挂了,所以我无法使用它。
  • wsl诸如、、wsl --status之类的命令wsl --shutdown会挂起 WSL。
  • 我已经安装了另一个发行版,尽管它已安装,但尝试运行它会导致同样的问题。

一些 WSL 信息(我的系统语言是波兰语,所以名称可能有所不同)

wsl --version

Susbsystem WSL version: 1.1.6.0
Kernel version: 5.15.90.1
Service WSLg version: 1.0.50
MSRDC version: 1.2.3770
Direct3D version: 1.608.2-61064218
DXCore version: 10.0.25131.1002-220531-1700.rs-onecore-base2-hyp
Windows system version: 10.0.22621.1485

答案1

是的,数据恢复是可能的。WSL 2 将分发数据存储在.vhd磁盘映像中。不幸的是,它们的位置差异很大。我发现Reddit 上的这个脚本(根据用户名,来自超级用户贡献者 NotTheDr01ds?):

Get-ChildItem HKCU:\Software\Microsoft\Windows\CurrentVersion\Lxss\ |
    ForEach-Object {
        (Get-ItemProperty $_.PSPATH) | Select-Object DistributionName,BasePath
    } | Format-List

它在我的计算机上有效。只需将其粘贴到 PowerShell 窗口中,然后按Enter

在此脚本报告的文件夹中,你会发现一个EXT4.VHD文件。只需将此文件复制到任何地方,您就会有一个备份。您可以使用兼容的虚拟机软件 (Hyper-V虚拟盒以及在转换映像格式后的其他版本)在 VM 中使用 Linux。磁盘映像不包含任何分区方案,只有ext4文件系统。您可以像这样挂载它(只读,以免造成意外更改):

mount -o ro /dev/sdx /mnt/wsl-rescue

然后,您可以从您的分发中找到数据/mnt/wsl-rescue并将其复制到其他地方。

您可以使用任何现代 Linux 进行此救援。例如,Ubuntu Live DVD 映像就可以了,而且不需要安装。

备份数据后,您可以继续恢复 WSL——如果需要,可以完全重置它。

相关内容