La compañía Microsoft ha anunciado el inicio de pruebas para permitir la ejecución de aplicaciones de Linux con interfaz gráfica en entornos basados en la subsistema WSL2 (Windows Subsystem for Linux), diseñado para ejecutar archivos ejecutables de Linux en Windows. Las aplicaciones se integran completamente con el escritorio principal de Windows, incluyendo la posibilidad de colocar accesos directos en el menú Inicio, reproducción de sonido, grabación desde el micrófono, aceleración por hardware de OpenGL, visualización de información sobre programas en la barra de tareas, conmutación entre programas mediante Alt-Tab, y la copia de datos entre programas de Windows y Linux a través del portapapeles.

Para organizar la salida de la interfaz de aplicaciones de Linux en el escritorio principal de Windows, se ha empleado un gestor de ventanas compuesto desarrollado por Microsoft llamado RAIL-Shell, que utiliza el protocolo Wayland y se basa en la base de código de Weston. La salida se realiza a través del backend RDP-RAIL (RDP Remote Application Integrated Locally), que se distingue del backend RDP previamente disponible en Weston en que el gestor compuesto no realiza la representación del escritorio, sino que redirige superficies individuales (wl_surface) a través del canal RDP RAIL para su visualización en el escritorio principal de Windows. Para ejecutar aplicaciones X11 se emplea XWayland.

La salida de sonido se organiza usando servidores PulseAudio, que también interactúa con Windows mediante el protocolo RDP (se utiliza un complemento rdp-sink para la salida de sonido y rdp-source para la entrada). El servidor compuesto, XWayland y PulseAudio están empaquetados en forma de un mini-distribuidor universal WSLGd, que incluye componentes para abstraer las subsistemas gráficas y de sonido, y se basa en la distribución CBL-Mariner Linux, también utilizada en la infraestructura en la nube de Microsoft. WSLGd se inicia utilizando mecanismos de virtualización, y para compartir entre el entorno invitado de Linux y el sistema anfitrión de Windows se emplea virtio-fs.
Como servidor RDP, que se ejecuta en el entorno Linux WSLGd, utiliza FreeRDP, y en el lado de Windows, el cliente RDP es mstsc. Para identificar las aplicaciones gráficas de Linux y su visualización en el menú de Windows, se ha preparado un controlador WSLDVCPlugin. Con distribuciones de Linux comunes, como Ubuntu, Debian y CenOS instaladas en el entorno WSL2, el conjunto de componentes que se ejecuta en WSLGd interactúa mediante la provisión de sockets que manejan solicitudes a través de los protocolos Wayland, X11 y PulseAudio. Los wrappers preparados para WSLGd se distribuyen bajo la licencia MIT.
Para instalar WSLGd, se requiere tener Windows 10 Insider Preview de al menos la versión 21362. Más adelante, se proporcionará la posibilidad de instalar WSLGd también en versiones normales de Windows, sin necesidad de participar en el programa Insider Preview. La instalación de WSLGd se realiza mediante el comando típico «wsl —install», por ejemplo, para Ubuntu — «wsl —install -d Ubuntu». Para los entornos existentes de WSL2, la instalación de WSLGd se lleva a cabo a través del comando «wsl —update» (solo se admiten entornos WSL2 que utilizan un núcleo Linux y no la traducción de llamadas). Las aplicaciones gráficas se instalan a través del gestor de paquetes nativo de la distribución.
WSLGd proporciona solo mecanismos para la salida de gráficos 2D, mientras que para acelerar los gráficos 3D basados en OpenGL en las distribuciones instaladas en WSL2, se sugiere utilizar un GPU virtual (vGPU). Los controladores vGPU para WSL están disponibles para chips AMD, Intel y NVIDIA. La aceleración gráfica se proporciona a través de una capa que implementa OpenGL sobre DirectX 12. Esta capa se presenta como un controlador d3d12, que se ha integrado en la versión principal de Mesa 21.0 y se desarrolla en colaboración con la empresa Collabora.
El funcionamiento del GPU virtual se realiza en Linux a través del dispositivo /dev/dxg con servicios que replican el WDDM (Modelo de Controlador de Pantalla de Windows) D3DKMT del núcleo de Windows. El controlador organiza la conexión con el GPU físico a través del bus de VM. Las aplicaciones de Linux tienen el mismo nivel de acceso al GPU que las aplicaciones nativas de Windows, sin la necesidad de dividir recursos entre Windows y Linux. Las pruebas de rendimiento en el dispositivo Surface Book Gen3 con GPU Intel mostraron que en el entorno nativo de Win32, la prueba Geeks3D GpuTest muestra 19 FPS, en el entorno Linux con vGPU — 18 FPS, y al renderizar de forma programática en Mesa — 1 FPS.

Fuente: opennet.ru
