Microsoft heeft de start aangekondigd van het testen van de mogelijkheid om Linux-applicaties met een grafische interface uit te voeren in omgevingen op basis van het WSL2 (Windows Subsystem for Linux), dat is ontworpen om Linux-uitvoerbare bestanden in Windows te draaien. De applicaties zijn volledig geïntegreerd met de hoofdwerkplek van Windows, inclusief ondersteuning voor het plaatsen van snelkoppelingen in het Startmenu, geluidsweergave, opname via de microfoon, hardwarematige acceleratie van OpenGL, weergave van informatie over programma's in de taakbalk, schakelen tussen programma's met Alt-Tab, en het kopiëren van gegevens tussen Windows- en Linux-applicaties via het klembord.

Voor het organiseren van de interface-uitvoer van Linux-applicaties naar de hoofdwerkplek van Windows wordt de door Microsoft ontwikkelde composietmanager RAIL-Shell gebruikt, die het Wayland-protocol toepast en gebaseerd is op de codebasis van Weston. De uitvoer geschiedt via de RDP-RAIL-backend (RDP Remote Application Integrated Locally), die verschilt van de eerder beschikbare RDP-backend in Weston omdat de composietmanager zelf geen tekenwerk van de werkplek uitvoert, maar afzonderlijke oppervlakken (wl_surface) doorstuurt over de RDP RAIL-kanaal voor weergave op de hoofdwerkplek van Windows. Voor het uitvoeren van X11-applicaties wordt XWayland toegepast.

De geluidsweergave is georganiseerd met behulp van de server PulseAudio, dat ook met Windows communiceert via het RDP-protocol (voor geluidsweergave wordt de rdp-sink-plug-in gebruikt, en voor invoer de rdp-source). De composietserver, XWayland en PulseAudio zijn verpakt in de vorm van een universele mini-distributie WSLGd, die componenten bevat voor het abstraheren van de grafische en geluidsystemen, en gebaseerd is op de CBL-Mariner Linux-distributie, die ook in de cloudinfrastructuur van Microsoft wordt gebruikt. WSLGd wordt uitgevoerd met behulp van virtualisatiemechanismen, en voor gedeeld toegang tussen de Linux-gastenomgeving en het Windows-hostsysteem wordt virtio-fs toegepast.
Als RDP-servers, die draait in een Linux-omgeving WSLGd, wordt FreeRDP toegepast, terwijl aan de Windows-kant de RDP-client mstsc fungeert. Voor het identificeren van beschikbare grafische Linux-applicaties en hun weergave in het Windows-menu is een handler WSLDVCPlugin voorbereid. Met de gebruikelijke Linux-distributies die in de WSL2-omgeving zijn geïnstalleerd, zoals Ubuntu, Debian en CentOS, interageert de set componenten die draait in WSLGd via het aanbieden van sockets die verzoeken verwerken via de protocollen Wayland, X11 en PulseAudio. De voorbereide wrappers voor WSLGd worden verspreid onder de MIT-licentie.
Voor de installatie van WSLGd is een Windows 10 Insider Preview vereist, minimaal versie 21362. In de toekomst zal de mogelijkheid om WSLGd te installeren ook worden aangeboden voor reguliere versies van Windows, zonder deelname aan het Insider Preview-programma. De installatie van WSLGd gebeurt met behulp van de standaardopdracht «wsl —install», bijvoorbeeld voor Ubuntu — «wsl —install -d Ubuntu». Voor bestaande WSL2-omgevingen kan WSLGd worden geïnstalleerd via de opdracht «wsl —update» (alleen WSL2-omgevingen die een Linux-kernel gebruiken, kunnen dit, niet de vertalingen van oproepen). Grafische applicaties worden geïnstalleerd via de standaardpakketbeheerder van de distributie.
WSLGd biedt alleen mechanismen voor de uitvoer van 2D-graphics, en voor de versnelling van 3D-graphics op basis van OpenGL in de geïnstalleerde WSL2-distributies wordt voorgesteld om een virtuele GPU (vGPU) te gebruiken. vGPU-stuurprogramma's voor WSL zijn beschikbaar voor AMD-, Intel- en NVIDIA-chips. Grafische versnelling wordt gerealiseerd via een laag die OpenGL bovenop DirectX 12 implementeert. Deze laag is vormgegeven als een d3d12-stuurprogramma, opgenomen in de hoofdversie van Mesa 21.0, en wordt samen met Collabora ontwikkeld.
De werking van de virtuele GPU wordt in Linux gerealiseerd met behulp van het apparaat /dev/dxg met services die de WDDM (Windows Display Driver Model) D3DKMT-kern van Windows nabootsen. De stuurprogramma's regelen de verbinding met de fysieke GPU via de VM-bus. Linux-applicaties hebben hetzelfde toegangsniveau tot de GPU als native Windows-applicaties, zonder gebruik te maken van resource-scheiding tussen Windows en Linux. Prestatiemeetungen op een Surface Book Gen3-apparaat met een Intel-GPU toonden aan dat in de native Win32-omgeving de Geeks3D GpuTest-test 19 FPS vertoonde, in de Linux-omgeving met vGPU — 18 FPS, en bij softwarematige rendering in Mesa — 1 FPS.

Bron: opennet.ru
