wsl2 завис (невозможно запустить ни один дистрибутив). Могу ли я восстановить данные? Windows 11

Длинная история — WSL2 зависает навсегда, пока система не перезагрузится при попытке выполнить любую операцию в любом дистрибутиве. Я пытался поиграться с запуском/остановкой LxssManager, но, похоже, ничего не работает. На данный момент я просто хочу восстановить данные из дистрибутива. Можно ли без доступа к оболочке через WSL?

Еще немного подробностей.

  • Я могу выполнить большинство команд WSL, например, при запуске системы, прежде чем пытаться открыть или выполнить какое-либо действие, связанное с распространением.
  • После попытки запустить дистрибутив WSL зависает навсегда до перезагрузки системы. Ранее выполняемые команды теперь зависают на неопределенный срок, поэтому я, например, не могу выполнитьwsl -l -vпосле попытки начать раздачу.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 (по имени пользователя, предоставленному другим участником Super User 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, VirtualBox и других после преобразования формата образа) с Linux внутри виртуальной машины. Образ диска не содержит никакой схемы разделов, только файловая система ext4 . Вы можете смонтировать его следующим образом (только для чтения, чтобы не вносить непреднамеренные изменения):

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

Затем вы можете найти данные из вашего дистрибутива по адресу/mnt/wsl-rescueи скопируйте их куда-нибудь еще.

Для этого спасения вы можете использовать любой современный Linux. Например, подойдет образ Live DVD Ubuntu, установка которого не требуется.

После резервного копирования данных вы можете приступить к восстановлению WSL— при необходимости полностью сбросив его.

Другие вопросы по тегам