WSL (Windows Subsystem for Linux) позволяет запускать полноценный Linux прямо внутри Windows без виртуальных машин и двойной загрузки, одной командой wsl —install вы получаете Ubuntu с доступом к apt, bash, Python, Node.js, Docker и всему Linux-стеку прямо из Windows Terminal.
Linux на винде — зачем это вообще
Разработчики на Windows годами страдали. Пишешь код на Windows, деплоишь на Linux-сервер. Скрипт работает локально — падает на сервере. Пути к файлам разные. Переводы строк разные. Права доступа другие. Баш-скрипты вообще не запускаются.
Варианты были: поставить VirtualBox с Ubuntu (тормозит, жрёт ресурсы), поставить dual boot (перезагружаться каждый раз), купить Mac (дорого). Или мучиться с Cygwin, MinGW, Git Bash — костылями, которые эмулируют Linux-окружение на Windows, но делают это через боль.
Потом Microsoft сделала WSL. И вот тут всё изменилось.
Мой товарищ Сергей на своём ThinkPad X1 Carbon работает фулстек-разработчиком. Rails-бэкенд на Ruby, React-фронтенд на Node.js, PostgreSQL, Redis. Раньше он держал Ubuntu в VirtualBox, выделял ей 8 из 16 ГБ оперативки, и всё равно тормозило. Перешёл на WSL 2 — говорит, как будто новый комп купил. Всё летает. VS Code подключается к WSL напрямую, файлы редактируются без задержек.
WSL 1 vs WSL 2
Есть две версии. WSL 1 транслировала Linux-вызовы в Windows-вызовы. Работало, но медленно и не со всем. Docker не запускался, некоторые программы глючили.
WSL 2 использует настоящее ядро Linux в легковесной виртуальной машине. Полная совместимость с Linux. Docker работает. Производительность файловой системы в 2-5 раз выше. По факту, WSL 2 — это полноценный Linux.
Используйте WSL 2. Точка. WSL 1 имеет смысл только в очень специфических случаях (например, когда нужен быстрый доступ к файлам на NTFS-разделе).
Установка WSL
В Windows 10 (версия 2004+) и Windows 11 установка стала тривиальной.
Открываете PowerShell или Windows Terminal от имени администратора:
# Одна команда - и всё ставится
wsl --installЭта команда делает всё:
- Включает компонент WSL
- Включает платформу виртуальной машины
- Скачивает ядро Linux
- Устанавливает Ubuntu по умолчанию
- Настраивает WSL 2 как версию по умолчанию
После установки перезагрузите комп. При первом запуске Ubuntu попросит создать пользователя и пароль. Этот пароль будете использовать для sudo.
Кстати, Ubuntu — не единственный вариант. Можно выбрать другой дистрибутив:
# Список доступных дистрибутивов
wsl --list --online
# Установить конкретный дистрибутив
wsl --install -d Debian
wsl --install -d openSUSE-Leap-15.6
wsl --install -d FedoraМожно установить несколько дистрибутивов одновременно и переключаться между ними. Каждый живёт в своём контейнере.
Первые шаги в WSL
Запустите Ubuntu из меню «Пуск» или наберите в терминале:
# Запуск дистрибутива по умолчанию
wsl
# Или конкретного дистрибутива
wsl -d UbuntuВы внутри Linux. Полноценного. Со всеми командами.
# Обновляем пакеты (первое что надо сделать)
sudo apt update && sudo apt upgrade -y
# Ставим нужные инструменты
sudo apt install -y git curl wget build-essential
# Проверяем версию ядра Linux
uname -r
# Проверяем свободное место
df -hЗнаете что? Внутри WSL вы можете делать абсолютно всё, что делаете на обычном Linux-сервере. Ставить пакеты через apt, компилировать из исходников, запускать серверы, писать баш-скрипты. Ограничений практически нет.
Интеграция с Windows
Вот в чём прикол WSL — он не изолирован от Windows. Есть двусторонняя интеграция.
Из Linux видны диски Windows:
# Диск C доступен тут
ls /mnt/c/
# Можно открыть файл с рабочего стола Windows
cat /mnt/c/Users/Username/Desktop/file.txtИз Windows видна файловая система Linux:
# В Проводнике наберите в адресной строке
\wsl$UbuntuhomeusernameА ещё из Linux можно запускать Windows-программы:
# Открыть Проводник из Linux
explorer.exe .
# Открыть файл в Блокноте
notepad.exe myfile.txt
# Запустить любую Windows-программу
cmd.exe /c "echo Hello from Windows"Работает и наоборот. Из PowerShell или CMD можно запускать Linux-команды:
# Из PowerShell вызываем Linux-команду
wsl grep "error" /var/log/syslog
# Пайпы между Windows и Linux работают
dir | wsl grep "txt"Если честно, эта интеграция — главное преимущество WSL перед виртуальной машиной. Вы не переключаетесь между системами. Вы работаете в обеих одновременно.
VS Code и WSL
Для разработчиков связка VS Code + WSL — это золото.
Установите расширение «WSL» (ранее «Remote — WSL») в VS Code. После этого:
# Из терминала WSL откройте проект в VS Code
cd ~/my-project
code .VS Code откроется на Windows, но будет работать с файлами внутри Linux. Терминал в VS Code — это баш из WSL. Расширения для Python, Node.js, Go работают внутри Linux. Отладка тоже.
Моя знакомая Настя, бэкенд-разработчик на Django, перешла на WSL + VS Code полгода назад. На своём ASUS ZenBook 14 она теперь запускает Django-сервер в WSL, редактирует код в VS Code на Windows, и браузер открывает localhost прямо из Windows. Три мира — одна машина.
Разработка: Node.js, Python, Ruby, Go
WSL — это полноценный Linux, поэтому ставить языки программирования нужно через Linux-пакетный менеджер, а не через Windows-установщики.
# Node.js через nvm (рекомендуемый способ)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.0/install.sh | bash
source ~/.bashrc
nvm install --lts
# Python уже предустановлен, но можно обновить
sudo apt install python3 python3-pip python3-venv
# Ruby через rbenv
sudo apt install rbenv
rbenv install 3.3.0
# Go
sudo apt install golang-goТут такое дело: не ставьте одни и те же инструменты и на Windows, и в WSL. Будет путаница с версиями и путями. Выберите одну среду для разработки (лучше WSL) и работайте в ней.
Полезные настройки
Настройки WSL хранятся в файле .wslconfig в домашней папке Windows:
# Файл C:UsersUsername.wslconfig
[wsl2]
memory=8GB
processors=4
swap=4GB
localhostForwarding=trueОграничьте память, иначе WSL 2 съест всю доступную оперативку (такая у него особенность). На машине с 16 ГБ давайте WSL максимум 8 ГБ.
А ещё полезно:
# Завершить все WSL-процессы (освободить память)
wsl --shutdown
# Проверить какие дистрибутивы запущены
wsl --list --verbose
# Экспортировать дистрибутив (бэкап)
wsl --export Ubuntu ubuntu-backup.tar
# Импортировать дистрибутив (восстановление)
wsl --import Ubuntu C:WSLUbuntu ubuntu-backup.tarЧастые проблемы
«WSL 2 requires an update to its kernel component» — обновите ядро:
wsl --updateМедленная файловая система. Если работаете с файлами на /mnt/c/ (диске Windows), производительность будет низкой. Храните проекты в ~/projects/ внутри Linux. Разница в скорости может быть 10-кратной. Серьёзно.
DNS не работает. Иногда WSL не может резолвить доменные имена. Быстрый фикс:
# Прописываем DNS вручную
echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.confНу и само собой, для WSL 2 нужна лицензионная Windows 10/11. На кривых сборках WSL работает нестабильно — то ядро не обновляется, то виртуализация глючит. Нормальный ключ Windows можно взять в keytrust24.store, активируется за минуту, и WSL заведётся без проблем.
WSL vs виртуальная машина vs dual boot
WSL — лучший вариант для разработки. Быстрый, интегрированный с Windows, не требует перезагрузки. Минус — нет графического интерфейса (ну, почти — WSLg поддерживает GUI-приложения, но это экспериментально).
Виртуальная машина — для случаев, когда нужна полная изоляция или полноценный Linux-десктоп. Тяжелее, медленнее, но универсальнее.
Dual boot — для тех, кому нужна максимальная производительность Linux (геймеры на Linux, работа с GPU). Неудобно переключаться.
Для 90% разработчиков WSL 2 — правильный выбор. Ставьте и не думайте.
Системные требования и советы по железу
WSL 2 работает на любом компьютере с поддержкой виртуализации. Но комфорт зависит от железа.
Минимум 8 ГБ оперативки. На 4 ГБ WSL 2 запустится, но будет страдать. 16 ГБ — идеально для большинства задач. Если вы планируете гонять Docker в WSL (а это самый популярный сценарий), 16 ГБ — это уже не рекомендация, а необходимость.
SSD обязателен. WSL 2 хранит свою файловую систему в виртуальном диске, и скорость операций с файлами напрямую зависит от скорости накопителя. На HDD всё будет работать, но медленно. Мой коллега Дмитрий, DevOps-инженер на своём старом ThinkPad T440 с HDD, жаловался, что npm install в WSL занимает вечность. Поставил SSD за 3 тысячи рублей — и время установки упало с 5 минут до 30 секунд.
Ну и процессор: любой современный Intel или AMD подойдёт. Виртуализация (VT-x или AMD-V) должна быть включена в BIOS. Если WSL не запускается — первым делом проверьте этот параметр.



