Windows Subsystem for Linux 2 (WSL 2) — это вторая версия подсистемы Windows для Linux. Новая архитектура WSL 2 обеспечивает иной способ взаимодействия дистрибутивов Linux с Windows. WSL 2 использует технологию виртуализации и ядро Linux для реализации новых возможностей.
Подсистема WSL 2 доступна только в Windows 10 версии 2004, сборки 19041 или выше.
Основные приоритеты WSL 2:
- Увеличение производительности файловой системы.
- Добавление полной совместимости системных вызовов.
Простыми словами Windows Subsystem for Linux 2 работает значительно быстрее чем предыдущая версия подсистемы Linux.
Каждый дистрибутив Linux может переключаться между WSL 1 или WSL 2 в любое время.
Примечание автора: это не совсем так. Если вы использовали совсем старый дистрибутив WSL 1 из времён бета-тестирования, то он может не поддерживать WSL 2. Придётся снести старый дистрибутив и установить новый. После этой процедуры новый дистрибутив Linux сможет работать как WSL 1 так и WSL 2.
Несмотря на то, что WSL 2 гораздо производительнее, есть два случая, когда рекомендуется использовать WSL 1:
- Файлы проекта должны храниться в файловой системе Windows.
Если вы будете использовать дистрибутив Linux WSL для доступа к файлам проекта в файловой системе Windows, и эти файлы не могут храниться в файловой системе Linux, вы получите более высокую производительность в файловых системах ОС, используя WSL 1. - Проект, для которого требуется перекрестная компиляция с использованием средств Windows и Linux на одних и тех же файлах.
Операции с файлами в операционных системах Windows и Linux выполняются быстрее в WSL 1, чем на WSL 2. Поэтому если вы используете приложения Windows для доступа к файлам Linux, в настоящее время вы получите более высокую производительность при использовании WSL 1.
Ссылки
https://docs.microsoft.com/ru-ru/windows/wsl/compare-versions
https://docs.microsoft.com/ru-ru/windows/wsl/install-win10
Сравнение WSL 1 и WSL 2
Функция | WSL 1 | WSL 2 |
---|---|---|
Интеграция Windows и Linux | ✅ | ✅ |
Быстрый запуск | ✅ | ✅ |
Незначительный расход ресурсов | ✅ | ✅ |
Запуск с использованием текущих версий VMWare и VirtualBox | ✅ | ✅ |
Управляемая виртуальная машина | ❌ | ✅ |
Полнофункциональное ядро Linux | ❌ | ✅ |
Полная совместимость системных вызовов | ❌ | ✅ |
Производительность в файловых системах ОС | ✅ | ❌ |
WSL 2 будет работать с VMWare 15.5.5+ и VirtualBox 6+.
Подготовка к установке WSL 2
Подсистема WSL 2 доступна только в Windows 10 версии 2004, сборки 19041 или выше. Проверяю версию:
winver
Вижу, что у меня старая версия Windows. Обновляюсь.
После обновления снова проверяю версию:
winver
Теперь требования для установки WSL 2 соблюдены.
Установка WSL 1 и WSL 2
Перед тем как устанавливать дистрибутивы Linux необходимо включить компонент "Подсистема Windows для Linux".
В PowerShell
В PowerShell с правами администратора:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
В GUI
Панель управления > Программы и компоненты > Включение или отключение компонентов Windows.
Находим в списке "Подсистема Windows для Linux", устанавливаем.
Чтобы установить только WSL 1, необходимо перезагрузить компьютер и можно устанавливать дистрибутивы Linux. Для установки WSL 2 читаем дальше.
Включаем компонент "Подсистема Windows для Linux".
В PowerShell
В PowerShell с правами администратора:
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
В GUI
Панель управления > Программы и компоненты > Включение или отключение компонентов Windows.
Находим в списке "Платформа виртуальной машины", устанавливаем.
Перезагружаем компьютер.
Задаём WSL 2 в качестве версии по умолчанию. В PowerShell с правами администратора:
wsl --set-default-version 2
Вы можете увидеть ошибку "WSL 2 требуется обновление компонента ядра":
Переходим по ссылке https://aka.ms/wsl2kernel и скачиваем MSI файл с последней версией пакета обновления ядра Linux в WSL 2. Для простоты скину ссылки ниже.
Для ля 64-разрядных компьютеров:
https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi
Для ARM64:
https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_arm64.msi
Качаю пакет.
Устанавливаю пакет wsl_update_x64.msi.
Запустить.
Next. Начинается установка.
Практически моментально установка завершается. Finish.
После установки ядра выполняем команду еще раз. Она должна успешно завершиться без отображения сообщения.
В PowerShell с правами администратора:
wsl --set-default-version 2
Теперь по умолчанию будет использоваться ядро WSL 2.
Если у вас уже имеются дистрибутивы Linux, то вы можете попытаться обновить им ядро WSL до 2 версии. Посмотрим список установленных дистрибутивов в PowerShell с правами администратора:
wsl -l -v
У меня установлен Linux с названием Legacy, который работает на 1 версии WSL. Попытаюсь изменить для Legacy ядро WSL на 2 версию в PowerShell с правами администратора:
wsl --set-version Legacy 2
Если ваш дистрибутив Linux поддерживает вторую версию WSL, то операция пройдёт успешно, если не поддерживает, то вы увидите ошибку "Унаследованное распределение не поддерживает WSL 2". Как у меня:
В таком случае нужно снести старый дистрибутив и установить новый. Удаляю Legacy в PowerShell с правами администратора:
wsl --unregister Legacy
Проверим:
wsl -l -v
Дистрибутивов нет, можно что-нибудь установить.
Установка дистрибутива Linux в Windows
Я пробовал перейти по ссылке https://aka.ms/wslstore, однако, она оказалась нерабочей. Поэтому я просто поискал "wsl" в Microsoft Store.
Установлю Ubuntu.
Доступны дистрибутивы:
- Ubuntu 16.04 LTS
- Ubuntu 18.04 LTS
- Ubuntu 20.04 LTS
- openSUSE Leap 15.1
- SUSE Linux Enterprise Server 12 SP5
- SUSE Linux Enterprise Server 15 SP1
- Kali Linux
- Debian GNU/Linux
- Fedora Remix for WSL
- Pengwin
- Pengwin Enterprise
- Alpine WSL
Проверим:
wsl -l -v
Теперь у меня Ubuntu на ядре WSL 2.
Запускаю bash:
При первом запуске недавно установленного дистрибутива Linux откроется окно консоли, и вам будет предложено подождать минуту или две, чтобы файлы распаковались и сохранились на компьютере. Затем необходимо будет создать учетную запись пользователя и пароль для нового дистрибутива Linux.