Ich gehöre nicht zu den Leuten, die Microsoft pauschal kritisch sehen. Im Gegenteil. Ich arbeite gerne mit Windows, ich nutze viele Microsoft-Produkte regelmässig, und ich habe grossen Respekt vor dem, was das Unternehmen in den letzten Jahren im Bereich Entwickler-Tools auf die Beine gestellt hat. Visual Studio Code, GitHub, TypeScript, .NET als Open Source, das alles sind Projekte, die unsere Branche geprägt haben. Eines der für mich persönlich wichtigsten Werkzeuge aus diesem Umfeld ist das Windows Subsystem for Linux, kurz WSL.
Ich nutze WSL 2 schon eine ganze Weile, sowohl beruflich bei Compresso als auch privat. In dieser Zeit hat sich das System vom interessanten Experiment zum festen Bestandteil meines Workflows entwickelt. Ich möchte in diesem Artikel deshalb nicht so tun, als wäre WSL für mich etwas Neues. Stattdessen will ich erklären, warum es technisch so spannend gebaut ist, wie es im Alltag funktioniert und wo sein wirklicher Mehrwert liegt.
Vom Übersetzer zur virtuellen Maschine
Die erste Version von WSL war ein technisch ambitioniertes Projekt. Microsoft hatte eine Übersetzungsschicht gebaut, die Linux-System-Calls in Echtzeit auf Windows-System-Calls übersetzte. Im Prinzip lief eine Linux-Distribution direkt auf dem Windows-Kernel, ohne echten Linux-Kernel und ohne Virtualisierung im Grunde das Gegenstück von Wine in Linux. Das war elegant, hatte aber Grenzen. Die Dateisystem-Performance war ein Dauerthema, viele Tools liefen schlicht nicht oder nicht korrekt, und Docker-Container waren auf diesem Weg nicht möglich.
Mit WSL 2 hat Microsoft den Ansatz neu gedacht. Statt einer Übersetzungsschicht bekommst du einen echten Linux-Kernel, den Microsoft selber pflegt und auf GitHub veröffentlicht. Dieser Kernel läuft in einer leichtgewichtigen virtuellen Maschine, gestartet über Hyper-V. Auf den ersten Blick klingt das nach mehr Komplexität, in der Praxis ist es deutlich runder. Performance, Kompatibilität und Tooling-Unterstützung sind seit der zweiten Version auf einem ganz anderen Level.
Hyper-V ist kein VirtualBox
Hier wird es technisch wirklich spannend, und ich finde das einen der faszinierendsten Aspekte der ganzen Konstruktion. Wenn du Virtualisierung von VirtualBox oder VMware Workstation kennst, hast du ein bestimmtes Modell im Kopf. Du installierst eine Anwendung auf deinem Betriebssystem, startest darüber eine VM, und diese VM läuft als Prozess innerhalb deines Hostsystems. Das nennt sich Type-2-Hypervisor oder hosted Hypervisor.