1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mirrors-wslg

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md
[wsl2]
guiApplications=false

Система дистрибутива основана на Microsoft CBL-Mariner Linux (https://github.com/microsoft/CBL-Mariner). Это минимальная среда Linux, достаточная для запуска различных компонентов WSLg. Подробные инструкции по сборке и развёртыванию частного системного дистрибутива см. в нашей документации (CONTRIBUTING.md).

Каждый пользовательский дистрибутив WSL 2 сопряжён со своим собственным экземпляром системного дистрибутива. Системный дистрибутив работает частично изолированно от пользовательского дистрибутива, с которым он сопряжён, в своём собственном пространстве имён NS/PID/UTS, но разделяет другие пространства имён, такие как IPC, что позволяет оптимизировать общую память через границу.

Хотя пользователь может получить терминал в системный дистрибутив, системный дистрибутив не предназначен для непосредственного использования пользователями. Каждый экземпляр системного дистрибутива загружается только для чтения из своего резервного VHD. Любые изменения, внесённые в экземпляр системного дистрибутива в памяти (например, установка новых пакетов или создание нового файла), фактически отменяются при перезапуске WSL. Причина, по которой мы это делаем, заключается в том, чтобы включить модель обслуживания для системного дистрибутива, где мы заменяем старый на новый, не беспокоясь о переносе каких-либо пользовательских данных, содержащихся внутри. Мы используем сопоставление только для чтения, так что пользователь получает известное поведение отмены любых изменений при каждом перезапуске WSL вместо неожиданности при обслуживании WSL.

Несмотря на то, что Microsoft опубликовал системный дистрибутив WSLg только для чтения, мы хотим поощрять людей экспериментировать с ним. Хотя мы ожидаем, что очень немногие люди действительно будут нуждаться или захотят это сделать, мы поделились подробными инструкциями на нашей странице вклада (CONTRIBUTING.md) о том, как создать и развернуть частную версию системного дистрибутива. Большинству пользователей, которые просто хотят использовать приложения с графическим интерфейсом в WSL, не нужно беспокоиться об этих деталях.

WSLGd

WSLGd — это первый процесс, который запускается после init. WSLGd запускает Weston (с XWayland), PulseAudio и устанавливает соединение RDP, запуская mstsc.exe на хосте в бесшумном режиме. Соединение RDP будет оставаться активным и готовым показать новые приложения с графическим интерфейсом, запускаемые в любой момент, без каких-либо задержек при установлении соединения. Затем WSLGd отслеживает эти процессы и, если они завершаются с ошибкой (скажем, в результате сбоя), автоматически перезапускает их.

Weston

Weston — это эталонный компоновщик проекта Wayland и сердце WSLg. Для WSLg мы расширили существующий бэкенд RDP libweston, чтобы научить его удалённым приложениям, а не монитору/рабочему столу. Мы также добавили в него различные функции, такие как поддержка нескольких мониторов, вырезание/вставка, аудиовход/выход и т. д.

Интеграция приложений достигается с помощью технологии RDP под названием RAIL (Remote Application Integrated Locally) и VAIL (Virtualized Application Integrated Locally). Основное различие между RAIL и VAIL заключается в способе передачи пикселей от сервера RDP к клиенту RDP. В RAIL предполагается, что сервер и клиент работают на разных физических системах, обменивающихся данными по сети, и поэтому пиксели необходимо копировать через транспорт RDP. В VAIL понимается, что сервер и клиент находятся на одной физической системе и могут совместно использовать память через границу виртуальной машины «Гость/Хост». Мы добавили поддержку как RAIL, так и VAIL в бэкэнд libweston RDP, хотя для WSLg эффективно используется только поддержка VAIL. При создании WSLg сначала мы реализовали RAIL, в то время как необходимые компоненты, позволяющие перейти на VAIL, разрабатывались параллельно. Мы решили сохранить эту поддержку, поскольку её можно было повторно использовать в других интересных сценариях за пределами WSLg, например, для удалённого управления приложениями с Pi под управлением Linux. Чтобы совместно использовать память между гостем Linux и хостом Windows, мы используем virtio-fs.

RAIL-Shell

Weston является модульным и сегодня имеет различные оболочки, такие как оболочка рабочего стола, полноэкранная оболочка (также известная как киоск) и автоматическая оболочка. Для WSLg мы представили новую оболочку под названием RAIL Shell. Цель RAIL Shell — помочь с удаленным доступом к отдельным окнам из Linux в Windows, поэтому оболочка очень проста и не включает никаких реальных виджетов или пикселей, принадлежащих оболочке.

FreeRDP

Weston использует FreeRDP для реализации своего бэкэнд-сервера RDP. FreeRDP используется для кодирования всех коммуникаций, идущих от сервера RDP (в Weston) к клиенту RDP (mstsc в Windows), в соответствии со спецификациями протокола RDP. Он также используется для декодирования всего трафика, поступающего от клиента RDP на сервер RDP.

Pulse Audio Plugin

Для аудиовхода (микрофон) и аудиовыхода (динамики/наушники) WSLg запускает сервер PulseAudio. WSLg использует плагин-приемник для аудиовыхода и плагин-источник для аудиовхода. Эти плагины эффективно передают аудиосэмплы между PulseServer и сервером Weston RDP. Аудиопотоки объединяются сервером Weston RDP в транспорт RDP, эффективно обеспечивая аудиовход/выход в бэкэнде Weston RDP во всех сценариях (удаленный доступ в стиле Desktop/RAIL/VAIL), включая WSLg.

WSL Dynamic Virtual Channel Plugin (WSLDVCPlugin)

WSLg использует собственный виртуальный канал RDP между сервером Weston RDP и клиентом mstsc RDP, работающим на хосте Windows. Этот канал используется Weston для перечисления всех приложений с графическим интерфейсом Linux (то есть приложений, у которых есть запись на рабочем столе типа gui), а также их командной строки запуска и значка. Открытый исходный код WSLDVCPlugin обрабатывает список приложений с графическим интерфейсом пользователя Linux, отправленных по этому каналу, и создает ссылки на них в меню «Пуск» Windows.

Ускоренная отрисовка OpenGL в WSLg

Хотя WSLg работает с поддержкой виртуального графического процессора или без нее, если вы собираетесь запускать графические приложения, такие как Blender или Gazebo, лучше всего работать на системе с графическим процессором и драйвером, который может поддерживать WSL. Обзор нашей архитектуры vGPU и того, как мы делаем возможным доступ к графическому процессору для приложений Linux в WSL, доступен в нашем блоге DirectX.

Поддержка ускоренной отрисовки OpenGL стала возможной благодаря работе нашей команды D3D с Collabora и сообществом Mesa над созданием драйвера d3d12 Gallium.

Поддержка Linux, включая поддержку WSLg, была включена в основную ветку и является частью выпуска Mesa 21.0. Чтобы воспользоваться этим ускорением, вам необходимо обновить версию Mesa, установленную в вашем пользовательском дистрибутиве. Также требуется, чтобы поставщик вашего дистрибутива решил собрать и опубликовать новый драйвер d3d12 Gallium в своем репозитории пакетов. Мы работаем с различными издателями дистрибутивов WSL, чтобы сообщить им об этих изменениях.

Обратите внимание, что для первого выпуска WSLg взаимодействие vGPU с композитором Weston происходит через системную память. При работе на дискретном графическом процессоре это фактически означает, что визуализированные данные копируются из видеопамяти в системную память перед тем, как быть представленными композитору в WSLg и снова загружены на графический процессор на стороне Windows. В результате возникает снижение производительности, пропорциональное частоте представления. На очень высоких частотах кадров, таких как 600 кадров в секунду на дискретном GPU, эти накладные расходы могут достигать 50%. На более низких частотах кадров или на интегрированном графическом процессоре можно добиться производительности, намного более близкой к нативной, в зависимости от рабочей нагрузки. Использование vGPU все еще обеспечивает значительное улучшение производительности и опыта по сравнению с использованием программного рендерера, несмотря на это ограничение версии 1.

Поток кода WSLg

WSLg основан на отличной работе сообщества Linux и использует большое количество проектов с открытым исходным кодом. Большинство компонентов используются в том виде, в котором они были получены из основной ветки, и для их включения в WSLg не потребовалось никаких изменений. Некоторые компоненты, лежащие в основе WSLg, в частности Weston, FreeRDP и PulseAudio, потребовали изменений, чтобы обеспечить богатую функциональность. Интеграция WSLg. Эти изменения ещё не включены в основную ветку. Microsoft работает с сообществом, чтобы поделиться этими вкладами с каждым проектом таким образом, что со временем WSLg можно будет построить напрямую из основной ветки без необходимости каких-либо специфических модификаций WSLg.

Все эти текущие вклады хранятся в зеркальных репозиториях Microsoft. Мы поддерживаем эти зеркала в актуальном состоянии с выпусками основной ветки и размещаем наши изменения WSLg в этих репозиториях. WSLg извлекает и собирает код из этих зеркальных репозиториев как часть наших предварительных выпусков Insider WSLg. Эти зеркала являются публичными и доступными для всех. Любопытные разработчики могут взглянуть на ранние стадии нашего вклада, посмотрев на код в этих зеркалах, помня, что окончательная версия кода, вероятно, будет выглядеть иначе, когда вклад достигнет основного проекта и будет адаптирован на основе отзывов владельцев различных проектов. Все наши зеркала следуют одной модели. Существует основная ветка, которая соответствует основной ветке в нашей последней точке синхронизации. Время от времени мы обновляем основную ветку, чтобы получать обновления из основного проекта. Также существует рабочая ветка, содержащая все наши текущие изменения. WSLg строится с использованием рабочей ветки из каждого из зеркальных проектов.

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

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

Проект Основной репозиторий Зеркало WSLg
Weston https://github.com/wayland-project/weston https://github.com/microsoft/Weston-mirror
FreeRDP https://github.com/FreeRDP/FreeRDP https://github.com/microsoft/FreeRDP-mirror
PulseAudio https://github.com/pulseaudio/pulseaudio https://github.com/microsoft/PulseAudio-mirror

Ниже приведён общий обзор текущих вкладов в каждый проект, содержащихся в этих зеркалах.

Weston

WSLg использует Weston в качестве компоновщика Wayland, соединяющего миры Linux и Windows с помощью технологии RDP для удалённого обмена содержимым приложений между ними. В Weston уже был бэкенд RDP, но он был ограничен удалением рабочего стола с одного монитора. Мы значительно расширили этот бэкэнд RDP, включив в него расширенные функции, такие как поддержка нескольких мониторов, интеграция буфера обмена для копирования/вставки и аудиовход/выход. Мы включили новые режимы удалённого доступа под названием RAIL (Remote Application Integrated Locally) и VAIL (Virtualized Application Integrated Locally), где отдельные приложения, а не рабочие столы/мониторы, передаются удалённо. Эти изменения не специфичны для WSLg; они добавляют функциональность к существующему бэкэнду RDP и также могут использоваться в других сценариях (например, использование нового бэкэнда Weston RDP для передачи приложения, работающего на Raspberry Pi, на другое устройство, использующее клиент RDP).

Чтобы обеспечить богатую интеграцию в WSLg, мы также добавили небольшой плагин к бэкенду RDP, специфичный для WSLg. В Weston плагин отвечает за подключение к пользовательскому дистрибутиву и поиск установленных приложений (также известных как файл рабочего стола). Плагин отправляет хосту Windows список всех найденных приложений вместе с их командами запуска и значками. На хосте Windows открытый исходный код mstsc plugin, являющийся частью проекта WSLg, использует эту информацию для создания ярлыков для этих Linux-приложений в меню «Пуск» Windows.

Мы также исправили несколько ошибок, влияющих на различные приложения. Как правило, это были проблемы, которые влияли на Weston во всех режимах и не были специфичными для WSLg. FreeRDP и поддержка нового протокола/канала RDP

Мы добавили поддержку нового протокола RDP/канала, чтобы обеспечить оптимизированный сценарий VAIL, а также поддержку плагина WSLg. Кроме того, мы исправили различные ошибки, которые влияли на взаимодействие с mstsc или вызывали нестабильность.

PulseAudio

Что касается PulseAudio, наши усилия были направлены на создание плагина-приёмника и плагина-источника, которые пересылают аудиоданные между PulseAudio и серверной частью Weston RDP таким образом, чтобы аудиоданные можно было интегрировать через соединение RDP обратно на хост. В ядре PulseAudio изменений нет, кроме добавления этих новых плагинов.

Участие

Если вы хотите поработать с WSLg или внести свой вклад в проект, пожалуйста, ознакомьтесь с нашей страницей CONTRIBUTING, где подробно описано, как собрать и запустить частную версию WSLg.

Сообщение о проблемах, не связанных с безопасностью

Для сообщения о проблемах, не связанных с безопасностью, таких как сообщение об ошибке или предложение новой функции, используйте систему отслеживания проблем этого проекта (https://github.com/microsoft/wslg/issues).

Сообщение о проблемах безопасности

Чтобы сообщить о проблемах с безопасностью в WSLg или любых других продуктах Microsoft, следуйте инструкциям, подробно описанным здесь (SECURITY.md).

Торговые марки

Этот проект может содержать торговые марки или логотипы проектов, продуктов или услуг. Использование торговых марок или логотипов Microsoft разрешено и должно соответствовать «Руководству по торговым маркам и брендам» Microsoft. Использование торговых марок или логотипов Microsoft в изменённых версиях этого проекта не должно вызывать путаницы или подразумевать спонсорство со стороны Microsoft. Любое использование торговых марок или логотипов третьих сторон регулируется политикой этих третьих сторон.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

WSLg — это сокращение от Windows Subsystem for Linux GUI. Цель этого проекта — поддерживать запуск Linux GUI-приложений с полностью интегрированным рабочим столом на Windows (\( ). Развернуть Свернуть
C++ и 6 других языков
MIT
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/mirrors-wslg.git
git@api.gitlife.ru:oschina-mirror/mirrors-wslg.git
oschina-mirror
mirrors-wslg
mirrors-wslg
main