Microsoft объявила о значительных улучшениях в своих подсистемах Windows для Linux, которые позволяют запускать приложения Linux с графическим интерфейсом.
Когда в 2016 году Microsoft впервые выпустила подсистему WSL (Windows Subsystem for Linux), шумиха была нереальной. Люди мечтали запустить свои приложения для Windows и Linux параллельно, без перезагрузки. Но, увы, на тот момент WSL мог запускать только терминальные приложения.
В 2020 году Microsoft снова предприняла попытку революционизировать экосистему приложений Windows. На этот раз они заменили старое эмулируемое ядро настоящим ядром Linux. Это изменение позволило запускать приложения Linux в Windows. Сейчас данная разработка уже находится в стадии финального тестирования.
Предварительный просмотр приложений с графическим интерфейсом для WSL
В следующем видео вы можете увидеть демонстрацию использования графического интерфейса WSL в сборке Windows для разработчиков build 21364
https://www.youtube.com/watch?v=LFBplPbZxjs
Ранее мы имели лишь начальную поддержку приложений Linux GUI на WSL, и нужно было использовать сторонний X-сервер, что на практике означало медленную работу, отсутствие аппаратного, множество ошибок и большую брешь в безопасности.
Небольшая группа энтузиастов Linux (которые работали с Windows) обладающих навыками и знаниями в настройке X-сервера разработали свои утилиты для решения части недостатков.
Однако теперь все поменялось. Сама Microsoft официально полноценно поддерживает приложения Linux с графическим интерфейсом. Теперь мы получили аппаратное ускорение и множество других жизненно необходимых улучшений в WSL.
Приложения Linux с графическим интерфейсом для широких масс: WSLg
Благодаря новой официальной поддержке со стороны Microsoft в WSL существует огромный спектр улучшений. Этот перечень включает:
- Аппаратное ускорение GPU
- Поддержку звука и микрофона из коробки
- Автоматический запуск серверов X и PulseAudio
Данное расширение называется «WSLg». WSLg делает запуск приложений Linux на WSL почти таким же простым, как запуск родных системных приложений, с минимальными потерями в производительности.
Сейчас вы можете попробовать запустить свою любимую среду IDE, сценарии использования для тестирования, специфичные для Linux, и множество других приложений, таких как программное обеспечение САПР.
Аппаратное ускорение GPU в приложениях Linux
Одна из самых больших проблем с запуском приложений Linux с графическим интерфейсом пользователя в Windows ранее заключалась в том, что они не могли использовать аппаратное ускорение. Это приводило к зависаниям даже когда мы просто перемещали окна, а при попытке выполнить более сложные задачи происходили еще большие проблемы.
Согласно анонсу от Microsoft:
В рамках этой функции мы также включили поддержку 3D-графики с ускорением на GPU! Благодаря работе, выполненной в Mesa 21.0, любые приложения, выполняющие сложный 3D-рендеринг, могут использовать OpenGL для их ускорения с помощью графического процессора на вашем компьютере с Windows 10.
Это полезное дополнение, которое должно помочь всем, кто хочет запускать приложения с интенсивным использованием графических процессоров через WSL.
В Linux виртуальный GPU реализован на основе устройства /dev/dxg с сервисами, повторяющими WDDM (Windows Display Driver Model) D3DKMT ядра Windows. В этой системе драйвер организует соединение с физической видеокартой через VM bus. У приложений Linux тот же уровень доступа к GPU, что и у родных приложений для Windows, разделения ресурсов между Windows и Linux нет. В ходе тестирования производительности системы на базе Surface Book Gen3 с GPU Intel выяснилось, что тест Geeks3D GpuTest показывает 19 FPS в Windows, 18 FPS — в Linux. В старой Mesa же, при программной отрисовке — всего 1 FPS.
Поддержка аудио и микрофона из коробки!
Одним из ключевых элементов нормальной работы приложениями Linux, работающими вместе с приложениями Windows, является поддержка звука. В новом обновлении WSL звук поддерживается из коробки. Это достигается за счет запуска сервера PulseAudio одновременно с X-сервером.
Microsoft объясняет:
Приложения Linux GUI на WSL также будут включать встроенную поддержку звука и микрофона. Этот захватывающий аспект позволит вашим приложениям воспроизводить звуковые сигналы и использовать микрофон, что идеально подходит для создания, тестирования или использования проигрывателей фильмов, телекоммуникационных приложений и многого другого.
Если мы хотим, чтобы приложения для Linux стали более распространенными, это ключевая особенность. Это также позволит разработчикам приложений для Windows лучше поддерживать перенос своих приложений на Linux.
RDP-сервер
Разработчики выбрали FreeRDP в качестве RDP-сервера, который запускается в Linux-окружении WSLGd. Для той же задачи в ОС Windows используется mstsc. Обработчик WSLDVCPlugin применяется для определения имеющихся графических Linux-приложений и их отображения в меню Windows. Он позволяет взаимодействовать с дистрибутивами Linux в окружении WLS2 посредством предоставления сокетов, которые обрабатывают запросы по протоколам Wayland, X11 и PulseAudio. Подготовленные для WSLGd обвязки распространяются под лицензией MIT.
Автоматический запуск всех необходимых серверов
Раньше вам приходилось запускать PulseAudio и X-серверы вручную, прежде чем вы сможете что-либо запустить. Теперь Microsoft реализовала автоматическую проверку и запуск необходимых серверов.
Это значительно упрощает запуск и использование приложений Linux в Windows.
Microsoft утверждает, что это значительно улучшит взаимодействие с пользователем:
С помощью этой функции мы автоматически запускаем сопутствующий системный дистрибутив, содержащий Wayland, X-сервер, импульсный аудиосервер и все остальное, необходимое для взаимодействия приложений Linux с графическим интерфейсом пользователя с Windows. После того, как использование приложений с графическим интерфейсом будет завершено, операционная система автоматически завершит Linux среду.
Компоненты Linux среды объединены в одно целое и их взаимосвязь остается невидимой для пользователя, чтобы запуск приложений Linux с графическим интерфейсом был таким же простым как запуск обычных приложений Windows.
Как получить доступ к новым возможностям?
Для этого нужно установить 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, используется иной механизм — виртуальный GPU (vGPU). Драйверы для него предоставляются в трех вариантах — для чипов AMD, Intel и NVIDIA. Работа с графикой выполняется путем предоставления прослойки с реализацией OpenGL поверх DirectX 12. Прослойка оформлена в виде драйвера d3d12, вошедшего в основной состав Mesa 21.0, и развиваемого совместно с компанией Collabora.
Заключительные мысли
Microsoft делает все возможное, чтобы приложения Linux полноценно работали в Windows. И, возможно, в отдельных случаях это даже сыграет против Microsoft, поскольку будут такие пользователи, которые попробовав Linux приложения, перейдут исключительно на Linux.
Что вы думаете о новом функционале по работе приложениях Linux с графическим интерфейсом в Windows? Делитесь ими в комментариях ниже!