WSL – Das Linux-Subsystem
Mit dem Fall-Creators Update verlässt auch das Linux-Subsystem den Betastatus mit dem Linux-Distributionen, direkt aus dem Windows Store heraus, installiert werden können. Für Entwickler, die ihre Software für unterschiedliche Plattformen schreiben ist dieses Feature mehr als interessant. Software kann so direkt für Windows und Linux entwickelt werden, ohne mehrere Betriebssysteme oder VMs installieren zu müssen.
Features in das Suchfeld ein und öffnen Sie das Fenster Windows Features.
Windows-Subsystem für Linux und bestätigen mit OK. Der PC muss neugestartet werden, da WSL ansonsten nicht funktioniert.
Über den Windows Store können nun Linux-Distributionen installiert werden. Dabei können auch mehrere verschiedene Distributionen nebeneinander installiert werden. Suchen Sie im Windows Store nach Linux unter Windows ausführen und wählen Sie eine der Distributionen aus.
Herunterladen und warten bis die Linux-Distribution installiert ist. Ich habe mich für Ubuntu entschieden, welches nun als App über das Startmenü aufgerufen werden kann. Mit ca. 200 MB ist das Image sehr klein. Beim Öffnen wird es entpackt, was einerseits etwas dauert, andererseits den benötigten Speicherplatz etwas vergrößert. Trotz alledem bleibt der Speicherverbrauch moderat, denn es handelt es sich um eine Installation ohne GUI, so wie man auch einen Server vorfinden würde. Öffnet man die App wird einem eine Konsole angezeigt, die bei mir die Nachricht, Installing, this may take a few minutes…, anzeigt.
Danach wurde ich aufgefordert einen Benutzername und ein Passwort für den Defaultbenutzer anzugeben.
Bei mir war es nötig erst einmal ein Update durchzuführen:
sudo apt-get update sudo apt-get upgrade
Funktionsweise
Bei WSL handelt es sich nicht um virtuelle Maschinen. Stattdessen können Linux-Binaries tatsächlich in einer richtigen Linuxumgebung ausgeführt werden. Dabei teilt sich Linux Ressourcen wie das Dateisystem und den Networking Stack mit Windows.
Geben Sie unter Linux ifconfig
ein und unter Windows in einer Kommandozeile ipconfig
. Sie werden feststellen, dass die selbe IP verwendet wird.
Die installierte Linux-Distribution liegt in einem Unterverzeichnis von C:\Users\Username\AppData\Local\Packages.
Bei mir befinden sich alle Dateien der Installation unter C:\Users\Username\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs.
In C:\Users\Username\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs\mnt sind die Windows-Laufwerke mit Ihren Laufwerksbuchstaben gemountet.
ls /mnt/c
zeigt z.B. den Inhalt des Laufwerks C: an.
Mit WSL arbeiten
Auf dem Dateisystem arbeiten
Zusätzliche Laufwerke wie DVD-Laufwerke können manuell gemountet werden.
sudo mkdir /mnt/d sudo mount -t drvfs D: /mnt/d
Mit sudo umount /mnt/d
wird es wieder entfernt.
UNC-Pfade können ebenso gemountet werden.
sudo mkdir /mnt/share sudo mount -t drvfs '\\server\share' /mnt/share
Durch die einzelnen Anführungszeichen müssen die Backslashes nicht escaped werden.
Weitere Informationen können unter https://blogs.msdn.microsoft.com/wsl/2017/04/18/file-system-improvements-to-the-windows-subsystem-for-linux/ nachgelesen werden.
Vorinstallierte Anwendungen
Mit folgendem Befehl kann man sich eine Liste der installierten Anwendungen erstellen lassen, die in der Datei installed-apps.txt abgelegt wird:
apt list --installed &> installed-apps.txt
Diese kann z.B. mit vim angezeigt werden. Alternativ kann die Datei mit einem Editor unter Windows geöffnet werden. Sie liegt unter C:\Users\Username\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs\home\username\installed-apps.txt.
Wer die Liste durchgeht wird feststellen, dass auch schon ein paar Pakete installiert sind, die für die Entwicklung praktisch sind. So sind z.B. git, pyhton und perl schon vorinstalliert.
Windowsprogramme in WSL aufrufen
Es ist möglich in WSL Windows-Programme zu starten. Dazu muss nur die EXE aufgerufen werden.
sudo '/mnt/c/Program\ Files/Microsoft\ VS\ Code/Code.exe'
Leerzeichen müssen dabei escaped werden!
Unter https://blogs.msdn.microsoft.com/wsl/2016/10/19/windows-and-ubuntu-interoperability/ gibt es weitere Hintergrundinformationen zu dieser Funktion.