Подсистема Windows для Linux - Windows Subsystem for Linux

Подсистема Windows для Linux
Tux.svg
Ubuntu в Windows 10 - bash.png
Bash работает в Windows 10
Другие имена WSL
Разработчики) Microsoft
Первый выпуск 2 августа 2016 г . ; 5 лет назад ( 2016-08-02 )
Стабильный выпуск
WSL 2/12 июня 2019 г . ; 2 года назад ( 2019-06-12 )
Репозиторий github .com / Microsoft / WSL (только проблемы)
Операционная система Windows 10 , Windows Server 2019 , Windows 11
Предшественник Службы Windows для UNIX
Тип Уровень совместимости , виртуализация
Лицензия Подсистема: Фирменное коммерческое ПО ;
Ядро Linux: GNU GPLv2 (только) с некоторым кодом под совместимыми вариантами GPL или под разрешительными лицензиями, такими как BSD, MIT
Веб-сайт документы .microsoft .com / en-us / windows / wsl / Отредактируйте это в Викиданных

Подсистема Windows для Linux ( WSL ) - это уровень совместимости для запуска двоичных исполняемых файлов Linux (в формате ELF ) изначально в Windows 10 , Windows 11 и Windows Server 2019 .

В мае 2019 года был анонсирован WSL 2, в котором были внесены важные изменения, такие как настоящее ядро Linux , через подмножество функций Hyper-V . С июня 2019 года WSL 2 доступен клиентам Windows 10 через программу Windows Insider , включая домашнюю версию. По умолчанию WSL доступен не всем пользователям Windows 10. Его можно установить либо присоединившись к программе предварительной оценки Windows, либо вручную.

Обзор

Первый выпуск WSL предоставляет Linux -совместимого интерфейс ядра , разработанный Microsoft, не содержащее ядро Linux кода, который затем может запустить GNU пространство пользователя на нем, например, что в Ubuntu , OpenSUSE , SUSE Linux Enterprise Server , Debian и Kali Linux . Такое пользовательское пространство может содержать оболочку GNU Bash и командный язык с собственными инструментами командной строки GNU ( sed , awk и т. Д.), Интерпретаторами языков программирования ( Ruby , Python и т. Д.) И даже графическими приложениями (с использованием X11 сервер на стороне хоста).

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

Введение и доступность

Бета-версия WSL была представлена ​​в Windows 10 версии 1607 (юбилейное обновление) 2 августа 2016 года. Поддерживалась только UbuntuBash в качестве оболочки по умолчанию). Бета-версия WSL также называлась «Bash в Ubuntu в Windows» или «Bash в Windows».

WSL больше не был бета-версией Windows 10 версии 1709 (Fall Creators Update), выпущенной 17 октября 2017 года. Можно было установить несколько дистрибутивов Linux, которые были доступны для установки в Магазине Windows .

WSL доступен только в 64-битных версиях Windows 10 начиная с версии 1607. Он также доступен в Windows Server 2019.

6 мая 2019 года Microsoft анонсировала WSL 2, который включает полностью новый бэкэнд на основе виртуальных машин (на основе подмножества функций Hyper-V) вместо предыдущего уровня адаптации системных вызовов. WSL 2 поставлялся с Windows 10 версии 2004, а также был перенесен на Windows 10 версий 1903 и 1909.

Поддержка WSL 2 графическим процессором была представлена ​​в сборке Windows 20150. Поддержка графического интерфейса для WSL 2 была представлена ​​в сборке Windows 21364. Оба они поставляются в Windows 11.

Microsoft представила версию WSL для Магазина Windows 11 октября 2021 года для Windows 11.

Разработка

Первый набег Microsoft на достижение Unix-подобной совместимости в Windows начался с подсистемы Microsoft POSIX , замененной службами Windows для UNIX через MKS / Interix , которая в конечном итоге была устарела с выпуском Windows 8.1 . Технология, лежащая в основе подсистемы Windows для Linux, возникла в еще не выпущенном Project Astoria , который позволил некоторым приложениям Android работать в Windows 10 Mobile . Впервые он был доступен в сборке 14316 Windows 10 Insider Preview .

В то время как предыдущие проекты Microsoft и стороннего Cygwin были сосредоточены на создании своих собственных уникальных Unix-подобных сред на основе стандарта POSIX , WSL нацелен на совместимость с Linux. Вместо того, чтобы заключать неродные функции в системные вызовы Win32, как это было в предыдущих системах, в первоначальной конструкции WSL (WSL 1) использовалась исполнительная часть ядра NT для обслуживания программ Linux в качестве особых изолированных минимальных процессов (известных как «пико-процессы» ), подключенных к ядру. режим «поставщики пико» в качестве выделенных обработчиков системных вызовов и исключений, отличных от таковых в обычном процессе NT, с возможностью повторного использования существующих реализаций NT везде, где это возможно.

Хотя WSL (благодаря этой первоначальной конструкции) был намного быстрее и, возможно, намного более популярным, чем его собратья из проектов UNIX-on-Windows, инженеры ядра Windows столкнулись с трудностями при попытке повысить производительность WSL и совместимость с системными вызовами, пытаясь изменить существующее ядро ​​NT для распознавания и правильно работать с API Linux . На конференции Microsoft Ignite в 2018 году инженеры Microsoft представили общий обзор новой «облегченной» технологии виртуальных машин Hyper-V для контейнеризации, где виртуализированное ядро ​​может напрямую использовать примитивы NT на хосте. В 2019 году Microsoft анонсировала полностью переработанную архитектуру WSL (WSL 2) с использованием этой облегченной технологии виртуальных машин, в которой размещены реальные (настроенные) образы ядра Linux, заявив о полной совместимости с системными вызовами.

Microsoft рассматривает WSL как «в первую очередь инструмент для разработчиков, особенно веб-разработчиков и тех, кто работает над проектами с открытым исходным кодом или с ними». В сентябре 2018 года Microsoft заявила, что «WSL требует меньше ресурсов (ЦП, памяти и хранилища), чем полноценная виртуальная машина» (что до WSL было наиболее прямым способом запуска программного обеспечения Linux в среде Windows), при этом позволяя пользователям использовать приложения Windows и инструменты Linux с одним и тем же набором файлов.

В апреле 2021 года Microsoft выпустила тестовую сборку Windows 10, которая также включает в себя возможность запускать приложения с графическим пользовательским интерфейсом (GUI) Linux с использованием WSL 2 и CBL-Mariner . Подсистема Windows для графического интерфейса Linux (WSLg) была официально представлена ​​на конференции Microsoft Build 2021 . Он включен в сборку Windows 10 Insider 21364 или более позднюю.

Архитектура

WSL 1

Служба LXSS Manager

LXSS Manager Service - это служба, отвечающая за взаимодействие с подсистемой (через драйверы lxss.sys и lxcore.sys) и способ, которым Bash.exe (не путать с оболочками, предоставляемыми дистрибутивами Linux) запускает процессы Linux, а также за обработку системные вызовы Linux и двоичные блокировки во время их выполнения.

Все процессы Linux, запущенные конкретным пользователем, попадают в «Экземпляр Linux» (обычно первым вызываемым процессом является init ). После закрытия всех приложений экземпляр закрывается.

wsl.exe

WSL
Разработчики) Microsoft
Первый выпуск 2 августа 2016 г . ; 5 лет назад ( 2016-08-02 )
Операционная система Майкрософт Виндоус
Тип Командование
Веб-сайт документы .microsoft .com / en-us / windows / wsl / Отредактируйте это в Викиданных

wsl.exe Команда используется для управления распределения в Windows , Subsystem для Linux на командной строке . Он может отображать доступные дистрибутивы, устанавливать дистрибутивы по умолчанию и удалять дистрибутивы. Команду также можно использовать для запуска двоичных файлов Linux из командной строки Windows или Windows PowerShell . wsl.exeзаменяет lxrun.exeустаревшую в Windows 10 1803 и более поздних версиях.

Примеры

Запустите unameкоманду в WSL с помощью PowerShell.

PS C:\temp> wsl uname --all
Linux WikiMachine 4.4.0-18362-Microsoft #1-Microsoft Mon Mar 18 12:02:00 PST 2019 x86_64 x86_64 x86_64 GNU/Linux

Пример использования sudoкоманды из командной строки.

C:\temp> wsl sudo apt-get update
[sudo] password for username:
Hit:1 https://archive.ubuntu.com/ubuntu xenial InRelease
Get:2 https://security.ubuntu.com/ubuntu xenial-security InRelease [94.5 kB]

Доступ к оборудованию и файловой системе

В дизайне WSL 1 не было аппаратной эмуляции / виртуализации (в отличие от других проектов, таких как coLinux), и он напрямую использовал файловую систему хоста (через VolFSи DrvFS) и некоторые части оборудования, такие как сеть, что гарантирует совместимость. Например, к веб-серверам можно получить доступ через те же интерфейсы и IP-адреса, настроенные на хосте, и имеют те же ограничения на использование портов, требующих административных разрешений, или портов, уже занятых другими приложениями.

Существуют определенные местоположения (например, системные папки) и конфигурации, доступ / изменение которых ограничены, даже при запуске от имени пользователя root, с помощью sudo из оболочки. Экземпляр с повышенными привилегиями должен быть запущен, чтобы «sudo» предоставил реальные привилегии root и разрешил такой доступ.

Ограничения

WSL 1 не может запускать все программное обеспечение Linux, такое как 32-разрядные двоичные файлы, или те, для которых требуются определенные службы ядра Linux, не реализованные в WSL. Из-за отсутствия какого-либо «настоящего» ядра Linux в WSL 1 модули ядра, такие как драйверы устройств, не могут быть запущены. WSL 2, однако, использует живые виртуализированные экземпляры ядра Linux.

Можно запускать некоторые графические (GUI) приложения (например, Mozilla Firefox ), установив сервер X11 в среде Windows (хост) (например, VcXsrv или Xming ), хотя и не без оговорок, таких как отсутствие поддержки звука ( хотя это можно исправить, установив PulseAudio в Windows аналогично X11) или аппаратным ускорением (что приводит к снижению производительности графики). Поддержка OpenCL и CUDA в настоящее время также не реализуется, хотя планируется в будущих выпусках.

Microsoft заявила, что WSL был разработан для разработки приложений, а не для настольных компьютеров или производственных серверов , и рекомендовала использовать для этих целей виртуальные машины ( Hyper-V ), Kubernetes и Azure .

Контрольные точки

В тестах производительность WSL 1 часто приближается к родному Linux Ubuntu, Debian, Intel Clear Linux или другим дистрибутивам Linux. В некоторых тестах ввод-вывод является узким местом для WSL. Microsoft утверждает, что переработанный бэкэнд WSL 2 предлагает 20-кратное увеличение скорости некоторых операций по сравнению с WSL 1.

В июне 2020 года бенчмарк из 173 тестов с AMD Threadripper 3970x показал хорошую производительность с WSL 2 (20H2) с 87% производительности собственного Ubuntu 20.04.0 LTS. Это улучшение по сравнению с WSL 1, производительность которого в этом сравнении только 70% от производительности собственного Ubuntu. WSL 2 улучшает производительность ввода-вывода, обеспечивая почти нативный уровень. Сравнение 69 тестов с Intel i9 10900K в мае 2020 года показывает почти такую ​​же относительную производительность.

В декабре 2020 года тест с 43 тестами с AMD Ryzen 5900X показал хорошую производительность с WSL 2 (20H2) с 93% производительности собственного 20.04.1 LTS. Это улучшение по сравнению с WSL 1, у которого в этом сравнении всего 73%.

WSL 2

Версия 2 вносит изменения в архитектуру. Microsoft выбрала виртуализацию с помощью высоко оптимизированного подмножества функций Hyper-V, чтобы запускать ядро ​​и дистрибутивы (на основе ядра), обещая производительность, эквивалентную WSL 1. Для обратной совместимости разработчикам не нужно ничего менять. в своих опубликованных дистрибутивах. Параметры WSL 2 могут быть изменены с помощью глобальной конфигурации WSL , содержащейся в файле INI с именем .wslconfigв папке профиля пользователя .

Установка дистрибутива находится внутри файловой системы в формате ext4 внутри виртуального диска , а файловая система хоста прозрачно доступна через протокол 9P , как и другие технологии виртуальных машин, такие как QEMU . Для пользователей Microsoft обещала в 20 раз большую производительность чтения / записи WSL 1. В Windows для доступа к гостевым файлам Linux предоставляется сетевой перенаправитель IFS с использованием префикса пути UNC . \\wsl$

WSL 2 требует Windows 10 версии 1903 или выше со сборкой 18362 или выше для систем x64 и версии 2004 или выше со сборкой 19041 или выше для систем ARM64.

Скриншоты

Полемика

Была выражена обеспокоенность тем, что подсистема Windows для Linux может быть способом « принять, расширить и погасить » Linux. Ричард Столлман выразил опасения, что интеграция функциональности Linux в Windows только помешает разработке бесплатного программного обеспечения , назвав такие усилия, как WSL, «шагом назад в кампании за свободу». Линус Торвальдс , напротив, сказал, что его не беспокоит поглощение Linux корпорацией Майкрософт, поскольку он полагал, что лицензирование Linux по GPL 2 и размер проекта сделали это невозможным, а также сослались на расширение сотрудничества Microsoft с сообществом Linux.

Смотрите также

использованная литература

внешние ссылки