Microsoft тестирует запуск GUI-приложений Linux в Windows

Microsoft тестирует запуск приложений для Linux с графическим интерфейсом через подсистему WSL2 (Windows Subsystem For Linux). Её цель — запускать исполняемые файлы Linux в системе Windows.

Какие результаты?

Сейчас приложения интегрируются с рабочим столом Windows. Можно располагать ярлыки в меню Start, воспроизводить звуковые файлы, пользоваться микрофоном и аппаратным ускорением OpenGL, переключать программы через Alt-Tab и обменивать данные программ Linux и Windows через буфер обмена.

Тест производительности на Surface Book Gen3 с процессором Intel показал, что в Win32-окружении 19 FPS, в Linux-окружении с vGPU — 18 FPS, а при программной отрисовке в Mesa — 1 FPS.

Как это работает?

Чтобы вывести интерфейс приложений Linux на основной рабочий стол Windows в Microsoft разработали композитный менеджер RAIL-Shell. Он основан на коде Weston и использует протокол Wayland. Вывод происходит через бэкенд RDP-RAI — Remote Desktop Protocol – Remote Application Integrated Locally. Для запуска приложений Х11 используется XWayland.

Звук выводится через сервер PulseAudio, который взаимодействует с Windows через тот же протокол RDP. Для вывода звука используется плагин rdp-sink, для вывода — rdp-source.

RAIL-Shell, PulseAudio и XWayland вместе упакованы в небольшой дистрибутив WSLGd на основе CBL-Mariner Linux, который используют в облачной инфраструктуре Microsoft. Для совместного доступа между гостевым окружением Linux и хостом Windows используется virtio-fs.

Как запускаемый в окружении WSLGd сервер RDP используется mstsc. Чтобы определить, какие есть приложения Linux с графическим интерфейсом, и показать их в меню Windows в Microsoft подготовили обработчик WSLDVCPlugin.

Если в окружение WSL2 поставить Debian, CentOS или Ubuntu, компоненты WSLGd взаимодействуют через предоставление сокетов, которые обрабатывают запросы по протоколам Wayland, X11 и PulseAudio. 

Чтобы установить WSLGd, нужна Windows 10 Insider Preview версии 21362 минимум, но позже это смогут сделать пользователи обычного Windows. Приложения Linux устанавливаются через стандартный пакетный менеджер дистрибутива.

WSLGd даёт выводить только 2D-графику. Для ускорения 3D-графики на базе OpenGL в устанавливаемых в WSL2 дистрибутивах предлагают использовать виртуальный GPU (vGPU). Драйверы vGPU для WSL предоставлены для чипов AMD, Intel и NVIDIA. Ускорение графики происходит через предоставление прослойки с реализацией OpenGL поверх DirectX 12. Прослойка выглядит как драйвер d3d12, который вошёл в основной состав Mesa 21.0.

Работа виртуального GPU реализована в Linux при помощи драйвера dxgkrnl. Он  предоставляет устройство /dev/dxg с сервисами, которые повторяют WDDM (Windows Display Driver Model) D3DKMT ядра Windows. Драйвер организует соединение с физическим GPU при помощи VM bus. Linux приложения имеют тот же уровень доступа к GPU, что и родные приложения для Windows, без применения разделения ресурсов между Windows и Linux.

Залишити відповідь

Дякуємо, що поділились