Compania Microsoft a anunțat începerea testării posibilității de a rula aplicații Linux cu interfață grafică în medii bazate pe subsystem WSL2 (Windows Subsystem for Linux), destinat pentru a rula fișiere executabile Linux în Windows. Aplicațiile se integrează complet cu desktopul principal Windows, inclusiv suport pentru plasarea shortcut-urilor în meniul Start, redarea sunetului, înregistrarea cu microfonul, accelerarea hardware OpenGL, afișarea informațiilor despre programe în bara de activități, comutarea între programe prin Alt-Tab, copierea datelor între programele Windows și Linux prin clipboard.

Pentru organizarea afișării interfeței aplicațiilor Linux pe desktopul principal Windows, este utilizat managerul de compoziție RAIL-Shell dezvoltat de Microsoft, care utilizează protocolul Wayland și se bazează pe baza de cod Weston. Afișarea se realizează prin intermediul backend-ului RDP-RAIL (RDP Remote Application Integrated Locally), care se deosebește de backend-ul RDP anterior disponibil în Weston prin faptul că managerul de compoziție nu efectuează el însuși redarea desktopului, ci redirecționează suprafețele individuale (wl_surface) prin canalul RDP RAIL pentru a fi afișate pe desktopul principal Windows. Pentru a rula aplicații X11 se utilizează XWayland.

Afișarea sunetului este organizată cu ajutorul server PulseAudio, care interacționează de asemenea cu Windows prin intermediul protocolului RDP (pentru redarea sunetului se folosește pluginul rdp-sink, iar pentru intrare — rdp-source). Serverul de compoziție, XWayland și PulseAudio sunt împachetate sub forma unui mini-distribuitor universal WSLGd, care include componente pentru abstractizarea subsistemului grafic și sonor, și se bazează pe distribuția CBL-Mariner Linux, folosită de asemenea în infrastructura cloud a Microsoft. WSLGd pornește utilizând mecanisme de virtualizare, iar pentru partajarea între mediul găzduit cu Linux și sistemul gazdă Windows se utilizează virtio-fs.
Ca servere RDP, lansat în mediu Linux WSLGd, se utilizează FreeRDP, iar pe partea Windows clientul RDP este mstsc. Un handler WSLDVCPlugin a fost pregătit pentru a identifica aplicațiile grafice Linux disponibile și pentru a le afișa în meniul Windows. În medii WSL2 cu distribuții Linux standard, precum Ubuntu, Debian și CentOS, setul de componente care rulează în WSLGd interacționează prin furnizarea de socketuri care gestionează cererile prin protocoale Wayland, X11 și PulseAudio. Wrapper-urile pregătite pentru WSLGd sunt distribuite sub licența MIT.
Pentru a instala WSLGd, este necesar să existe Windows 10 Insider Preview, versiunea 21362 sau mai mare. În viitor, posibilitatea de instalare a WSLGd va fi disponibilă și pentru versiunile obișnuite de Windows, fără a fi necesară participarea în programul Insider Preview. Instalarea WSLGd se efectuează utilizând comanda standard „wsl —install”, de exemplu, pentru Ubuntu — „wsl —install -d Ubuntu”. Pentru medii WSL2 existente, instalarea WSLGd se realizează prin comanda „wsl —update” (sunt acceptate doar medii WSL2 care utilizează nucleul Linux, nu traducerea apelurilor). Aplicațiile grafice sunt instalate prin managerul de pachete standard al distribuției.
WSLGd oferă doar mecanisme pentru redarea graficii 2D, iar pentru accelerarea graficii 3D bazate pe OpenGL în distribuțiile instalate în WSL2 se recomandă utilizarea unui GPU virtual (vGPU). Driver-ele vGPU pentru WSL sunt disponibile pentru cipurile AMD, Intel și NVIDIA. Accelerarea graficii se realizează prin furnizarea unei interfețe cu o implementare OpenGL deasupra DirectX 12. Interfața este implementată sub forma unui driver d3d12, integrat în compunerea principală Mesa 21.0, dezvoltata împreună cu compania Collabora.
Funcționarea GPU-ului virtual este realizată în Linux prin intermediul dispozitivului /dev/dxg cu servicii care repetă modelul driverului de afișare WDDM (Windows Display Driver Model) D3DKMT din nucleul Windows. Driverul organizează conexiunea cu GPU-ul fizic prin intermediul VM bus. Aplicațiile Linux au același nivel de acces la GPU ca și aplicațiile native pentru Windows, fără a se utiliza segregarea resurselor între Windows și Linux. Testarea performanței pe dispozitivul Surface Book Gen3 cu GPU Intel a arătat că în mediu Win32 nativ testul Geeks3D GpuTest arată 19 FPS, în mediu Linux cu vGPU — 18 FPS, iar la redarea grafică software în Mesa — 1 FPS.

Sursa: opennet.ro
