WSL2: что это такое и как работает подсистема Linux в Windows

Разработчик запускает команду docker в Windows, а контейнер стартует внутри настоящего ядра Linux — именно так работает WSL2, и именно эта особенность отличает его от обычной эмуляции терминала. WSL2 (Windows Subsystem for Linux 2) — это вторая версия подсистемы Windows для Linux, которая позволяет запускать полноценные дистрибутивы Linux прямо внутри Windows без двойной загрузки и без классической виртуальной машины с ручной настройкой.

Технология разработана Microsoft и встроена в современные версии Windows 10 и Windows 11. В отличие от первой версии WSL, которая лишь транслировала системные вызовы Linux в вызовы Windows, вторая версия использует настоящее ядро Linux, работающее внутри легковесной виртуальной машины на базе Hyper-V. Это даёт полную совместимость с Linux-приложениями и заметно более высокую производительность при работе с файловой системой.

Как устроена WSL2 изнутри

В основе WSL2 лежит легковесная виртуальная машина, которая запускается средствами гипервизора Hyper-V. Внутри неё работает специально оптимизированное ядро Linux, которое Microsoft собирает и обновляет через стандартный механизм Windows Update. Пользователю не нужно ничего компилировать или настраивать вручную — ядро обновляется автоматически вместе с системой.

Дистрибутивы Linux (Ubuntu, Debian, Kali и другие из Microsoft Store) устанавливаются поверх этой виртуальной среды. Каждый дистрибутив получает собственное изолированное окружение, но все они используют общее ядро. Благодаря этому запуск занимает секунды, а потребление оперативной памяти динамически подстраивается под нагрузку.

Обмен файлами между Windows и Linux реализован через сетевой протокол: файлы Windows доступны в Linux по пути /mnt/c, а файловая система Linux видна в Проводнике Windows через адрес \\wsl$. Это удобно, но есть нюанс с производительностью, о котором поговорим ниже.

Чем WSL2 отличается от WSL1

Первая версия подсистемы работала иначе: она переводила системные вызовы Linux в эквивалентные вызовы ядра Windows. Такой подход не требовал виртуализации, но имел серьёзные ограничения — часть программ просто не запускалась, а поддержка Docker отсутствовала. WSL2 решает эти проблемы за счёт настоящего ядра.

КритерийWSL1WSL2
Ядро LinuxНет, трансляция вызововНастоящее ядро в ВМ
Совместимость приложенийЧастичнаяПолная
Поддержка DockerНетДа
Скорость работы с файлами LinuxНизкаяВысокая
Скорость доступа к файлам WindowsВысокаяНиже, чем в WSL1

Парадокс в том, что WSL1 до сих пор может быть быстрее в одном сценарии — при интенсивной работе с файлами, расположенными на стороне Windows. Если проект лежит в C:\Projects, а вы обращаетесь к нему из Linux через /mnt/c, вторая версия будет медленнее из-за накладных расходов на сетевой протокол. Поэтому рекомендуется хранить проекты внутри файловой системы Linux.

📊 Для каких задач вы используете (или планируете использовать) WSL2?
Веб-разработка и Docker
Изучение Linux
Запуск скриптов и утилит
Только изучаю вопрос

Для чего используется WSL2 на практике

Основная аудитория технологии — разработчики, которым нужны Linux-инструменты без отказа от Windows. Но круг применения шире.

  • 🐳 Запуск Docker-контейнеров — Docker Desktop для Windows использует WSL2 как основной бэкенд
  • 🛠️ Веб-разработка — Node.js, Python, Ruby и другие стеки работают в «родной» среде
  • 📦 Сборка кроссплатформенных проектов — компиляция и тестирование под Linux без отдельного сервера
  • 🔐 Работа с CLI-инструментами — ssh, grep, awk, curl и весь арсенал консольных утилит
  • 🎓 Изучение Linux — безопасная песочница, которую легко удалить и переустановить

Отдельно стоит упомянуть интеграцию с Visual Studio Code: расширение Remote — WSL позволяет редактировать код в Windows, а выполнять его внутри Linux-окружения. Серверная часть редактора запускается в дистрибутиве автоматически.

Можно ли запускать графические Linux-приложения?

Да, в Windows 11 и актуальных сборках Windows 10 доступна функция WSLg — она позволяет запускать Linux-приложения с графическим интерфейсом, включая окна, звук и аппаратное ускорение GPU. Приложение просто устанавливается внутри дистрибутива и появляется в меню «Пуск» Windows.

Как установить WSL2: пошаговая инструкция

Начиная с актуальных версий Windows 10 (сборка 2004 и новее) и в Windows 11 установка сводится к одной команде. Откройте PowerShell или Терминал Windows от имени администратора и выполните:

wsl --install

Команда автоматически включает необходимые компоненты (платформу виртуальной машины и подсистему Linux), скачивает ядро и устанавливает Ubuntu как дистрибутив по умолчанию. После завершения потребуется перезагрузка компьютера, а при первом запуске дистрибутива — создание имени пользователя и пароля для Linux.

☑️ Проверка перед установкой WSL2

Выполнено: 0 / 5

⚠️ Внимание: если виртуализация отключена на уровне BIOS/UEFI, WSL2 не запустится и выдаст ошибку. Название пункта включения зависит от производителя материнской платы — ищите параметры вроде Intel VT-x, SVM Mode или AMD-V в разделе настроек процессора. Точное расположение сверьте с документацией вашей платы или ноутбука.

Чтобы установить другой дистрибутив, сначала посмотрите список доступных:

wsl --list --online

Затем установите нужный, указав его имя:

wsl --install -d Debian

Типичные проблемы и их решения

Чаще всего пользователи сталкиваются с ошибкой о том, что виртуальная машина не может быть запущена. Возможная причина — отключённый компонент «Платформа виртуальной машины» или выключенная виртуализация в BIOS. Проверьте оба пункта до переустановки системы.

Вторая распространённая ситуация — WSL2 со временем начинает потреблять много оперативной памяти. Процесс vmmem в Диспетчере задач может занимать значительный объём, потому что Linux кэширует файловые операции и не спешит возвращать память Windows. Ограничить потребление можно через файл конфигурации .wslconfig в домашней папке пользователя Windows, задав параметры memory и processors.

[wsl2]

memory=4GB

processors=4

⚠️ Внимание: после изменения файла .wslconfig настройки применятся только после полного завершения работы подсистемы. Выполните wsl --shutdown в PowerShell и запустите дистрибутив заново — иначе лимиты не подействуют.

Третья категория проблем — сетевые. WSL2 получает собственный виртуальный сетевой адаптер с NAT, поэтому IP-адрес Linux-окружения отличается от адреса Windows. Возможная причина недоступности сервиса, запущенного внутри WSL, с других устройств в локальной сети — именно эта изоляция. Для доступа с самой машины обычно достаточно обращения к localhost, но проброс портов наружу требует дополнительной настройки.

Ограничения и особенности, о которых стоит знать

Несмотря на полную совместимость с ядром, WSL2 — не полная замена физической Linux-машины. Поддержка systemd появилась относительно недавно и включается вручную через файл /etc/wsl.conf внутри дистрибутива; в старых установках её может не быть по умолчанию. Часть низкоуровневых сценариев — например, прямой доступ к USB-устройствам — требует дополнительных инструментов вроде usbipd-win.

Также учитывайте, что файловая система дистрибутива хранится в виртуальном диске VHDX, который растёт автоматически, но сам не уменьшается после удаления файлов. Если диск разросся, его нужно сжимать вручную средствами Hyper-V или через diskpart — это одна из тех деталей, о которых узнают только тогда, когда на диске заканчивается место.

⚠️ Внимание: не редактируйте файлы Linux-окружения через путь \\wsl$ программами, которые могут повредить права доступа и метаданные. Для правки кода используйте редакторы с официальной поддержкой WSL, например VS Code с расширением Remote — WSL.

Часто задаваемые вопросы

Чем WSL2 отличается от обычной виртуальной машины VirtualBox или VMware?

WSL2 стартует за секунды, автоматически интегрируется с файловой системой и сетью Windows, не требует ручной настройки виртуального оборудования и динамически управляет памятью. Классическая ВМ даёт больше контроля и полную изоляцию, но требует больше ресурсов и настройки.

Работает ли WSL2 на Windows 10 Домашней?

Да. Хотя полноценный Hyper-V недоступен в домашней редакции, WSL2 использует отдельный компонент «Платформа виртуальной машины», который доступен и в Windows 10/11 Домашней.

Можно ли запускать Docker в WSL2 без Docker Desktop?

Да, Docker Engine можно установить непосредственно внутри дистрибутива Linux по стандартной инструкции для выбранного дистрибутива. Docker Desktop при этом не обязателен, хотя он упрощает интеграцию с Windows.

Как полностью удалить WSL2 с компьютера?

Сначала удалите дистрибутивы командой wsl --unregister ИмяДистрибутива, затем отключите компоненты «Подсистема Windows для Linux» и «Платформа виртуальной машины» в разделе «Компоненты Windows» панели управления и перезагрузите компьютер.

Почему WSL2 медленно работает с файлами на диске C:?

Доступ из Linux к файлам Windows идёт через сетевой протокол, что замедляет операции с большим количеством мелких файлов. Решение — хранить проекты внутри файловой системы Linux (например, в домашней папке ~/projects) и обращаться к ним из Windows через \\wsl$.