Windows Subsystem Für Linux - Was macht das und braucht man das?

Windows liefert seit dem Start von Windows 10 ein interessantes Feature in seinem Betriebssystem mit, das meiner Meinung nach noch zu wenig Beachtung findet. Hinter der etwas sperrigen Bezeichnung „Windows Subsystem für Linux“ (WSL) versteckt sich dabei nicht weniger als Linux in Windows selbst. Aber braucht man das? Und was kann man damit machen?

Anmerkung: Ich benutze im Folgenden immer den Begriff „Linux“ um damit eine „Klasse“ von Betriebssystemen zu bezeichnen. Linux ist dabei nicht einfach Linux, es gibt viele verschiedene Varianten, sog. Distributionen, die sich voneinander unterscheiden. Insgesamt ist das nicht ganz einfach, aber ich will da nicht zu sehr in die Grabenkämpfe einsteigen und bin deshalb etwas unscharf in der Definition...

Do one thing well

Um die beiden vorigen Fragen zu beantworten, muss man zuerst ein wenig in die „Philosophie“ hinter Linux/Unix blicken. Ein wichtiger Punkt dabei ist das Mantra „Do one thing and do it well“, frei übersetzt „tue eine Sache und die richtig gut“.

Diese Herangehensweise an die Entwicklung von Software führt dazu, dass viele Programme für Linux-Betriebssysteme einen vermeintlich geringeren Funktionsumfang aufweisen oder sehr spezialisiert daherkommen.

Sehr schwierige Probleme lassen sich so aber in Teilprobleme zerlegen und dann durch spezialisierte Software lösen. Im Gegensatz zu dem Ansatz anderer Betriebssysteme der mit „da gibt es ein Programm für genau diese Aufgabe“ beschreiben lässt, ist Linux hier also eher wie ein Baukasten mit kombinierbaren Teilen zu sehen.

Aufgrund der unglaublichen Verbreitung von Linux ist auch der eben beschriebene Baukasten entsprechend groß. Für vermutlich jede erdenkliche Aufgabe wird sich ein Programm finden lassen, dass genau diesen einen Teil der Arbeit sehr gut löst. Und: Vermutlich hatte irgendwer anders auch schon einmal das gleiche Problem und hat seine Lösung irgendwo dokumentiert, so dass man nicht bei Null anfangen muss.

Die Kommandozeile, dein Freund und Helfer

Unter Linux arbeitet man oft in der Kommandozeile. Das ist auch das, was einem das WSL standardmäßig anbietet, eine rein textbasierte Oberfläche. Das ist zunächst einmal recht unkomfortabel, denn man muss schließlich alle Befehle kennen (oder nachschauen), die man nutzen möchte. Man kann nirgends klicken sondern muss alles eintippen, darf sich dabei nicht vertippen, und besonders schön sieht das Ganze dann auch nicht aus.

Warum lieben Programmierer & Co. das trotzdem so? Weil es sehr effizient ist. Keine mehr oder weniger gute grafische Oberfläche steht der eigentlichen Arbeit „im Weg“ und man kann sich aus dem Baukasten eben genau die Teile zusammensuchen, die man benötigt. Vieles was man einmal gelernt und angewandt hat, kann man sogar wiederverwenden.

Besonders zugute kommt hierbei, dass die Ausgabe eines Programms in der Kommandozeile oft die Eingabe des nächsten Programms ist. Man kann also Befehle geschickt miteinander verknüpfen, um so Arbeit zu automatisieren und sich damit genau die eine Lösung zu „basteln“, die man braucht.

Beispiel: Bildoptimierung für viele tausend Dateien

Schauen wir uns ein Beispiel an: Mein Smartphone lädt alle Bilder automatisch, nach Jahr und Monat sortiert, in meine Nextcloud hoch. Die wiederum synchronisiert sich laufend mit meinem Computer, so dass ich überall Zugriff auf die Bilder habe. Jetzt möchte ich Speicherplatz sparen und dazu diese mehrere tausend Bilder komprimieren.

Es gibt jetzt vielleicht ein Programm, dass Bilddateien in Unterordnern finden und diese komprimieren kann. Vielleicht aber auch nicht. Unter Linux gibt es aber ganz sicher zwei Programme: Eins zum Finden von Dateien und eins zum Optimieren von Bildern.

Dateien finden kann man z.B. mit find, einem in Linux direkt integrierten Programm. Wie bereits erwähnt sind meine Bilder in Verzeichnissen organisiert, ich will diese Struktur auch beibehalten und mich da gar nicht weiter drum kümmern. Also nehme ich folgenden Befehl:

find . -type f -name *.jpg

Dieser Befehlt sucht ausgehend vom aktuellen Verzeichnis (dafür steht der Punkt), nach Dateien (Wert „f“ für den Typ-Parameter), die einem relativ einfachen Dateinamenmuster (*.jpg) entsprechen.

Für die Optimierung von JPEG-Dateien kann man zum Beispiel jpegoptim nutzen. Das nutzt standardmäßig eine verlustfreie Komprimierung, so dass die Bildqualität nicht schlechter wird.

Um unsere Bausteine zu verbinden, nutzen wir jetzt ein drittes kleines Hilfsprogramm namens xargs. Das nimmt die Ausgabe des einen Programms und gibt sie als Parameter an das zweite Programm weiter.

Der vollständige Befehl lautet damit:

find . -type f -name *.jpg | xargs jpegoptim

Das müsste ich jetzt in der Kommandozeile des WSL in einem Verzeichnis ausführen, das meine Bilder als Unterordner enthält.

Es gibt noch mehrere Wege diese Aufgabe zu bewältigen, aber an diesem Beispiel wird vielleicht ganz gut deutlich, wie praktisch es sein kann, wenn ich mir aus einem Baukasten verschiedene Teile heraussuchen und miteinander kombinieren und so ein neues Programm (im weiteren Sinne) erschaffen kann.

Und was vielleicht auch schon klar wird: So schwierig ist das gar nicht. Und es ist besonders auch nicht schwierig, jetzt auf Abwandlungen der genutzten Kommandos zu kommen, um ein anderes Ziel zu erreichen.

Im obigen find-Befehl kann ich den Dateinamenfilter zum Beispiel beliebig anpassen. Ich könnte nach einem bestimmten Dateityp suchen, ich kann aber auch Dateien suchen, die einen bestimmten Begriff im Dateinamen enthalten oder sonstiges.

Und statt an jpegoptim kann ich die gefundenen Dateien natürlich auch an alle möglichen anderen Programme übergeben, da sind der Fantasie fast keine Grenzen gesetzt.

Brauche ich das jetzt?

Was man mit der Kommandozeile des WSL anstellen kann, soll damit fürs Erste ausreichend präsentiert sein. Bleibt noch die zweite Eingangsfrage: Brauche ich das?

Ich glaube das WSL/die Kommandozeile und die Arbeit damit bietet sich vor allem für alle an, die oft mit wiederkehrenden oder gut automatisierbaren Aufgaben zu tun haben. Für einen Teil dieser Aufgaben gibt es die Windows Power Toys, aber die sind auf einen gewissen Funktionsumfang beschränkt, den Microsoft nützlich und integrierenswert fand.

Dateien optimieren/konvertieren geht, wie oben gezeigt, mit dem WSL sehr leicht von der Hand. Auch die Umwandlung z.B. von Videodateien, um diese in verschiedenen Formaten bereitzustellen, ist schnell und einfach gemacht. Videos von YouTube und anderen Plattformen herunterladen? Kein Problem, und das ohne dubiose Webseiten zu besuchen!

Programmierer kommen über das WSL darüber hinaus in den Genuss einer „richtigen“ Kommandozeile und können darüber z.B. Versionierungssoftware wie git oder auch andere Software sehr einfach auch aus einem Windows-Betriebssystem heraus nutzen. Das Erlebnis gleicht dabei in den meisten Fällen eben einer Linux-basierten Serverumgebung, so dass Installationsanweisungen aber auch Fehlermeldungen besser portierbar/reproduzierbar sind.

Um die Frage nochmal zu beantworten: Brauchen tut man das WSL vielleicht nicht unbedingt, aber für Poweruser mit speziell(er)en Anwendungen kann es eine sehr große Hilfe sein.

Wie kann ich das WSL aktivieren?

Das Windows Subsystem für Linux ist eine Systemkomponente, die man aktivieren kann. Ggf. ist danach ein Neustart des Systems notwendig.

Microsoft beschreibt die Aktivierung/Installation dieses Features ganz gut an dieser Stelle. Man kann aber auch über den Microsoft Store mit dem Stichwort „WSL“ einige Distributionen finden, die sich von dort installieren lassen. Dabei allerdings gut aufpassen, was man sich da gerade installieren will, wie immer gibt es schwarze Schafe, die einem Schadsoftware oder ähnliches reindrücken wollen.

Als Distribution würde ich Debian oder Ubuntu empfehlen. Das sind „anfängerfreundliche“ Distributionen (so hab ich sie zumindest wahrgenommen), die gleichzeitig eine Menge Software mitbringen, bzw. zur Installation anbieten.

Für die Zukunft werde ich einige Themen aufbereiten, an denen man das WSL in der Anwendung sehen kann.


Über mich

Ich bin gelernter Mediengestalter, studierter Druck- und Medientechniker und leidenschaftlicher Tüftler und Bastler.

Beruflich beschäftige ich mich mit der digitalen Transformation von Unternehmen, sowie der Automatisierung von Unternehmensprozessen, in der Druck- und Medienbranche. Mehr dazu findet sich im Lebenslauf.

Privat interessieren mich Kaffee(maschinen), Themen rund um Webentwicklung, das Internet im Allgemeinen und Speziellen und vieles, vieles mehr.

Ich freue mich auf Feedback per E-Mail unter kontakt@flomei.de, einen Euro für die Kaffeekasse oder etwas von meiner Amazon Wunschliste.