Вопрос или проблема
Я установил WSL 1, наслаждался наличием Linux на своем ПК, затем обнаружил ограничения редкой совместимости файлов между двумя операционными системами.
Поэтому я установил WSL 2, следуя спецификациям (включил виртуализацию в настройках BIOS и все такое), но установка не работает полностью, я не могу установить его по умолчанию, и не все команды оболочки отвечают так, как ожидалось.
Я погуглил, и у кого-то были похожие проблемы, но не так много прямых решений предложено (предполагаю, это все еще относительно новый случай).
Поэтому я хочу удалить WSL как можно глубже и переустановить WSL 2 с нуля.
- Какой самый безопасный и рекомендуемый процесс для полного удаления WSL?
- Можно ли установить WSL 2 с нуля, не устанавливая WSL 1 ранее?
Обновление: На данный момент это несколько устаревший ответ. Если вы используете более старую версию WSL, которая была установлена до Windows 10 или 11 22H2, то это может быть правильный ответ на то, как удалить. Однако, если вы используете версию из Магазина (или UWP версию) WSL, пожалуйста, смотрите мой новый ответ (и/или ответы других пользователей, если они есть).
Можно ли установить WSL 2 с нуля, не устанавливая WSL 1 ранее?
Нет. Базовая поддержка WSL необходима для WSL2.
Какой самый безопасный и рекомендуемый процесс для полного удаления WSL?
Вот самая лучшая информация, которую я имею по удалению всего, что связано с WSL.
Похоже, вы считаете существующий экземпляр безнадежным, но если вы хотите сохранить его для истории, вы можете начать с:
wsl --export <имя_дистрибутива> имя_архива.tar
Затем удалите существующие установки дистрибутивов:
- Любой дистрибутив, который вы установили из Магазина, вы должны сначала удалить через “Приложения и компоненты” (также известное как “Установка и удаление программ”) в Windows. Это также относится к дистрибутивам, установленным вручную через загруженный пакет Appx.
Затем проверьте, чтобы ничего не осталось. Из PowerShell или CMD:
wsl -l
wsl --unregister <имя_дистрибутива>
В этот момент вы можете просто установить новый дистрибутив из Магазина. Маловероятно, что какая-либо дополнительная переустановка других компонентов даст результат. Но если вы хотите их удалить:
-
Из “Приложения и компоненты” (также известное как “Установка и удаление программ”) в Windows удалите “Обновление подсистемы Windows для Linux”. Я довольно уверен, что это обновление ядра Linux. Вероятно, перезагрузите, если хотите быть уверенными, что оно полностью удалено перед следующим шагом.
-
Из “Включение или отключение компонентов Windows” отключите “Подсистема Windows для Linux”. Согласно комментариям, может потребоваться перезагрузка перед следующим шагом.
-
Из “Включение или отключение компонентов Windows” в Windows отключите “Платформу виртуальных машин”. Это поддержка WSL2 Hyper-V.
-
Перезагрузите.
Когда вы будете переустанавливать оттуда, я был бы признателен, если бы вы подтвердили, что “Обновление подсистемы Windows для Linux” возвращается в “Приложения и компоненты” после установки пакет обновления ядра (Шаг 4 в документации по установке). Я обновлю этот ответ на основе этой информации.
Этот ответ относится к более новой версии Store/UWP WSL. Чтобы подтвердить, что вы используете эту новую версию, выполните следующее в PowerShell:
Get-AppxPackage |? { $_.Name -like "*WindowsSubsystemforLinux*" }
Если вы видите результат, продолжайте читать этот ответ. Если результата нет, возможно, вы используете более старую версию WSL. Смотрите мой старый ответ о том, как полностью удалить эту версию.
Для версии Store/UWP ответ изменился:
Можно ли установить WSL 2 с нуля, не устанавливая WSL 1 ранее?
Да, под Windows 11 22H2 команда wsl --install
по умолчанию только установит WSL2. Чтобы установить WSL1, вы должны добавить wsl --install --enable-wsl1
.
Обратите внимание, что опция --enable-wsl1
недоступна в Windows 10, даже на полностью обновленной системе, которая в противном случае совместима с более новой версией WSP. В Windows 10 (19045.2311) WSL1 все еще автоматически устанавливается и включается с помощью wsl --install
.
Какой самый безопасный и рекомендуемый процесс для полного удаления WSL?
Вот самая лучшая информация, которую я имею по удалению всего, что связано с WSL. Это должно гарантировать, что (a) все функции удалены, и (b) вся дисковое пространство восстановлено.
Удаление
-
Опционально, создайте резервную копию существующих дистрибутивов:
Похоже, вы считаете существующий экземпляр безнадежным, но если вы хотите сохранить его для истории, вы можете начать с:
wsl --export <имя_дистрибутива> имя_архива.tar
Подтвердите все названия дистрибутивов для резервного копирования с помощью wsl -l -v
.
В качестве альтернативы вы можете скопировать только важные для вас файлы из дистрибутива в безопасное место за пределами дистрибутива. Обычно это включает все в вашем домашнем каталоге, но также посмотрите в /var
и /etc
на любые файлы, которые вы можете захотеть сохранить.
-
Если у вас установлен Docker Desktop, смотрите документацию Docker для получения информации о том, как сделать резервную копию любых томов, контейнеров и т.д.
-
Опционально, подтвердите действительность резервных копий дистрибутивов:
Конечно, если резервная копия важна для вас, то подтвердите, что она работает с помощью wsl --import
в новое имя.
-
Отмените регистрацию существующих дистрибутивов:
Для каждого дистрибутива, найденного с помощью wsl -l -v
, удалите его с помощью:
wsl --unregister <имя_дистрибутива>
Предупреждение: Это разрушительная и необратимая операция, если у вас нет действительной резервной копии, как указано выше.
-
Определите любые пакеты дистрибутивов (приложения), установленные из Магазина:
Перейдите в Настройки -> Добавить или удалить программы и найдите любые дистрибутивы, которые вы могли установить из Магазина (Ubuntu, Debian, Alpine, openSUSE или другие). Это на самом деле отдельно от дистрибутива, который вы ранее отменили регистрацию. Эти пакеты включают Distro Launcher и rootfs, который первоначально создал ваш дистрибутив (например, ubuntu2004.exe
).
В качестве альтернативы вы можете выполнить следующую команду из Администраторского PowerShell (рекомендуется PowerShell Core):
Get-ChildItem HKCU:\Software\Microsoft\Windows\CurrentVersion\Lxss\ |
ForEach-Object {
(Get-ItemProperty $_.PSPATH) | Select-Object DistributionName,BasePath
}
Это должно вывести список всех установленных пакетов распределения на вашей системе.
-
Затем удалите каждый дистрибутив, используя Установку/Удаление программ.
В старых версиях Windows удаление этих пакетов также удалило соответствующий дистрибутив, что привело к некоторой непреднамеренной потере данных. Похоже, что в большинстве недавних систем эти пакеты необходимо удалять в два отдельных шага, что хорошо.
-
Также в Настройки -> Добавить или удалить программы, найдите и удалите любые приложения “Подсистема Windows для Linux”. Это может включать:
- Подсистема Windows для Linux: основной пакет WSL сам по себе
- Обновление подсистемы Windows для Linux: обновления для пакета ядра для старых версий (включенных в пакет, который пришел как функция Windows) WSL.
- Предварительный просмотр WSLg подсистемы Windows для Linux: функция WSLg, которая появилась с Windows 11.
- Обратите внимание, некоторые из них также могут находиться в “компонентах системы”:
-
Лучше всего перезагрузить в этот момент, чтобы освободить любые другие используемые файлы.
-
Затем перейдите в Настройки -> Включение или отключение компонентов Windows.
-
Если они включены, отключите:
- Платформа виртуальной машины
- Подсистема Windows для Linux
Windows, вероятно, предложит перезагрузиться.
-
После перезагрузки подтвердите, что все вышеперечисленные элементы были успешно удалены. На этом этапе любая команда wsl
должна просто возвращать стандартный текст помощи “установки”.
Переустановка
Рекомендуемый способ переустановки с этого момента:
-
Откройте повышенный PowerShell. Лучше всего делать это от имени вашего обычного пользователя, в сеансе с правами администратора, а не от отдельного пользователя Admin.
wsl --install
По умолчанию это:
- Снова включает платформу виртуальных машин
- Устанавливает последнюю версию WSL из Microsoft Store. Эта версия теперь включает ядро напрямую, а не требует отдельного шага установки, как раньше.
- Устанавливает стандартный дистрибутив Ubuntu из Microsoft Store
Также смотрите wsl --help
для получения дополнительных параметров установки. Например, вы можете пропустить установку дистрибутива на этом этапе или выбрать другой дистрибутив.
Ответ или решение
Полная переустановка Windows Subsystem for Linux (WSL)
Если вы столкнулись с проблемами при использовании WSL 2 и хотите выполнить полную переустановку, вам необходимо провести несколько действий, которые позволят удалить WSL полностью и установить его заново. Рассмотрим шаги, которые помогут вам сделать это эффективно.
1. Подготовка к удалению WSL
Перед тем как приступить к удалению WSL, рекомендуется создать резервную копию ваших текущих дистрибутивов, чтобы избежать потери важной информации.
- Резервное копирование дистрибутивов:
wsl --export <имя_дистрибутива> archive_name.tar
Чтобы посмотреть все установленные дистрибутивы, используйте команду:
wsl -l -v
2. Удаление WSL
Следующие шаги помогут вам удалить все компоненты WSL с вашего устройства:
-
Убедитесь, что все дистрибутивы удалены:
Для каждого дистрибутива, использованного в вашей конфигурации WSL, выполните команду:
wsl --unregister <имя_дистрибутива>
Предостережение: это действие необратимо, если у вас нет резервной копии.
-
Удаление дистрибутивов через "Программы и компоненты":
Перейдите в «Настройки» → «Программы и компоненты» и удалите все дистрибутивы (например, Ubuntu, Debian и т. д.), которые были установлены через Microsoft Store.
-
Удаление обновлений WSL:
Также в «Программах и компонентах» найдите следующие компоненты и удалите их:
- Windows Subsystem for Linux
- Windows Subsystem for Linux Update
- WSLg Preview (для Windows 11)
-
Отключение компонентов WSL:
Перейдите в «Настройки» → «Включение или отключение компонентов Windows» и отключите:
- Подсистема Windows для Linux
- Платформа виртуальных машин
-
Перезагрузка системы:
После отключения этих компонентов перезагрузите компьютер, чтобы изменения вступили в силу.
3. Установка WSL 2
Теперь, когда вы полностью удалили WSL, вы можете установить его заново.
-
Открытие PowerShell с правами администратора:
Откройте PowerShell с правами администратора. Это необходимо для корректного выполнения команды установки.
-
Переустановка WSL:
Введите следующую команду для установки WSL:
wsl --install
Эта команда автоматически установит WSL 2, включая виртуальную платформу и дистрибутив Ubuntu по умолчанию.
-
Проверка установки:
После завершения установки выполните команду:
wsl -l -v
Это поможет вам убедиться, что WSL установлен корректно и дистрибутивы доступны.
Заключение
Полная переустановка Windows Subsystem for Linux (WSL) может решить проблемы, с которыми вы сталкивались, и обеспечить безошибочную работу системы. Следуя описанным шагам, вы можете удалить WSL полностью и установить его заново. Не забудьте сделать резервные копии важных данных перед началом процесса очистки. Если у вас возникнут дальнейшие вопросы или проблемы, обратитесь к официальной документации Microsoft по WSL для получения наиболее актуальной информации.