Что такое WSL и в чем разница между WSL 1 и WSL 2

«Что такое WSL и в чем разница между WSL 1 и WSL 2» — вопрос из категории Операционные системы, который задают на 10% собеседований Python Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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

Существуют две основные версии с принципиально разной архитектурой:

WSL 1: Слой трансляции

  • Как работает: Транслирует системные вызовы (syscalls) Linux в вызовы ядра Windows NT. WSL 1 не содержит ядра Linux.
  • Преимущества:
    • Высокая скорость доступа к файлам между файловыми системами Windows (NTFS) и Linux.
    • Меньшее потребление ресурсов (памяти, CPU).
  • Недостатки:
    • Неполная совместимость системных вызовов. Некоторые приложения, требующие специфических функций ядра Linux (например, Docker), не работают или работают нестабильно.
    • Более низкая производительность операций с файлами внутри файловой системы Linux (ext4).

WSL 2: Легковесная виртуализация

  • Как работает: Использует технологию Hyper-V для запуска полноценного ядра Linux в легковесной виртуальной машине (VM).
  • Преимущества:
    • Полная совместимость системных вызовов, что позволяет запускать Docker и любые другие Linux-приложения.
    • Значительно более высокая производительность файловых операций внутри Linux.
  • Недостатки:
    • Более медленный доступ к файлам через границу ОС (например, из Linux к файлам на диске C:).
    • Потребляет больше оперативной памяти из-за работы VM.

Пример использования в PowerShell/CMD:

# Установить дистрибутив Ubuntu (по умолчанию используется WSL 2)
wsl --install -d Ubuntu

# Посмотреть статус и версию установленных дистрибутивов
wsl --list --verbose

# Запустить команду в Linux из Windows
wsl grep "root" /etc/passwd

Вывод: WSL 2 является стандартом де-факто для разработки благодаря полной совместимости, в то время как WSL 1 может быть полезен в сценариях, требующих тесной интеграции файловых систем.