Компания Microsoft объявила о формировании новых экспериментальных сборок Windows Insider (build 18917), в состав которых включена ранее анонсированная прослойка WSL2 (Windows Subsystem for Linux), обеспечивающая запуск исполняемых файлов Linux в Windows. Вторая редакция WSL отличается поставкой полноценного ядра Linux, вместо эмулятора на лету транслирующего системные вызовы Linux в системные вызовы Windows.

Использование штатного ядра позволяет добиться полной совместимости c Linux на уровне системных вызовов и обеспечить возможность бесшовного запуска в Windows контейнеров Docker, а также реализовать поддержку файловых систем на базе механизма FUSE. По сравнению с WSL1 в WSL2 существенно увеличена производительность ввода/вывода и операций с файловой системой. Например, при распаковке сжатого архива WSL2 быстрее WSL1 в 20 раз, а при выполнении операций «git clone», «npm install», «apt update» и «apt upgrade» в 2-5 раз.

В WSL2 предлагается компонент на базе ядра Linux 4.19, который выполняется в окружении Windows при помощи виртуальной машины, уже применяемой в Azure. Обновления для ядра Linux доставляются через механизм Windows Update и тестируются в инфраструктуре непрерывной интеграции Microsoft. Все подготовленные для интеграции ядра с WSL изменения обещают опубликованы под свободной лицензией GPLv2. Подготовленные патчи включают оптимизации для сокращения времени запуска ядра, уменьшения потребления памяти и оставления в ядре минимально необходимого набора драйверов и подсистем.

Поддержка старой версии WSL1 сохранена и обе системы могут использоваться бок о бок, в зависимости от предпочтений пользователей. WSL2 может выступать в качестве прозрачной замены WSL1. Как и в WSL1 компоненты пространства пользователя устанавливаются отдельно и базируются на сборках различных дистрибутивов. Например, для установки в WSL в каталоге Microsoft Store предлагаются сборки Ubuntu, Debian GNU/Linux, Kali Linux, Fedora, Alpine, SUSE и openSUSE.

Окружение выполняется в отдельном дисковом образе (VHD) c файловой системой ext4 и виртуальным сетевым адаптером. Для взаимодействия с предлагаемым в WSL2 ядром Linux требуется включение в дистрибутив небольшого скрипта инициализации, изменяющего процесс загрузки. Для переключения режимов работы дистрибутивов предложена новая команда «wsl —set-version», а для выбора применяемой по умолчанию версии WSL команда «wsl —set-default-version».