Windows Subsystem for Linux¶
Windows Subsystem for Linux (WSL) — это подсистема операционной системы Windows, разработанная корпорацией Microsoft, которая позволяет запускать исполняемые файлы Linux-дистрибутивов непосредственно в среде Windows без использования виртуальной машины или двойной загрузки. WSL является компонентом Windows 10 и Windows 11 и ориентирована прежде всего на разработчиков, которым необходимы Linux-утилиты, инструменты сборки и среды исполнения в сочетании с Windows-приложениями.
¶История
Первая версия подсистемы — WSL 1 — была представлена в 2016 году в предварительной сборке Windows 10 (Anniversary Update, версия 1607). Идея заключалась в создании слоя трансляции системных вызовов Linux (syscall translation layer): Linux-бинарные файлы не работали на ядре Linux, а их системные вызовы преобразовывались в вызовы Windows NT-ядра. Такой подход обеспечивал высокую скорость работы файловой системы, но не позволял запускать приложения, требующие полного ядра Linux, — например, Docker-контейнеры или сетевые утилиты, работающие с низкоуровневыми интерфейсами.
В 2019 году Microsoft представила WSL 2, в которой вместо трансляции системных вызовов использовалось полноценное виртуальное ядро Linux, работающее в лёгкой виртуальной машине на основе Hyper-V. Это позволило запускать практически любое Linux-приложение, включая Docker, systemd и утилиты, требующие доступа к /dev, /proc и другим системным ресурсам. Одновременно была улучшена производительность файловой системы за счёт механизма Plan 9 (9P), обеспечивающего обмен данными между файловой системой Windows и Linux.
В 2021 году Microsoft выпустила WSL как отдельный пакет, устанавливаемый из Microsoft Store, что упростило обновление подсистемы независимо от версии Windows. В 2022 году появилась возможность запуска GUI-приложений Linux (WSLg) — графических приложений, работающих через X11/Wayland-прокси.
¶Устройство и принцип работы
¶WSL 1
WSL 1 реализована как пользовательский режим (user mode) внутри Windows. Linux-бинарные файлы выполняются в среде, где системные вызовы перехватываются и транслируются в эквивалентные вызовы Windows NT. Ограничениями WSL 1 являются:
- отсутствие поддержки системных вызовов, не имеющих аналогов в Windows (например, некоторые сетевые вызовы);
- невозможность запуска приложений, требующих полноценного ядра Linux;
- ограниченная совместимость с файловыми системами Linux.
¶WSL 2
WSL 2 использует лёгкую виртуальную машину с настоящим ядром Linux (версия ядра публикуется Microsoft и обновляется через Windows Update). Архитектура включает:
- Виртуальную машину Hyper-V с ядром Linux и минимальным набором служб;
- Слой интеграции с Windows (init, systemd, драйверы 9P), обеспечивающий доступ к файлам Windows из Linux и наоборот;
- Сеть с NAT — по умолчанию Linux-система получает IP-адрес в изолированной сети, доступный из Windows, но не из внешней сети (для внешнего доступа используются порт-форвардинг или режим mirrored networking, доступный в более новых сборках).
Файловая система Linux (ext4) хранится в виртуальном диске (VHDX), что обеспечивает высокую производительность операций с файлами внутри Linux. Доступ к файлам Windows (C:\ и др.) возможен через путь /mnt/c/, но операции с файлами на «чужой» файловой системе медленнее из-за межсистемного обмена.
¶Дистрибутивы и установка
WSL поддерживает официальные дистрибутивы Linux, доступные в Microsoft Store: Ubuntu, Debian, openSUSE Leap, SUSE Linux Enterprise Server, Kali Linux, Oracle Linux и Fedora (с недавних пор). Установка выполняется командой wsl --install, которая по умолчанию устанавливает Ubuntu и включает необходимые компоненты Windows.
Пользователь может зарегистрировать собственный дистрибутив, импортировав файл системы (tar-архив) или создав его из корневого файлового образа. Поддерживается также запуск нескольких дистрибутивов одновременно и назначение одного из них по умолчанию.
¶Применение
Основные сценарии использования WSL:
- Разработка на Linux — запуск инструментов сборки (gcc, make, cmake), пакетных менеджеров (apt, yum), интерпретаторов (Python, Node.js, Ruby) и сред разработки, ориентированных на Linux.
- Контейнеризация — Docker Desktop для Windows использует WSL 2 как бэкенд, что обеспечивает высокую производительность контейнеров по сравнению с виртуальной машиной на Hyper-V.
- CI/CD и DevOps — тестирование скриптов и конфигураций в Linux-среде непосредственно на рабочей машине.
- Обучение и эксперименты — изучение командной строки Linux без установки отдельной ОС.
- Сетевые инструменты — запуск утилит, недоступных в Windows (tcpdump, nmap и аналоги), хотя часть из них требует WSL 2 и дополнительной настройки сети.
¶Ограничения
Несмотря на широкие возможности, WSL имеет ряд ограничений:
- Производительность файловых операций между Windows и Linux ниже, чем внутри каждой из систем.
- Подсистема не предназначена для запуска серверных нагрузок в продакшене — для этого рекомендуются полноценные виртуальные машины или облако.
- WSL 2 требует включённой виртуализации (Hyper-V), что исключает работу на старом оборудовании или в виртуальных машинах без поддержки вложенной виртуализации.
- Некоторые системные вызовы Linux в WSL 2 всё же ограничены или реализованы с упрощениями.
¶Сравнение WSL 1 и WSL 2
| Параметр | WSL 1 | WSL 2 |
|---|---|---|
| Реализация | Трансляция системных вызовов | Виртуальная машина с ядром Linux |
| Поддержка Docker | Нет | Да |
| systemd | Нет | Да (с настройкой) |
| Производительность файловой системы Linux | Высокая | Высокая (внутри Linux) |
| Производительность файловой системы Windows из Linux | Высокая | Ниже (через 9P) |
| Использование памяти | Низкое | Зависит от нагрузки |
| Сетевые возможности | Ограниченные | Полные (в пределах VM) |
¶См. также
- Hyper-V
- Docker Desktop
- Windows Terminal
- Виртуализация
¶Исторические факты
- WSL была названа одной из ключевых разработок Microsoft в области Linux-совместимости; генеральный директор Microsoft Сатья Наделла в 2016 году назвал её «любовью к Linux».
- В 2020 году Microsoft приобрела компанию NiXPS, а также активно сотрудничала с сообществом Linux-разработчиков для улучшения WSL.
- В 2023 году Microsoft представила WSL для Windows Server 2025 и продолжила развитие сетевых возможностей (mirrored networking, DNS-туннелирование).
