Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Lesedauer 9 Min.

Grafisches UI für WSL

Mit dem Windows Subsystem for Linux GUI bindet Microsoft Linux-Anwendungen mit grafischer Bedienoberfläche in den Windows-Desktop ein.
© dotnetpro
Microsofts Windows Subsystem for Linux (WSL) ermöglicht ­Entwicklern und Administratoren seit einiger Zeit die Nutzung von Linux-Kommandozeilenwerkzeugen, ohne dazu eine virtuelle Maschine oder ein Dual-Boot-System verwenden zu müssen. Mit WSLg erweitert Microsoft die Reichweite des Produkts, um GUI-basierte Applikationen zur Ausführung zu bringen.Hand aufs Herz: Dual-Boot-Workstations mögen funktionieren, sind aber nicht wirklich bequem. Der Autor hat seine AMD-Achtkernstation seit einigen Jahren als janusköpfige Maschine konfiguriert, und regelmäßig ärgert er sich über den durch den „Partitionswechsel“ erfolgenden Kontextverlust – offene Fenster gehen verloren.Das Windows Subsystem for Linux – wir haben es in der dotnetpro in [1] besprochen – schafft in diesem Bereich Abhilfe. Leider war es bisher auf nichtgrafische Applikationen beschränkt, die Ausführung eines X-Servers setzte Hand­arbeit voraus. Mit WSLg behebt Microsoft dieses Problem.

Angriffsziel WSL

Auch wenn es paranoid klingt: Das Windows Subsystem for ­Linux ist aus Sicht von Hackern ein legitimes Angriffsziel, das auch ausgenutzt wird. Ein zum Zeitpunkt der Fertigstellung dieses Artikels aktueller Angriff ist unter [5] dokumentiert.

Anspruchsvolle Systemvoraussetzungen

Zum Zeitpunkt der Fertigstellung dieses Artikels stellt Microsoft die Funktion nur im Rahmen der Windows Insider Preview zur Verfügung. Als Basis-Version von Windows 10 avisiert man in Redmond dabei die Variante 21362.Wichtig ist außerdem, dass WSLg ausschließlich im WSL-2-Containerformat vorliegende WSL-Container unterstützt: Sofern Sie noch mit einer WSL-1-VM arbeiten, müssen Sie diese aktualisieren. Dies erfolgt im Allgemeinen durch Eingabe des folgenden Kommandozeilenbefehls, der ohne Datenverlust durchläuft:
wsl --<span class="hljs-keyword">set</span>-version <span class="hljs-comment">_distro_name_ 2</span> 
Das Erreichen optimaler Grafik-Performance setzt die Installation eines zusätzlichen Treibers voraus, der der WSL-Umgebung den direkten Zugriff auf die GPU erlaubt. Aktuell werden alle drei Grafikkarten-Hersteller unterstützt – Tabelle 1 zeigt, welche Mindestanforderungen WSLg an die Grafikkarte Ihres Systems stellt.

Tabelle 1: Mindest-Grafikanforderungen von WSLg

Hersteller Mindest-GPU Downloadlink
AMD AMD Radeon HD 7700 - HD 7900 Series Graphics [2] 
Intel 6th Generation Intel Core (Skylake)  [3] 
Nvidia Keine Angabe, „basiert auf CUDA“ [4] 
Die zur Nutzung von WSLg erforderlichen Treiber sind zum Zeitpunkt der Fertigstellung dieses Artikels noch experimentell, was vor allem für Computerspieler ärgerlich sein kann. Der Autor hat die folgenden Schritte auf seinem IBM ThinkPad T430 durchgeführt – eine in Ehren ergraute Maschine, die Windows 11 aber „inoffiziell“ ausführt. Der Prozessor wird von Intels nativen Treibern nicht mehr unterstützt, was eine realistische Abschätzung des Subsystem-Verhaltens unter Benutzung stabiler Treiber für die GPU ermöglicht.

Komponenten sind quelloffen

So gut wie alle von Microsoft im WSLg-Produkt verwendeten Komponenten stehen als Open Source zur Verfügung. In der Beschreibung des unter [6] bereitstehenden Repositorys finden Sie Verweise auf die einzelnen Module.

Was passiert im Hintergrund?

Während Sie eventuelle Updates der Windows Insider Preview einspielen, wollen wir die Gelegenheit nutzen und ­einen kurzen Blick auf die im Hintergrund implementierte Architektur werfen. Bild 1 zeigt, wie Microsoft die als WSLg bezeichnete Grafikschnittstelle en détail implementiert.
Grafikdarstellungfür Windows-gehostete Linux-Anwendungen setzt einige Manipulationen voraus(Bild 1) © Bild: Microsoft
Microsoft machte sich bei der Realisierung von WSLg eine Besonderheit unixoider Betriebssysteme zunutze: GUI-Applikationen sind in ihnen so gut wie immer zweigeteilt. Das bedeutet, dass die GUI-Applikation mit einem Server Kontakt aufnimmt, der dann für die eigentliche Darstellung der angeforderten grafischen Operationen verantwortlich zeichnet. Im Fall von WSLg kommt dabei der in der Grafik mit einem hellgrünen Hintergrund ausgestattete Container zum Einsatz.Er enthält eine spezialisierte Distribution von Linux, die sich ausschließlich um das Weiterleiten der Grafikbefehle kümmert. Microsoft weist in der Dokumentation darauf hin, dass jeder Benutzer einer Windows-Workstation, der parallel eingeloggt ist, seinen eigenen System-Distro-Container bekommt. In einer Benutzerinstanz lebende WSLg-Subsysteme müssen sich diesen Container mitunter teilen – nutzen sie beispielsweise Ubuntu und eine andere Distribution „parallel“, so besteht in der Theorie ein Risiko von Kreuz-Angriffen.Innerhalb des Containers sorgt eine als Weston bezeichnete Komponente für die per RDP erfolgende Kommunikation mit dem Host. Die Auswahl des Microsoft-Remote-Desktop-Protokolls erleichtert an dieser Stelle insofern die Arbeit, als das Kommunikationssystem von Haus aus auch für die Übertragung von Tondaten geeignet ist. Die Realisierung von ­Audio-Ein- und -Ausgabe beschränkte sich somit auf das Erzeugen eines Plug-ins für das Pulse-Audio-Subsystem, das die Informationen über Weston in Richtung des Windows-Hosts schickt, der diese dann ausgibt oder einsammelt.Wenn Sie die im Artikel weiter oben erwähnte GPU-Beschleunigungsfunktion nutzen, kommt ein zusätzliches Modul zum Einsatz. Es ist eine Art Wrapper, der DirectX-Kommandos in OpenGL umsetzt.Für uns ist an dieser Stelle wichtig, dass die Kommunika­tion über den Systemspeicher erfolgt. Das bedeutet, dass Besitzer einer dedizierten Grafikkarte mit zusätzlichem Overhead rechnen müssen, weil das WSL-Subsystem die Pixeldaten ja permanent zwischen dem GPU-Speicher und dem Arbeitsspeicher der Workstation herumkopieren muss. In der offiziellen Dokumentation beschreibt Microsoft die dadurch entstehenden Performance-Probleme als stark von der Framerate abhängig – im Allgemeinen gilt dabei die Regel, dass eine höhere Framerate zu einem stärkeren Verlust führt:„At very high frame rates such as 600fps on a discrete GPU, that overhead can be as high as 50%. At lower frame rate or on integrated GPU, performance much closer to native can be achieved depending on the workload. Using a vGPU still ­provides a very significant performance and experience improvement over using a software renderer despite this v1 limitation.“Bei näherer Betrachtung erschließt sich dies als logisch – der von der Architektur verursachte Overhead tritt nur beim Kopieren auf. Sobald die GPU die Informationen einmal hat, kann sie mit nativer Geschwindigkeit weiterarbeiten.

Blockiertes Kommandozeilenfenster bei  GUI-Apps

Beachten Sie, dass das Ubuntu-Kommandozeilenfenster blockiert ist, während WSLg eine GUI-Applikation ausführt. Das betrifft explizit auch das Herauskopieren von Text – es ist nur möglich, wenn Sie die GUI-Applikation beenden.

Linux hoch!

Nach diesen Architektural-Überlegungen wollen wir mit der Einrichtung einer WSLg-Ausführungsumgebung beginnen. Beachten Sie, dass das Kommandozeilen-Fenster, das für die Ausführung der WSL-Kommandos verwendet wird, unbedingt mit erhöhter Berechtigung ausgestattet werden muss – im Startmenü von Windows 11 erledigen Sie dies durch einen Rechtsklick auf das Programmsymbol und entscheiden sich danach für die Option Als Administrator ausführen. Im nächsten Schritt führen wir durch Eingabe des folgenden Kommandos eine Komplett-Aktualisierung der WSL-Ausführungsumgebung aus:
C:\WINDOWS\system32&gt;wsl 
  --update 
Es wird nach Updates 
  gesucht... 
Updates werden 
  heruntergeladen... 
Updates werden 
  installiert... 
Diese Änderung wird beim nächsten vollständigen Neustart von WSL wirksam. Führen Sie wsl--shutdown aus, um ­einen Neustart zu erzwingen.
Kernel-Version: 5.10.43 
Microsoft betrachtet WSL als allein stehende Komponente des Windows-Betriebssystems, die von Windows Update und Co. nicht oder nur peripher auf dem aktuellsten Stand gehalten wird. Die Ausführung des Kommandos ermöglicht uns, unser Subsystem auf den aktuellsten Stand zu bringen. Nach dem zum Update obligatorischen Neustart zeigt sich die Eingabeaufforderung mitunter bockig – die Eingabe von WSL wird nach folgendem Schema mit einer Fehlermeldung abgelehnt:
PS C:\WINDOWS\system32&gt; wsl 
Das System kann den angegebenen Pfad nicht finden. 
Öffnen Sie im nächsten Schritt Microsoft Edge und geben Sie den URL https://aka.ms/wslstore ein. Nach einem  Druck auf die Eingabetaste bietet Windows 11 daraufhin an, den Micro­soft Store zu öffnen – bejahen Sie dies und installieren Sie Ubuntu wie in Bild 2 gezeigt analog zu jeder anderen Windows-Applikation.
Windows 11betrachtet Ubuntu als vollkommen reguläre App(Bild 2) © Autor
In sehr seltenen Fällen bockt Windows an dieser Stelle weiter und verweigert die Installation. Starten Sie in diesem Fall eine PowerShell, die ebenfalls mit Administratorrechten ausgestattet sein muss. Die Eingabe des nachfolgenden Kommandos sorgt dann für die abermalige Freischaltung der WSL-Engine:
Enable-WindowsOptionalFeature -Online -FeatureName 
  Microsoft-Windows-Subsystem-Linux 
Im nächsten Schritt klicken Sie im Windows Store auf den Öffnen-Button, um die Ubuntu-Distribution in Ihrem WSL-Container zur Ausführung zu bringen. Im Rahmen des ersten Starts fordert Ubuntu Sie dann – ganz analog zu einem klassischen Unix – auf, sich für einen Benutzernamen und ein Passwort zu entscheiden.Danach setzt das System Sie auch schon wie in Bild 3 gezeigt in einer Kommandozeile ab, die über das Veraltet-Sein der heruntergeladenen Distribution informiert.
Ubuntu läuft, ist aber nicht aktuell(Bild 3) © Autor
Dieses unter Linux keineswegs unübliche Problem erweist sich bei der Arbeit mit WSL als ärgerlich, da der Microsoft Store die Ubuntu-Distribution als Barebone-Release ausliefert, der insbesondere ohne grafische Applikationen auskommen muss. Das Nachinstallieren von Paketen mittels APT-Get führt nicht zum Ziel, weil die vorgehaltenen Paketquellen veraltet sind.Im ersten Schritt ist es deshalb erforderlich, nach folgendem Schema eine Aktualisierung zu befehligen:
tamhan@DESKTOP-6DC178D:~$ sudo apt update 
... 
E: Release file for http://archive.ubuntu.com/ubuntu/
  dists/focal-updates/InRelease is not valid yet 
  (invalid for another 1h 35min 11s). Updates for this 
  repository will not be applied.     
Idealerweise läuft dieser Prozess durch. Bekommen Sie wie abgedruckt einen Zeitfehler, so haben wir eine weitere Besonderheit der WSL-Ausführungsumgebung gefunden. Die für die Ausführung des Linux-Betriebssystems verantwortliche virtuelle Maschine hat ihre eigene Systemzeit, die sie im Rahmen des Starts der VM aus der dann auf der Workstation geltenden Zeit entnimmt. Adjustieren Sie die Uhrzeit des Windows-Systems, so schlägt diese Änderung erst nach ­einem Neustart der VM in die Unix-Umgebung durch – eine durchaus lästige Hürde für Quereinsteiger.Nach dem erfolgreichen Aktualisieren der Paketquellen können wir wie in einer gewöhnlichen Linux-Distribution neue Applikationen herunterladen. Für einen ersten Versuch bietet sich Gimp an; das Grafikverarbeitungsprogramm lässt sich nach folgendem Schema armieren:
tamhan@DESKTOP-6DC178D:~$ sudo apt install gimp 
Reading package lists... Done 
Die Ausführung erfolgt durch Eingabe des folgenden Kommandos:
tamhan@DESKTOP-6DC178D:~$ gimp 
Error spawning command line "dbus-launch --autolaunch=
  --binary-syntax --close-stderr": Child process exited 
  with code 1 

(gimp:3531): Gtk-WARNING **: 07:54:08.894: Unable to 
  locate theme engine in module_path: "pixmap", 
Lohn dieser Mühen ist, dass Gimp dann wie in Bild 4 gezeigt startet.
Die Bildverarbeitungist einsatzbereit(Bild 4) © Autor
Beachten Sie, dass das Gimp-Fenster auch in der Taskleiste der Workstation dargestellt wird. Linux-betriebene GUI-Programme zeigt Windows 11 mit einem kleinen Pinguin-Symbol an, das Sie bei aufmerksamer Betrachtung der Screenshots erkennen.

Integrative Spiele

Ein Blick auf Bild 4 informiert uns darüber, dass die Ubuntu- beziehungsweise Linux-Applikation aus Sicht von Windows 11 ein Fenster wie jedes andere ist. Sie können die Applikation frei am Bildschirm verschieben, gerade so, als ob es eine native Windows-11-Applikation wäre.Als nächster Test bietet sich die Interaktion mit dem Dateisystem an. Auf WSL 2 basierende virtuelle Maschinen binden unter /mnt/ für jedes in der Windows-Workstations befindliche Laufwerk ein virtuelles Abbild ein, über das Programme mit den dort befindlichen Dateien interagieren. Unsere Gimp-Installation kann sich eine auf dem Windows-11-Desktop befindliche Datei greifen, um diese danach zu bearbeiten.Interessant ist in diesem Zusammenhang, dass das in Gimp über das Menü auslösbare Aufzeichnen von Screenshots zum Zeitpunkt der Fertigstellung dieses Artikels ein komplett schwarzes Bitmap zurückliefert: Die in Bild 1 gezeigte Architektur ist nicht in der Lage, den Auslieferungsprozess von Bilddateien umzukehren.Als nächster Test bietet sich an, einen Texteditor zu installieren:
tamhan@DESKTOP-6DC178D:~$ sudo apt install gedit 
Seine Aktivierung lässt sich dann ebenfalls nach folgendem Schema bewerkstelligen:
tamhan@DESKTOP-6DC178D:~$ gedit 
Lohn der Mühen ist das in Bild 5 gezeigte Zusammenspiel der beiden Programme. Sowohl Gedit als auch sein Windows-Äquivalent Notepad.exe sind dabei zum Austausch von Daten über die Zwischenablage befähigt – „einfache“ Payloads wie Texte makelt WSLg zwischen den Welten.
Linux- und Windows-Editor, von Windows 11 vereint(Bild 5) © Autor

Fazit

Microsoft kommt mit WSLg Satya Nadellas Vision, einfach „irgendwo an der Wertschöpfungskette zu partizipieren“, einen­ großen Schritt näher. Sofern Ihre Linux-Applikation nicht exzessiv rechenintensiv ist, sollte sie in der von WSLg zur Verfügung gestellten Ausführungsumgebung problemlos laufen.Für „zwischen den Welten“ lebende Entwickler wie den Autor dieser Zeilen stellt sich an dieser Stelle natürlich die Frage, welches Betriebssystem man bevorzugt. Der Autor empfindet auf seiner Hardware, dass Ubuntu besser performt – für Dragon, Visual Studio und Target 3001 lohnt es sich nicht, einen kompletten Wechsel des Betriebssystems vorzunehmen. Wer allerdings den Gutteil seiner Arbeit unter Windows erledigt und nur ein oder zwei Linux-Programme vermisst, spart sich bei Einrichtung von WSLg den einen oder anderen „context switch“ – eine nach Ansicht des Autors mehr als empfehlenswerte Investition.

Neueste Beiträge

DWX hakt nach: Wie gestaltet man intuitive User Experiences?
DWX hakt nach: Wie gestaltet man intuitive User Experiences? Intuitive Bedienbarkeit klingt gut – doch wie gelingt sie in der Praxis? UX-Expertin Vicky Pirker verrät auf der Developer Week, worauf es wirklich ankommt. Hier gibt sie vorab einen Einblick in ihre Session.
4 Minuten
27. Jun 2025
„Sieh die KI als Juniorentwickler“
CTO Christian Weyer fühlt sich jung wie schon lange nicht mehr. Woran das liegt und warum er keine Angst um seinen Job hat, erzählt er im dotnetpro-Interview.
15 Minuten
27. Jun 2025
IoT neu eingebunden - Integration und Verwaltung von IoT-Geräten mit Azure IoT Operations
Wie sich das neue Azure IoT Operations von bestehenden Azure-Diensten unterscheidet, welche Technologien dabei zum Einsatz kommen und wann sich der Umstieg lohnt.
16 Minuten
15. Jun 2025
Miscellaneous

Das könnte Dich auch interessieren

UIs für Linux - Bedienoberflächen entwickeln mithilfe von C#, .NET und Avalonia
Es gibt viele UI-Frameworks für .NET, doch nur sehr wenige davon unterstützen Linux. Avalonia schafft als etabliertes Open-Source-Projekt Abhilfe.
16 Minuten
16. Jun 2025
Mythos Motivation - Teamentwicklung
Entwickler bringen Arbeitsfreude und Engagement meist schon von Haus aus mit. Diesen inneren Antrieb zu erhalten sollte für Führungskräfte im Fokus stehen.
13 Minuten
19. Jan 2017
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige