WSL: подсистема Linux для Windows — как начать

wsl: подсистема linux для windows -

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 не запускается — первым делом проверьте этот параметр.