Ответ
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.
- Более медленный доступ к файлам через границу ОС (например, из Linux к файлам на диске
Пример использования в PowerShell/CMD:
# Установить дистрибутив Ubuntu (по умолчанию используется WSL 2)
wsl --install -d Ubuntu
# Посмотреть статус и версию установленных дистрибутивов
wsl --list --verbose
# Запустить команду в Linux из Windows
wsl grep "root" /etc/passwd
Вывод: WSL 2 является стандартом де-факто для разработки благодаря полной совместимости, в то время как WSL 1 может быть полезен в сценариях, требующих тесной интеграции файловых систем.