WSL (Windows Subsystem for Linux) - подсистема для запуска нативных Linux-приложений прямо в Windows. Без виртуальной машины, без двойной загрузки.

WSL1 - трансляция системных вызовов (быстро, но не 100% совместимо)
WSL2 - полноценное ядро Linux в лёгкой виртуализации (полная совместимость, чуть больше ресурсов)

💡 Используй WSL2. Почти без накладных расходов, но с полной поддержкой Docker, systemd и всех фич Linux.


Требования

  • ОС: Windows 10 (2004+, сборка 19041+) или Windows 11
  • Архитектура: x64 или ARM64
  • Права: Администратор (для установки)
  • Виртуализация: Включена в BIOS/UEFI (Hyper-V Platform)

Проверить виртуализацию:

systeminfo | findstr /I "Virtualization"
# Должно быть: "Гипервизор обнаружен" или "Virtualization Enabled"

Установка (один командой)

# Запусти PowerShell от имени Администратора
wsl --install

Это сделает всё:

  • ✅ Включит компоненты WSL и VirtualMachinePlatform
  • ✅ Скачает и установит Ubuntu (дистрибутив по умолчанию)
  • ✅ Настроит WSL2 как версию по умолчанию

Перезагрузи компьютер после выполнения.


Установка вручную (если --install не работает)

# 1. Включить компоненты
dism /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

# 2. Перезагрузиться
shutdown /r /t 0

# 3. Скачать и установить ядро WSL2
# https://aka.ms/wsl2kernel

# 4. Задать WSL2 по умолчанию
wsl --set-default-version 2

# 5. Установить дистрибутив из Microsoft Store
# Или через winget:
winget install Ubuntu.Ubuntu.24.04

Первый запуск

# После перезагрузки откроется терминал с установкой Linux
# Задай имя пользователя и пароль (не отображается при вводе - это нормально)

# Обновить пакеты (Ubuntu/Debian)
sudo apt update && sudo apt upgrade -y

# Установить базовые инструменты
sudo apt install -y git curl wget build-essential

Управление дистрибутивами

# Список установленных
wsl --list --verbose
# или кратко:
wsl -l -v

# Запустить конкретный дистрибутив
wsl -d Ubuntu-24.04
wsl -d Debian

# Остановить (выключить) дистрибутив
wsl --terminate Ubuntu-24.04

# Остановить все
wsl --shutdown

# Задать версию (1 или 2)
wsl --set-version Ubuntu-24.04 2

# Задать дистрибутив по умолчанию
wsl --set-default Ubuntu-24.04

# Экспорт / импорт
wsl --export Ubuntu-24.04 D:\backups\ubuntu.tar
wsl --import MyUbuntu D:\wsl\MyUbuntu D:\backups\ubuntu.tar --version 2

# Удалить дистрибутив (все данные будут потеряны!)
wsl --unregister Ubuntu-24.04

Доступ к файлам

Из Linux → в Windows

# Windows-диски смонтированы в /mnt/
ls /mnt/c/Users/ponfertato/Documents

# Открыть проводник в текущей папке
explorer.exe .

Из Windows → в Linux

# Открыть домашнюю папку пользователя в проводнике
\\wsl$\Ubuntu-24.04\home\kirill

# Или из терминала:
explorer.exe \\wsl$\Ubuntu-24.04\home\kirill

⚠️ Не редактируй Linux-файлы из Windows-приложений напрямую (через \\wsl$). Это может повредить метаданные. Используй Linux-инструменты внутри WSL.


Сеть и порты

# Узнать свой IP в WSL
ip addr show eth0 | grep inet

# Windows и WSL используют общую сеть (localhost пробрасывается)
# Запусти веб-сервер в WSL:
python3 -m http.server 8000

# Доступен из Windows по:
# http://localhost:8000

Если порты не пробрасываются:

# Проверить, включена ли настройка
wsl --status

# Включить автоматический проброс (если отключён)
# В %USERPROFILE%\.wslconfig:
[wsl2]
networkingMode=mirrored
localhostForwarding=true

Интеграция с терминалом и редактором

Использовать Windows Terminal

# Установить из Microsoft Store или:
winget install Microsoft.WindowsTerminal

# WSL-профили добавляются автоматически
# Переключайся между оболочками: Ctrl+Shift+1/2/3...

VS Code + WSL

# Внутри WSL:
code .

# Откроет VS Code на Windows с подключением к WSL-окружению
# Установи расширение "Remote - WSL" если потребуется

Доступ к Windows-программам из WSL

# Запустить Notepad из Linux:
notepad.exe /mnt/c/Users/ponfertato/notes.txt

# Запустить PowerShell:
powershell.exe Get-Process

Docker в WSL2

# Установить Docker Desktop для Windows
winget install Docker.DockerDesktop

# В настройках Docker Desktop:
# Settings → Resources → WSL Integration → включить твой дистрибутив

# Проверить в WSL:
docker run hello-world

💡 Docker работает нативно в WSL2 - без дополнительной настройки внутри Linux.


systemd в WSL (для сервисов)

# Включить systemd (WSL 0.67.6+)
# Создать/отредактировать: /etc/wsl.conf
[boot]
systemd=true

# Применить:
# Из PowerShell:
wsl --terminate Ubuntu-24.04
wsl -d Ubuntu-24.04

# Проверить:
systemctl status

Теперь работают: systemctl start nginx, enable docker и другие сервисы.


Полезные настройки (.wslconfig)

Файл: %USERPROFILE%\.wslconfig (создай, если нет)

[wsl2]
# Память: 4 ГБ (или 50% от ОЗУ)
memory=4GB
# Процессоры: 4 ядра
processors=4
# Своп: 2 ГБ
swap=2GB
# Диск: динамический, до 256 ГБ
diskSize=256GB
# Сеть: режим зеркалирования (лучшая совместимость)
networkingMode=mirrored
# Автозапуск: выключить
autoShutdown=true
# Таймаут бездействия: 10 минут
idleTimeout=600000

Применить: wsl --shutdown, затем запустить дистрибутив снова.


Частые проблемы

# WSL не запускается, ошибка 0x80370102
 Включи виртуализацию в BIOS
 Проверь: "Панель управления"  "Программы"  "Включение компонентов Windows"  Hyper-V Platform

# Ошибка "Виртуальная машина не запустилась"
 Запусти от администратора:
  bcdedit /set hypervisorlaunchtype auto
 Перезагрузись

# Медленный доступ к файлам в /mnt/c
 Храни проекты внутри Linux-файловой системы: ~/projects, а не в /mnt/c/...
 Используй VS Code Remote WSL для редактирования

# Не работает sudo / пароль не принимается
 Сброс пароля:
  # В PowerShell:
  wsl -d Ubuntu-24.04 -u root
  # Внутри WSL:
  passwd kirill

# Конфликт портов с Windows
 Проверь, что не занято:
  netsh interface ipv4 show excludedportrange protocol=tcp
 Или смени порт в приложении

Бэкап и миграция

# Экспорт дистрибутива
wsl --export Ubuntu-24.04 D:\wsl-backups\ubuntu-$(Get-Date -Format 'yyyy-MM-dd').tar

# Импорт на другом ПК
wsl --import Ubuntu-24.04 D:\WSL\Ubuntu D:\wsl-backups\ubuntu-2026-03-16.tar --version 2

# Настроить пользователя по умолчанию после импорта
# Создать: /etc/wsl.conf в импортированном дистрибутиве
[user]
default=kirill

Ссылки