Связанный:Есть ли способ установить подсистему Windows для Linux на Win10 (v1709) без использования Магазина?
При установке дистрибутива WSLснаружиMicrosoft Store (например, в ограниченной сети, см. ссылку), многие стандартные средства взаимодействия с этим дистрибутивом недоступны. В моем примере, когда я захожу в Настройки > Приложения и функции, дистрибутив не отображается в списке, а функции управления недоступны. Если я привожу свой вручную установленный экземпляр Linux в плохое состояние, как правильно сбросить его и вернуть к новой установке?
Редактировать: Примеры «плохого состояния», с которыми мы сталкивались до сих пор, включают BSOD во время «apt-get update», что приводит к неисправимому состоянию. Также, выполнение множественных изменений конфигурации для устранения проблемы, удаление или отключение служб и установка других пакетов без тщательного отслеживания того, что было изменено, с желанием «начать заново», чтобы проверить, работает ли найденное решение само по себе..
решение1
Если мой установленный вручную экземпляр Linux окажется в плохом состоянии, как правильно сбросить его и вернуть к новой установке?
Если вы используете Windows 10 версии 1903:
wsl --unregister <DistributionName>
Если вы используете Windows 10 версии 1709, 1803 или 1809:
wslconfig /unregister <DistributionName>
решение2
Вы можете использоватьШоколадный(например, с помощью частного репозитория NuGet) и выберите образ Debian с:
choco install wsl-debiangnulinux
Но потом
- Доступны только сочетания клавиш, такие как «WSL Terminal» и «Debian Terminal».
- вам не будет предложено создать пользователя, запустится только оболочка root
- Вы не найдете свой дистрибутив Linux для WSL в разделе «Настройки / Приложения и функции», а также нет «Дополнительных параметров» или «Сброса»
Кстати, командная строка wsl доступна, но тогда вам придется вручную создать учетную запись пользователя (useradd или adduser в зависимости от дистрибутива), предоставить sudo (группа sudo или sudoers) и создать /etc/wsl.conf
с помощью [user]
раздела и default=yourlogin
- см.wsl-configдокументация. В моем случае <distribution> config --default-user yourlogin
не имело никакого эффекта.
В случае окончательного отключения электроэнергии единственным вариантом представляется выполнение следующей последовательности действий:
wsl --export <distribution> wsl-backup-<distribution>.tar
wsl --unregister <distribution>
choco install wsl-<distribution>
wsl --import <distribution> wsl-backup-<distribution>.tar
с надеждой, что ваши проблемы не последуют за вами с импортированными файлами.
решение3
Предупреждение:Следующая информация не полностью официально документирована, поскольку вопрос касается "ручной установки" дистрибутива в WSL. Поэтому процедура может бытьнемного отличаетсяв будущих версиях Windows 10.
Чтобы понять это, сначала нам нужно узнать, в чем разница между установкой дистрибутива через Магазин Windows и вручную. Представьте себе Магазин Windows как менеджер пакетов в Windows. Он отслеживает все установленные, удаленные, обновленные пакеты и т. д. Итак, в меню «Настройки» есть список установленных приложений. Когда дистрибутив установлен, он поставляется как пакет Appx (архив ZIP). Этот пакет содержит tarball rootfs (tar-файл GZIP) этого дистрибутива (пример install.tar.gz
), исполняемый файл запуска (пример ubuntu.exe
) и некоторые другие вещи.
Когда этот лаунчер запускается в первый раз, он извлекает tarball (как tar -xf
команда) и создает запись в реестре в HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Lxss\{GUID}
разделе реестра. Этот раздел реестра важен, так как он указывает, где установлен дистрибутив, пользователя по умолчанию и т. д.
Когда дистрибутив установленвручнуюэтот же ключ реестра создается, но с другим basepath и другими. Поскольку эта ручная процедура не проходит через Windows Store, она не указана в приложении «Параметры». Но wsl.exe --list --all
команда может показать все установленные дистрибутивы в WSL. Таким образом, мы не получаем исполняемый файл запуска, но можем делать все с помощью wsl.exe
.
Как мы можем сбросить из 'плохого состояния'? Если вы знакомы с миром UNIX, предположим, что дистрибутивы в WSL, как вchroot-окружение. Всегдарезервное копирование дистрибутива WSL. Как обычно в настоящих дистрибутивах на базе Debian мы обычно запускаем эти команды для исправления пакетов:
sudo dpkg –configure -a
sudo apt update –fix-missing
sudo apt install -f
Если это не может исправить проблему, удалите и переустановите, возможно, это исправит ситуацию. Вы можете сделать резервную копию папки /home
с помощью, tar -czf
поскольку большинство пользовательских конфигураций сохраняются там. Затем удалите дистрибутив с помощью wsl.exe --unregister <Distribution Name>
команды. Резервная копия может быть важна для пользователей, поскольку предыдущая команда удаляет всю корневую папку, то есть. /
. Теперь вы можете установить новый дистрибутив и извлечь предыдущую /home
резервную папку с помощью, tar -xf
как обычно.
решение4
Попробуй это:
wsl --set-default-version 2
Вы также можете установить версию wsl для любого установленного дистрибутива:
wsl --set-version Ubuntu-20.04 1