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— при необходимости полностью сбросив его.