На этот раз, правда, с болью: я запустил
pacman -Syu, а Их было достаточно много, при этом: например, bash или sudo просто не было, как таковых (они стали размером в 0 байт), а zsh ругался на:
zsh: error while loading shared libraries: /usr/lib/libcap.so.2: file too short
Очевидно, либа тоже была 0 байт.В целом, из оставшихся доступных взаимодействий был маппинг весла по сети, был бинарь
wsl.exe (есть ещё bash, но я проиграл в рулетку, и баш был тоже обнулен).Какое решение всей это проблемы вышло по итогу:
Качается сама либа из пакетов арча:
https://archlinux.org/packages/core/x86_64/libcap/Как-то её придется распаковать, а расжимать zstd скорее всего нечем - поэтому качается разжималка zstd отсюда
Либа распаковывается куда-нибудь, а дальше в проводнике открывается сетевой путь до
tmp внутри весла \\wsl$\Arch\tmp, куда переносится либа. Распаковать сразу в
/usr из винды нельзя - винда ругается на пермишены (и правильно ругается кста).Дальше фикшу либу, и можно уже заходить в шелл.
wsl -u root -e /bin/cp -r /tmp/usr /
Но всё веселье только начинается, надо ж ещё починить систему!Логичней всего это делать через пакман, но увы - пакман тоже умер, поэтому по старой схеме - качаем https://archlinux.org/packages/core/x86_64/krb5,
распаковываем, накатываем поверх системы.
Ура, пакман появился, но починить всё нам будет мешать неработащий
gpgme - его тоже придется накатить поверх системы.(можно прописать "
SigLevel = Never" в /etc/pacman.conf, но переустановить сам gpgme у меня всё равно не вышло - вылезли проблемы с либами).Теперь gpg полностью работает, и можно наконец перенакатывать все пакеты:
pacman -S --overwrite "*" $(pacman -Qnq) Последним этапом можно попробовать поискать по системе мертвые файлы через лютый
find / \( -path '/mnt' -o -path '/sys' -o -path '/proc' -o -path '/dev' -o -path '/run' \) -prune -o -size 0c -print | grep -vE "lock|.gitkeep|__init__.py\$"
Но я у себя ничего не нашел.UPD: покопался у себя в event viewer, и похоже, что причиной этому был OOM - весло попросило слишком много памяти, и винда убила виртуалку. pacman такое переживает достаточно плохо.
UPDx2: В комментариях подсказали, что восстановление после такого краша описано на арчевики - если вкратце, то половину действий можно упростить при наличии
pacman-static (статической версии пакмана), или просто другого работающего арча, например, livecd, хотя в случае с веслом это сложнее. Also, мертвые файлы можно искать менее лютым find /usr/lib -size 0 - поскольку при обновлении пакетов из реп задевается только этот путь.