При запуске Linux-окружения в Windows пользователь сталкивается с выбором между двумя подсистемами — WSL1 и WSL2, и неверный выбор напрямую влияет на скорость сборки проектов, работу Docker и совместимость с сетевыми инструментами. Разница между ними принципиальна: первая транслирует системные вызовы Linux в вызовы Windows, вторая использует полноценное ядро Linux внутри лёгкой виртуальной машины.

Однозначного ответа «какая подсистема лучше» не существует — выбор зависит от задач. Для веб-разработки и контейнеров обычно выигрывает WSL2, а для сценариев, где нужен быстрый доступ к файлам Windows из Linux-окружения, иногда удобнее WSL1. Ниже разберём критерии выбора, настройку и типичные ошибки.

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

WSL1 — это слой совместимости: ядра Linux как такового нет, а вызовы транслируются в Windows-окружение. За счёт этого подсистема запускается почти мгновенно и не потребляет заметных ресурсов в простое.

WSL2 работает иначе. Внутри используется настоящее ядро Linux, запущенное в служебной виртуальной машине на базе Hyper-V. Это даёт полную совместимость системных вызовов, что критично для Docker, systemd-сервисов и низкоуровневых сетевых утилит.

  • 🚀 Скорость работы с файловой системой Linux выше у WSL2
  • 📁 Доступ к файлам Windows (/mnt/c) быстрее у WSL1
  • 🐳 Поддержка Docker и полной совместимости — только у WSL2
  • 💾 Потребление памяти ниже у WSL1

Когда какую подсистему выбрать

Если вам нужно собирать проекты, запускать контейнеры или работать с инструментами вроде iptables — выбирайте WSL2. Полное ядро устраняет целый класс ошибок совместимости, которые в WSL1 проявляются как странные сбои сетевых утилит и отказ запуска отдельных демонов.

Обратная ситуация — скрипты, которые интенсивно читают и пишут файлы на диске Windows. В WSL2 обращение к /mnt/c идёт через сетевой протокол внутри виртуальной машины, и операции с тысячами мелких файлов могут заметно тормозить. Здесь WSL1 иногда оказывается быстрее.

📊 Какую подсистему вы используете для разработки?