Сравнение версий WSL

Узнайте больше о разных версиях WSL, в том числе о том, почему WSL 2 теперь используется по умолчанию, а также о конкретных сценариях или исключениях, которые могут гарантировать переключение установленного дистрибутива Linux на более раннюю архитектуру WSL 1.

Сравнение WSL 1 и WSL 2

В этом руководстве проводится сравнение WSL 1 и WSL 2, включая исключения для использования WSL 1, а не WSL 2. Основные различия между WSL 1 и WSL 2 — использование фактического ядра Linux внутри управляемой виртуальной машины, поддержка полной совместимости системных вызовов и производительность в операционных системах Linux и Windows. WSL 2 — это текущая версия по умолчанию при установке дистрибутива Linux и использует последнюю и максимальную технологию виртуализации для запуска ядра Linux в упрощенной виртуальной машине служебной программы. WSL2 запускает дистрибутивы Linux как изолированные контейнеры на управляемой виртуальной машине. Если дистрибутив работает в настоящее время под управлением WSL 1 и вы хотите обновить до WSL 2, ознакомьтесь с обновлением WSL 1 до WSL 2.

сравнение возможностей;

Компонент WSL 1 WSL 2
Интеграция Windows и Linux
Быстрый запуск
Небольшой объем занимаемых ресурсов по сравнению с традиционными Виртуальными машинами
Запуск с использованием текущих версий VMware и VirtualBox
Управляемая виртуальная машина
Полнофункциональное ядро Linux
Полная совместимость системных вызовов
Производительность в файловых системах ОС
системная поддержка
Поддержка протокола IPv6

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

Подсистема WSL 2 доступна только в Windows 11 или Windows 10 версии 1903, сборки 18362 или выше. Проверьте версию Windows, нажав Windows + R, введите winver, выберите ОК. (Или введите команду ver в командной строке Windows). Может потребоваться выполнить обновление до последней версии Windows. Для сборок меньше 14393 WSL вообще не поддерживается.

Дополнительные сведения о последних обновлениях WSL 2 см. в блоге командной строки Windows, включая поддержку Systemd, теперь доступна в обновлении WSL и WSL за сентябрь 2023 г. для получения дополнительных сведений о поддержке IPv6.

Примечание.

WSL 2 будет работать с VMware 15.5.5+ и хотя VirtualBox 6+ утверждает, что поддержка WSL по-прежнему имеет значительные проблемы, которые делают его неподдерживаемой. Дополнительные сведения см. в статье Вопросы и ответы.

Новые возможности в WSL 2

WSL 2 — это основная модернизированная версия базовой архитектуры, которая использует технологию виртуализации и ядро Linux для реализации новых возможностей. Основные приоритеты этого обновления — увеличение производительности файловой системы и добавление полной совместимости системных вызовов.

Архитектура WSL 2

Во время обычной работы виртуальная машина может замедляться при загрузке, изолироваться, потреблять много ресурсов и требовать время для управления. В подсистеме WSL 2 нет таких проблем.

WSL 2 предоставляет преимущества WSL 1, включая простую интеграцию между Windows и Linux, быструю загрузку, незначительное потребление ресурсов и не требует настройки виртуальной машины или управления ею. Хотя WSL 2 использует виртуальную машину, она будет управляемой и будет работать в фоновом режиме, предоставляя тот же пользовательский интерфейс, что и WSL 1.

Полнофункциональное ядро Linux

Ядро Linux в WSL 2 создается корпорацией Майкрософт из последней стабильной ветви на основе источника, доступного в kernel.org. Это ядро было специально настроено для WSL 2, оптимизированное для размера и производительности, чтобы обеспечить удивительный интерфейс Linux в Windows. Ядро будет обслуживаться обновлениями Windows. Это означает, что вы получите новейшие исправления безопасности и улучшения ядра без необходимости заниматься этим самостоятельно.

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

Дополнительные сведения см. в статье с заметками о выпуске ядра подсистемы Windows для Linux.

Повышенная производительность операций ввода-вывода файлов

Операции с интенсивным использованием файлов, такие как клон git, npm install, apt update, apt upgrade и многое другое заметно быстрее с WSL 2.

Фактическое увеличение скорости будет зависеть от того, какое приложение вы используете и как оно взаимодействует с файловой системой. Начальные версии WSL 2 выполняются до 20x быстрее по сравнению с WSL 1 при распаковке zippped tarball и около 2-5x быстрее при использовании клонирования git, npm install и cmake в различных проектах.

Полная совместимость системных вызовов

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

  • целый ряд новых приложений, которые можно запускать внутри WSL, например Docker и другие;

  • все обновления ядра Linux немедленно готовы к использованию. (Вам не нужно ждать, пока специалисты WSL реализуют обновления и добавят изменения).

Исключения для использования WSL 1 вместо WSL 2

Рекомендуется использовать WSL 2, так как он обеспечивает более высокую производительность и полную совместимость системных вызовов. Однако существует несколько отдельных сценариев, в которых использовать WSL 1 может оказаться более предпочтительным. Рекомендуем использовать WSL 1, если:

  • Файлы проекта должны храниться в файловой системе Windows. WSL 1 обеспечивает более быстрый доступ к файлам, подключенным из Windows.
    • Если вы будете использовать дистрибутив Linux WSL для доступа к файлам проекта в файловой системе Windows, и эти файлы не могут храниться в файловой системе Linux, вы получите более высокую производительность в файловых системах ОС, используя WSL 1.
  • Проект, для которого требуется перекрестная компиляция с использованием средств Windows и Linux на одних и тех же файлах.
    • Операции с файлами в операционных системах Windows и Linux выполняются быстрее в WSL 1, чем на WSL 2. Поэтому если вы используете приложения Windows для доступа к файлам Linux, в настоящее время вы получите более высокую производительность при использовании WSL 1.
  • Вашему проекту требуется доступ к последовательному порту или USB-устройству. Однако сейчас USB-устройства поддерживаются в WSL 2 посредством проекта USBIPD-WIN. Инструкции по настройке см. в статье Подключение USB-устройств.
  • WSL 2 не поддерживает доступ к последовательным портам. Дополнительные сведения см. в статье Вопросы и ответы или в проблеме в репозитории GitHub, посвященной поддержке последовательных портов.
  • У вас есть строгие требования к памяти
    • Использование памяти WSL 2 масштабируется по мере использования. Когда процесс освобождает память, она автоматически становится доступной в Windows. Но сейчас WSL 2 не освобождает кэшированные страницы в памяти, делая их доступными в Windows, пока не завершится работа экземпляра WSL. При наличии длительных сеансов WSL или при обращении к очень большому объему файлов этот кэш может занимать память в Windows. Мы отслеживаем работу по улучшению этого интерфейса в репозитории WSL GitHub 4166.
  • Для тех, кто использует VirtualBox, обязательно используйте последнюю версию VirtualBox и WSL 2. См. связанные вопросы и ответы.
  • Если вы используете распределение Linux для получения IP-адреса в той же сети, что и хост-компьютер, вам может потребоваться настроить обходное решение для запуска WSL 2. WSL 2 работает как виртуальная машина Hyper-v. Это изменение от мостового сетевого адаптера, используемого в WSL 1, что означает, что WSL 2 использует службу преобразования сетевых адресов (NAT) для своей виртуальной сети, а не переходить к сетевой карте узла( сетевой адаптер), что приведет к уникальному IP-адресу, который изменится при перезапуске. Дополнительные сведения о проблеме и обходном решении, перенаправляющем порты протокола TCP служб WSL 2 в операционную систему узла, см. в статье о проблеме репозитория GitHub WSL 4150, режим моста NIC (обходной путь для протокола TCP).

Примечание.

Попробуйте использовать удаленное расширение WSL VS Code, чтобы хранить файлы проекта в файловой системе Linux, используя средства командной строки Linux. Также с помощью VS Code в Windows можно создавать, редактировать, отлаживать или запускать проекты в браузере без снижения производительности, связанной с работой в файловых системах Linux и Windows. Подробнее.

WSL в Microsoft Store

WSL поднял функциональные возможности обновления из образа ОС Windows в пакет, доступный через Microsoft Store. Это означает более быстрые обновления и обслуживание, как только они будут доступны, а не ждать обновления операционной системы Windows.

WSL изначально был включен в операционную систему Windows как необязательный компонент, который должен быть включен для установки дистрибутива Linux. WSL в Магазине имеет тот же интерфейс пользователя и является тем же продуктом, но получает обновления и обслуживание в виде пакета магазина, а не всего обновления ОС. Начиная с Windows версии 19044 или более поздней, выполнение wsl.exe --install команды установит обновление обслуживания WSL из Microsoft Store. (См. запись блога об объявлении об этом обновлении). Если вы уже используете WSL, вы можете обновить, чтобы убедиться, что вы получаете последние функции WSL и обслуживание из хранилища, выполнив команду wsl.exe --update.