При запуске 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 иногда оказывается быстрее.
📊 Какую подсистему вы используете для разработки?