← Назад к вопросам

Как работает WSL?

1.6 Junior🔥 151 комментариев
#DevOps и инфраструктура

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI22 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Как работает WSL (Windows Subsystem for Linux)

WSL — это подсистема Windows для Linux, позволяющая запускать среду Linux непосредственно на Windows. Это революционная технология, которая устраняет необходимость в виртуальных машинах для разработки.

1. Архитектура WSL

WSL работает на двух уровнях:

WSL 1 (устарело)

  • Трансляция системных вызовов: вызовы Linux переводятся в Windows API
  • Не полная совместимость: некоторые системные вызовы не поддерживаются
  • Быстрый старт: легче, чем виртуальная машина

WSL 2 (текущий стандарт)

Windows Host
    ↓
Hyper-V
    ↓
Lightweight VM (Linux Kernel)
    ↓
Linux userspace

WSL 2 использует:

  • Настоящее ядро Linux (4.19, 5.10+)
  • Hyper-V для виртуализации
  • Полная совместимость с Linux
  • Лучшая производительность файловой системы

2. Установка и настройка

# Проверка версии Windows (нужна 19041+)
winver

# Установка WSL 2 (PowerShell с правами админа)
wsl --install
wsl --install -d Ubuntu-22.04

# Установка конкретного дистрибутива
wsl --list --online  # Список доступных
wsl --install -d Debian

# Проверка версии WSL
wsl --version

# Установка WSL 2 по умолчанию
wsl --set-default-version 2
wsl --set-version Ubuntu-22.04 2

3. Работа с файловой системой

# Доступ к Windows файлам из WSL
cd /mnt/c/Users/YourUsername/Documents
ls -la

# Доступ к WSL файлам из Windows
# В проводнике: \\\wsl.localhost\Ubuntu\home\username

# Быстрое открытие WSL папки в проводнике
wslpath -w .

# Пути до файлов
wslpath -u 'C:\\Users\\User'  # Windows → WSL
wslpath -w '/home/user'        # WSL → Windows

4. Сетевые подключения

# WSL 2 имеет отдельный IP адрес в виртуальной сети
ip addr show eth0

# Доступ к Windows localhost из WSL 2
# В WSL используйте: $(grep -m 1 nameserver /etc/resolv.conf | awk '{print $2}')
WINDOWS_IP=$(grep -m 1 nameserver /etc/resolv.conf | awk '{print $2}')
curl http://$WINDOWS_IP:3000  # Доступ к приложению на Windows

# Доступ к WSL сервисам из Windows
# Используйте IP адрес WSL:
WSL_IP=$(wsl hostname -I)
curl http://$WSL_IP:8000

5. Установка Python и разработка

# Установка Python в WSL
sudo apt update
sudo apt install python3 python3-pip python3-venv

# Проверка версии
python3 --version

# Создание виртуального окружения
python3 -m venv myenv
source myenv/bin/activate

# Установка зависимостей
pip install django flask celery redis

# Запуск Django приложения
python manage.py runserver 0.0.0.0:8000

6. Docker в WSL 2

# Docker отлично работает в WSL 2
# Установка Docker Desktop с WSL 2 backend

# Проверка в WSL
docker --version
docker run hello-world

# Запуск контейнера с Python
docker run -it python:3.11 bash
python3 -c "print('Hello from container')"

7. Интеграция с IDE

# VS Code с WSL расширением
# 1. Установите Remote - WSL расширение
# 2. Откройте папку в WSL через VS Code
# Команда: code .

# PyCharm
# Settings → Project → Python Interpreter
# Выберите интерпретатор из WSL
# /home/user/myenv/bin/python

8. Производительность

# Тестирование скорости
time dd if=/dev/zero of=test.img bs=1M count=100

# Оптимизация
# 1. Используйте файлы WSL на диске /home, не /mnt/c
# 2. Отключите Windows Defender для папки WSL
# 3. Используйте SSD диск
# 4. Выделите достаточно оперативной памяти в .wslconfig

9. Конфигурация WSL

# Файл ~/.wslconfig (при использовании WSL 2)
[interop]
enabled=true
appendWindowsPath=true

[user]
default=username

[boot]
systemd=true

10. Полезные команды

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

# Завершение WSL машины
wsl --shutdown

# Запуск команды в WSL из Windows PowerShell
wsl ls -la

# Запуск WSL как определённый пользователь
wsl --user root

# Экспорт и импорт дистрибутива
wsl --export Ubuntu-22.04 backup.tar.gz
wsl --import Ubuntu-22.04-restore . backup.tar.gz

# Удаление дистрибутива
wsl --unregister Ubuntu-22.04

Best Practices для разработчиков

1. Используйте WSL 2: забудьте о WSL 1, переходите на WSL 2 2. Храните код в WSL: файловая система WSL работает быстрее 3. Docker Desktop: интегрируется идеально с WSL 2 4. VS Code Remote: разрабатывайте прямо в WSL через VS Code 5. systemd: включите systemd для полноценной Linux среды 6. Резервные копии: регулярно экспортируйте дистрибутив 7. Производительность: следите за использованием памяти в .wslconfig