Microsoft начал тестирование поддержки запуска GUI-приложений Linux в Windows
Компания Microsoft объявила о начале тестирования возможности запуска Linux-приложений с графическим интерфейсом в окружениях на базе подсистемы WSL2 (Windows Subsystem for Linux), предназначенной для запуска исполняемых файлов Linux в Windows. Приложения полностью интегрируются с основным рабочим столом Windows, в том числе поддерживается размещение ярлыков в меню Start, воспроизведение звука, запись с микрофона, аппаратное ускорение OpenGL, отображение информации о программах в панели задач, переключение между программами по Alt-Tab, копирование данных между Windows- и Linux-программами через буфер обмена.
Для организации вывода интерфейса Linux-приложений на основной рабочий стол Windows задействован разработанный в Microsoft композитный менеджер RAIL-Shell, использующий протокол Wayland и основанный на кодовой базе Weston. Вывод осуществляется при помощи бэкенда RDP-RAIL (RDP Remote Application Integrated Locally), который отличается от ранее доступного в Weston бэкенда RDP тем, что композитный менеджер не выполняет сам отрисовку рабочего стола, а перенаправляет отдельные поверхности (wl_surface) по каналу RDP RAIL для отображения на основном рабочем столе Windows. Для запуска X11-приложений применяется XWayland.
Вывод звука организован с использованием сервера PulseAudio, который также взаимодействует с Windows при помощи протокола RDP (для вывода звука применяется плагин rdp-sink, а для ввода — rdp-source). Комозитный сервер, XWayland и PulseAudio упакованы в форме универсального мини-дистрибутива WSLGd, включающего компоненты для абстрагирования графической и звуковой подсистемы, и основанный на дистрибутиве CBL-Mariner Linux, также используемом в облачной инфраструктуре Microsoft. WSLGd запускается с использованием механизмов виртуализации, а для совместного доступа между гостевым окружением с Linux и хост-системой Windows применяется virtio-fs.
В качестве RDP-сервера, запускаемого в Linux-окружении WSLGd, применяется FreeRDP, а на стороне Windows RDP-клиентом выступает mstsc. Для определения имеющихся графических Linux-приложений и их отображения в меню Windows подготовлен обработчик WSLDVCPlugin. С установленными в окружении WSL2 обычными дистрибутивами Linux, такими как Ubuntu, Debian и CenOS, выполняющийся в WSLGd набор компонентов взаимодействует через предоставление сокетов, обрабатывающих запросы по протоколам Wayland, X11 и PulseAudio. Подготовленные для WSLGd обвязки распространяются под лицензией MIT.
Для установки WSLGd требуется наличие Windows 10 Insider Preview как минимум версии 21362. В дальнейшем возможность установки WSLGd будет предоставлена и для обычных выпусков Windows, без необходимости участия в программе Insider Preview. Установка WSLGd осуществляется при выполнении типовой команды «wsl --install», например, для Ubuntu — «wsl --install -d Ubuntu». Для существующих окружений WSL2, установка WSLGd осуществляется через команду «wsl --update» (поддерживаются только окружения WSL2, в которых применяется ядро Linux, а не трансляция вызовов). Графические приложения устанавливаются через штатный пакетный менеджер дистрибутива.
WSLGd предоставляет только механизмы для вывода 2D-графики, а для ускорения 3D-графики на базе OpenGL в устанавливаемых в WSL2 дистрибутивах предлагается использовать виртуальный GPU (vGPU). Драйверы vGPU для WSL предоставлены для чипов AMD, Intel и NVIDIA. Ускорение графики обеспечивается через предоставление прослойки с реализацией OpenGL поверх DirectX 12. Прослойка оформлена в виде драйвера d3d12, вошедшего в основной состав Mesa 21.0, и развиваемого совместно с компанией Collabora.
Тестирование производительности на устройстве Surface Book Gen3 с GPU Intel, показало, что в родном Win32-окружении тест Geeks3D GpuTest демонстрирует 19 FPS, в Linux-окружении с vGPU — 18 FPS, а при программной отрисовке в Mesa — 1 FPS. Работа виртуального GPU реализуется в Linux при помощи драйвера dxgkrnl, предоставляющего устройство /dev/dxg с сервисами повторяющими WDDM (Windows Display Driver Model) D3DKMT ядра Windows. Драйвер организует соединение с физическим GPU при помощи VM bus. Linux приложения имеют тот же уровень доступа к GPU, что и родные приложения для Windows, без применения разделения ресурсов между Windows и Linux.
Источник: http://www.opennet.ru/opennews/art.shtml? num=55002
© OpenNet