Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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

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

Обзор [ править ]

Первый выпуск WSL предоставляет Linux -совместимого интерфейс ядра , разработанный Microsoft, не содержащее ядро Linux кода, [5] , который затем может запустить GNU пользовательское пространство поверх него, например , как у Ubuntu , [6] [7] [8] [9] openSUSE , [10] SUSE Linux Enterprise Server , [11] [12] [13] Debian [14] и Kali Linux . [15] Такое пользовательское пространство может содержать оболочку GNU Bash и командный язык с собственными инструментами командной строки GNU ( sed, awk и т. д.), интерпретаторы языков программирования ( Ruby , Python и т. д.) и даже графические приложения (использующие сервер X11 на стороне хоста). [16]

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

Введение и доступность [ править ]

Когда 2 августа 2016 года было представлено юбилейное обновление, был доступен только образ Ubuntu. Fall Творцы Update , выпущенный 17 октября 2017 года, перенес процесс установки дистрибутивов в Windows Store , и введенный SUSE изображения. [13]

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

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

Развитие [ править ]

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

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

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

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

Архитектура [ править ]

WSL 1 [ править ]

Служба диспетчера LXSS [ править ]

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

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

wsl.exe [ править ]

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

Примеры [ править ]

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

PS C: \ temp> wsl uname --all Linux WikiMachine 4.4.0-18362-Microsoft # 1-Microsoft Пн 18 марта 12:02:00 PST 2019 x86_64 x86_64 x86_64 GNU / Linux

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

C: \ temp> wsl sudo apt-get update [sudo] пароль для имени пользователя: Hit: 1 https://archive.ubuntu.com/ubuntu xenial InRelease Get: 2 https://security.ubuntu.com/ubuntu xenial- безопасность InRelease [94,5 kB]

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

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

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

Ограничения [ править ]

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

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

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

Контрольные показатели [ править ]

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

WSL 2 [ править ]

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

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

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

Скриншоты [ править ]

  • Bash работает в Windows 10

  • Firefox для Linux, работающий на WSL

  • Менеджер пакетов Synaptic, работающий на WSL

Противоречие [ править ]

В сообществе разработчиков есть опасения, что подсистема Windows для Linux может стать способом принять, расширить и погасить Linux. [41] [42]

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

См. Также [ править ]

  • Лазурная сфера
  • AndLinux
  • CoLinux
  • Cygwin
  • Уровни совместимости ОС FreeBSD
  • Типы зон SmartOS
  • Interix
  • Терминал Windows
  • Вино
  • Xenix

Ссылки [ править ]

  1. Craig Loewen (12 июня 2019 г.). «WSL 2 теперь доступен в программе предварительной оценки Windows» . Командная строка Windows .
  2. ^ a b c Крейг Лёвен (6 мая 2019 г.). «Анонсируем WSL 2» . Инструменты командной строки Windows для разработчиков .
  3. ^ a b c mscraigloewen. «О WSL 2» . docs.microsoft.com .
  4. ^ «WSL 2 Post BUILD FAQ» . Инструменты командной строки Windows для разработчиков . 14 мая 2019.
  5. ^ Гервиц, Майк. "GNU / kWindows" . mikegerwitz.com . Проверено 8 апреля 2018 года .
  6. Harsh, Mike (30 марта 2016 г.). «Запустите Bash в Ubuntu в Windows» . Создание приложений для Windows . Microsoft .
  7. Рианна Финли, Клинт (30 марта 2016 г.). «Почему Microsoft не безумие заставляет приложения Linux запускаться в Windows» . Проводной . Condé Nast .
  8. Рианна Киркланд, Дастин (30 марта 2016 г.). «Ubuntu для Windows - пользовательское пространство Ubuntu для разработчиков Windows» . Ubuntu Insights . Канонический .
  9. ^ Хэммонс, Джек (9 апреля 2016). «Bash в Ubuntu в Windows» . MSDN . Microsoft .
  10. ^ Получить openSUSE Leap 42 - Microsoft Store
  11. ^ Получить SUSE Linux Enterprise Server 12 - Microsoft Store
  12. ^ Yegulalp, Сердар (12 мая 2017). «Подсистема Windows для Linux приветствует варианты Suse и Fedora» . InfoWorld . Проверено 16 сентября 2017 года .
  13. ^ a b "Ubuntu теперь доступна в Магазине Windows!" . Блог об инструментах командной строки Windows для разработчиков . 10 июля 2017 . Проверено 11 августа 2017 года .
  14. ^ «Debian GNU / Linux для WSL теперь доступен в Магазине Windows» . Инструменты командной строки Windows для разработчиков . Проверено 7 марта 2018 .
  15. ^ «Kali Linux в Windows App Store» . Проверено 9 марта 2018 .
  16. ^ a b c d e «Часто задаваемые вопросы по WSL» . Microsoft . Проверено 13 ноября +2016 .
  17. Брайт, Питер (6 апреля 2016 г.). «Почему Microsoft нужно было заставить Windows работать с программным обеспечением Linux» . Ars Technica . Condé Nast .
  18. Аул, Гейб (6 апреля 2016 г.). «Представляем Windows 10 Insider Preview Build 14316» . Блог Windows Experience . Microsoft .
  19. ^ «Обзор подсистемы Windows для Linux» . Подсистема Windows для Linux . Проверено 22 апреля 2018 года .
  20. ^ Microsoft Ignite (2 октября 2018 г.), Внутреннее устройство ОС: Техническое углубленное изучение инноваций операционной системы - BRK3365 , получено 7 мая 2019 г.
  21. ^ Джек Хэммонс (22 апреля 2016). «Обзор подсистемы Windows для Linux» . Блог подсистемы Windows для Linux на MSDN .
  22. ^ Управление и настройка подсистемы Windows для Linux
  23. ^ Подсистема Windows для взаимодействия Linux с Windows
  24. ^ Справочник команд для подсистемы Windows для Linux
  25. ^ Джек Хэммонс (15 июня 2016). «Поддержка файловой системы WSL» . Блог подсистемы Windows для Linux на MSDN .
  26. ^ Джек Хэммонс (8 ноября 2016). «Сеть WSL» . Блог подсистемы Windows для Linux на MSDN .
  27. ^ «Пожалуйста, включите WSL для запуска 32-битных двоичных файлов ELF» . Отзыв разработчика Windows (Microsoft / UserVoice) .
  28. ^ "Поддержка 32-битных двоичных файлов i386 ELF" . GitHub .
  29. ^ "Оболочка Bash Windows 10 может запускать графические приложения Linux с помощью этого трюка" . Мир ПК . Проверено 10 сентября 2018 года .
  30. ^ «Графический процессор недоступен для запуска тензорного потока и установки CUDA · Проблема № 1788 · Microsoft / WSL» . GitHub . Проверено 10 сентября 2018 года .
  31. ^ «Поддержка OpenCL и CUDA GPU» . Отзыв разработчика Windows (Microsoft / UserVoice) . 15 сентября 2016 . Проверено 10 сентября 2018 года .
  32. ^ «Подсистема Windows для Linux» . Фороникс .
  33. ^ Майкл Ларабел (12 октября 2018). «Взгляд на производительность обновления Windows 10 за октябрь 2018 г. с помощью WSL» . Фороникс .
  34. ^ Майкл Ларабель (5 ноября 2018 г.). «Улучшения WSL в обновлении Windows 10 за октябрь 2018 г.» . Фороникс .
  35. ^ Лоуэн, Craig (26 июля 2019). «Что нового для WSL в сборке 18945 для предварительной оценки участников программы предварительной оценки» . Блог разработчиков Microsoft . Архивировано из оригинала 26 июля 2019 года . Проверено 26 июля 2019 года . В этом новом обновлении мы добавили возможность использовать глобальные параметры конфигурации для WSL. Эти параметры предназначены для опытных пользователей, которые хотят дополнительно настроить свой опыт WSL.
  36. Хиллис, Бен (25 июля 2019 г.). «MicrosoftDocs / WSL | Сборка 18947» . GitHub . Архивировано из оригинала 26 июля 2019 года . Проверено 26 июля 2019 года .
  37. ^ «Глубокое погружение в то, как WSL позволяет Windows получать доступ к файлам Linux» . Инструменты командной строки Windows для разработчиков . 30 мая 2019 . Проверено 24 июня 2019 .
  38. ^ Jujjuri, Venkateswararao; Ван Хенсберген, Эрик; Лигуори, Энтони; Пулаварти, Бадари (13–16 июля 2010 г.). «VirtFS - сквозная файловая система с поддержкой виртуализации» (PDF) . Симпозиум по Linux .
  39. ^ «Объявление WSL 2» . Инструменты командной строки Windows для разработчиков . 6 мая 2019 . Проверено 24 июня 2019 .
  40. ^ «Инструкции по установке для WSL 2» . Дата обращения 7 мая 2020 .
  41. ^ «Должны ли мы беспокоиться, что Microsoft« примет, расширит и погаснет »Linux?» . Проверено 7 марта 2018 .
  42. ^ «Microsoft объявила о поддержке графического интерфейса приложения для Linux» . Проверено 20 мая 2020 .
  43. ^ «Ричард Столмен против генерального директора Canonical:« Любит ли Microsoft Linux до смерти? » » . Проверено 27 июля 2020 .
  44. Вон-Николс, Стивен (7 октября 2019 г.). «Линуса Торвальдса не беспокоит, что Microsoft захватит Linux» . ZDNet . Проверено 19 декабря 2020 .

Внешние ссылки [ править ]

  • Блог о командной строке Windows
  • WSL в Microsoft Docs
  • WSL на GitHub
  • WSL2-Linux-Kernel на GitHub
  • Блог об инструментах командной строки Windows для разработчиков
  • Браун, Пит (22 июля 2016 г.). «Развлечения с подсистемой Windows для Linux» . Блог разработчиков Windows . Microsoft.