Microsoft ha annunciato l'inizio dei test per la possibilità di eseguire applicazioni Linux con interfaccia grafica negli ambienti basati sul sottosistema WSL2 (Windows Subsystem for Linux), progettato per eseguire file eseguibili Linux su Windows. Le applicazioni si integrano completamente con il desktop principale di Windows, incluso il supporto per la collocazione delle scorciatoie nel menu Start, la riproduzione audio, la registrazione da microfono, l'accelerazione hardware OpenGL, la visualizzazione delle informazioni sui programmi sulla barra delle applicazioni, il passaggio tra programmi tramite Alt-Tab, la copia di dati tra programmi Windows e Linux tramite il clipboard.

Per organizzare l'uscita dell'interfaccia delle applicazioni Linux sul desktop principale di Windows viene utilizzato il gestore composito RAIL-Shell sviluppato da Microsoft, che impiega il protocollo Wayland e si basa sul codice sorgente di Weston. L'output avviene tramite il backend RDP-RAIL (RDP Remote Application Integrated Locally), che si differenzia rispetto al backend RDP precedentemente disponibile su Weston in quanto il gestore composito non esegue autonomamente il rendering del desktop, ma reindirizza superfici separate (wl_surface) tramite il canale RDP RAIL per la visualizzazione sul desktop principale di Windows. Per eseguire applicazioni X11 viene utilizzato XWayland.

L'uscita audio è organizzata utilizzando server PulseAudio, che interagisce anche con Windows tramite il protocollo RDP (per l'uscita audio viene impiegato il plugin rdp-sink, mentre per l'input – rdp-source). Il server composito, XWayland e PulseAudio sono confezionati in forma di un mini-distributivo universale WSLGd, che include componenti per astrare i sottosistemi grafico e audio, e si basa sulla distribuzione CBL-Mariner Linux, utilizzata anche nell'infrastruttura cloud di Microsoft. WSLGd viene avviato utilizzando meccanismi di virtualizzazione, e per la condivisione tra l'ambiente guest Linux e il sistema host Windows viene utilizzato virtio-fs.
Come server RDP, avviato nell'ambiente Linux WSLGd, viene utilizzato FreeRDP, mentre sul lato Windows il client RDP è rappresentato da mstsc. Per identificare le applicazioni grafiche Linux disponibili e visualizzarle nel menu Windows, è stato preparato un gestore WSLDVCPlugin. Con le distribuzioni Linux comuni installate nell'ambiente WSL2, come Ubuntu, Debian e CentOS, il set di componenti in esecuzione in WSLGd interagisce tramite l'offerta di socket che gestiscono le richieste attraverso i protocolli Wayland, X11 e PulseAudio. Le interfacce preparate per WSLGd sono distribuite sotto licenza MIT.
Per installare WSLGd è necessario avere Windows 10 Insider Preview almeno nella versione 21362. In seguito, la possibilità di installare WSLGd sarà fornita anche per le versioni normali di Windows, senza necessità di partecipazione al programma Insider Preview. L'installazione di WSLGd avviene eseguendo il comando tipico «wsl —install», ad esempio, per Ubuntu — «wsl —install -d Ubuntu». Per gli ambienti WSL2 esistenti, l'installazione di WSLGd avviene tramite il comando «wsl —update» (sono supportati solo gli ambienti WSL2 in cui è utilizzato il kernel Linux, e non la traduzione delle chiamate). Le applicazioni grafiche vengono installate tramite il gestore pacchetti standard della distribuzione.
WSLGd fornisce solo i meccanismi per l'output della grafica 2D, mentre per accelerare la grafica 3D basata su OpenGL nelle distribuzioni installate in WSL2 si consiglia di utilizzare una GPU virtuale (vGPU). I driver vGPU per WSL sono forniti per chip AMD, Intel e NVIDIA. L'accelerazione grafica è garantita tramite un livello intermedio che implementa OpenGL sopra DirectX 12. Questo strato è implementato come driver d3d12, incluso nella versione principale di Mesa 21.0 e sviluppato in collaborazione con Collabora.
Il funzionamento della GPU virtuale è realizzato in Linux tramite il dispositivo /dev/dxg con servizi che replicano WDDM (Windows Display Driver Model) D3DKMT del kernel di Windows. Il driver organizza la connessione con la GPU fisica attraverso il bus VM. Le applicazioni Linux hanno lo stesso livello di accesso alla GPU delle applicazioni native per Windows, senza utilizzare la separazione delle risorse tra Windows e Linux. I test delle prestazioni su un dispositivo Surface Book Gen3 con GPU Intel hanno mostrato che nel nativo ambiente Win32 il test Geeks3D GpuTest dimostra 19 FPS, in un ambiente Linux con vGPU — 18 FPS, e durante il rendering software in Mesa — 1 FPS.

Fonte: opennet.ru
