Windows 10: Linux aktivieren und parallel nutzen

  • Win10

  • HotPi
  • 1113 Aufrufe 0 Antworten

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Windows 10: Linux aktivieren und parallel nutzen

    Windows 10: Linux aktivieren und parallel nutzen
    16.8.2016 von Mattias Schlenker

    Seit dem Insider-Build 14316 und später dem Anniversary Update integriert Microsoft in Windows 10 ein Linux-Subsystem – Entwickler und Power-User profitieren davon.

    Am 30. März 2016 verkündete Microsoft, dass die Hölle zufrieren wird: Seit dem Windows-10-Build 14316 für Insider und nun dem Anniversary Update für Normalsterbliche erhalten Nutzer die Möglichkeit, unmodifizierte Linux-Programme unter Windows 10 auszuführen. Demonstriert wurde dies anhand einer zusammen mit Canonical entwickelten minimalen Ubuntu-Umgebung mit der Shell-Bash, Paketverwaltungstools und Editoren.


    Keine Virtualisierung

    Bemerkenswert ist, dass es sich bei der Linux- Umgebung um keine Container- oder Hypervisor-Lösung handelt. Tatsächlich ist das Linux-Subsystem eine Personality des Windows-Kernels, so wie es bereits die Subsysteme für 32- und 16-Bit-Applikationen (letzteres ist mittlerweile obsolet) sind.

    Die Entscheidung für die flexible Verwendung von Subsystemen hat Microsoft bereits mit OS/2 getroffen, das es schnell durch NT ablöste, wobei aber viele der dafür getroffenen Designentscheidungen beibehalten wurden. Das Linux-Subsystem täuscht Linux-Anwendungen einen Kernel 3.4 vor und stellt virtuelle Dateisysteme mit Gerätedateien (/dev) und Statusinformationen (/proc, /sys) bereit. Am ehesten vergleichbar ist diese Personality mit den ebenfalls in FreeBSD und Oracle/Sun Solaris existierenden Linux-Personalities.

    Das Linux-Subsystem ist derzeit nur verfügbar, wenn die Entwickleroptionen aktiv sind.

    Ganz aus Nächstenliebe handelt auch das neue Microsoft unter Satya Nadella nicht. Ursprünglich war für kommende Ausgaben von Windows 10 eine Android-Personality geplant, die es erlauben sollte, Android- Apps auf dem Windows-Desktop auszuführen, allerdings wurde Microsoft schnell klar, dass dieses Feature noch weniger Programmierer dazu bewegen würde, native Windows-Anwendungen zu entwickeln. So wurde das fast fertig entwickelte Feature umgewidmet.


    Es ist nun offiziell ein Entwicklerwerkzeug, das es gerade Webentwicklern ermöglichen soll, mit Pfaden und Tools exakt wie auf einem Produktivsystem zu arbeiten. Inoffiziell lassen sich durchaus grafische Anwendungen ausführen und geliebte Linux-Tools verwenden. Bei intensiver Interaktion werden aber die Grenzen der bisherigen Implementierung deutlich, doch dazu später mehr.


    Installation mit wenigen Klicks

    Die Installation gelingt mit wenigen Klicks, die allerdings gut über das ganze System verteilt sind: Zunächst gehen Sie in der App Settings (Einstellungen) auf Software/Für Entwickler, wo sie den Entwicklermodus aktivieren. Öffnen Sie dann die (klassische Desktop-Anwendung) Systemsteuerung, wo Sie zu Programme/Programme und Features/Windows Features aktivieren oder deaktivieren navigieren. In der Liste suchen Sie das Windows-Subsystem für Linux (Beta), aktivieren es und bestätigen die Auswahl mit OK. Starten Sie nun über die Programmsuche (Windows+Q) bash.exe - es handelt sich dabei noch nicht um die Linux-Shell bash, sondern einen Wrapper, der zuerst die Linux-Umgebung startet und dann darin die Shell ausführt. Da noch keine Linux-Umgebung installiert ist, bietet bash.exe an, das zusammen mit Canonical entwickelte minimale Linux- System zu installieren. Im Zuge der Linux- Installation müssen Sie auch ein Passwort vergeben, ein PAM-Modul (Pluggable Authentication Module), das Nutzernamen und Passworte mit Windows synchronisiert, existiert noch nicht.


    Nach der Installation steht bereits das erste Sicherheitsupdate an. Im ersten Schritt werden die Paketlisten aktualisiert, im zweiten neue Pakete heruntergeladen und installiert. Linux-Nutzer kennen die Befehlsfolge bereits:
    •sudo apt-get update sudo apt-get -y dist-upgrade


    Aktualisieren Sie in einem Zug gleich die Windows Developer Preview, so lohnt sich der folgende Reboot wenigstens.


    Mittels apt-get installieren Sie beliebige Programme aus Ubuntus Repositories.


    Wenn Sie mögen, können Sie anschließend in der Linux-Konsole Software nachinstallieren. Wenn Sie eine komplette Desktopumgebung inklusive GIMP, Dateimanager, Firefox, Thunderbird nachinstallieren mögen, verwenden Sie beispielsweise (hier für XFCE):
    •sudo apt-get install xubuntu-desktop


    Um den Webserver Apache nebst PHP5 zu installieren, genügt:
    •sudo apt-get install apache2 libapache2-mod-php5


    Recht häufig schlägt die Nachkonfiguration von Paketen fehl, was daran liegt, dass Gerätedateien fehlen. In der Regel hilft in solch einem Fall, mit “sudo apt-get -f install” problematische Pakete zu reparieren. Das -f steht hier für fix (reparieren). Und wenn der eben installierte Apache-Webserver nicht erreichbar ist, dann hilft die Änderung der Windows-Firewall-Konfiguration. Wenn Sie nach bestimmten Paketen suchen, verwenden Sie dafür den Befehl “apt-cache search SUCHBEGRIFF”. Um gefunden zu werden, muss der Suchbegriff ein Teil des Paketnamens oder der Beschreibung sein. Der Start von Diensten ist so eine Sache: Ohne Terminalfenster geht gar nichts, und in diesem starten auch nur die Shell und ein eigenes minimales “init”. Soll also auf einen Apache-Webserver zugegriffen werden, muss dieser im Bash-Fenster explizit mit sudo “service apache2 start” gestartet werden. Gleiches gilt beispielsweise für den Datenbankserver mysql oder möglicherweise für bei der Web-Entwicklung ebenfalls benötigte Mailserver.


    Und wo ist nun mein Linux?

    Navigieren Sie im Windows-Explorer zum versteckten Verzeichnis C:\Users\IhrName\ AppData\Local\lxss\rootfs. Sie befinden sich nun im Root-Dateisystem des Linux- Subsystems (lxss). Wer schon Webseiten entwickelt hat, wird beispielsweise in /var/ www/html nach HTML- oder PHP-Dateien suchen beziehungsweise sie dort ablegen.

    Theoretisch erlaubt die Verwendung eines eigenen Root-FS für jeden Nutzer einen leichten Austausch des Linux, das über die Linux-Personality verwendet werden soll - es genügt, die Dateien und Ordner unterhalb von rootfs zu löschen und durch ein beliebiges Root-Dateisystem zu ersetzen. Dabei ist darauf zu achten, dass Linux-Rechte korrekt behandelt werden: Das Entpacken ist folglich innerhalb des Linux-Subsystemes durchzuführen, das Verschieben kann im Windows-Explorer per Drag-and-Drop erfolgen. In diesem Kontext sei übrigens noch erwähnt, dass die Heimatverzeichnisse des angelegten Linux-Nutzers sowie von Root eine Ebene oberhalb des rootfs liegen und erst vom Linux-Subsystem (LXSS) ins Dateisystem eingeblendet werden.

    Die Trennung der Rechte von außerhalb und innerhalb des Linux-Subsystems führte beim Autor anfangs zu Verwirrungen. Tatsächlich besitzt der angemeldete Windows-Nutzer von außerhalb des Subsystems volle Root-Rechte, von innerhalb kann er aber nur Dateien öffnen und Prozesse starten, wie es die Linux-Zugriffsrechte zulassen. Wer das Linux-Subsystem beispielsweise zur Programmierung oder Webentwicklung verwenden möchte, sollte die Projektdateien von innerhalb des Subsystems kopieren, mit der Versionsverwaltung auschecken oder anlegen - leere Dateien lassen sich mit “touch dateiname” erstellen. Setzen Sie anschließend mit chmod und chown innerhalb des Linux-Subsystems die Linux-Berechtigungen. So vorbereitete Dateien können Sie dann mit jedem beliebigen nativen Windows-Editor oder Ihrer Lieblings-Entwicklungsumgebung bearbeiten.


    Entwicklers Traum

    Und diese Möglichkeit, auf das komplette Linux-Dateisystem von Windows aus zuzugreifen, macht das neue Feature so attraktiv für Entwickler: Wer Anwendungen mit Toolkits wie Qt entwickelt, kann parallel testen, ob die vorgenommenen Anpassungen an Feinheiten der jeweiligen Systeme kompiliert werden können und direkt laufen. Auch Webentwickler können Projekte nun in einer Umgebung entwickeln, die weitgehend der späteren Serverumgebung entspricht. Natürlich konnte man all dies auch mit virtuellen Maschinen. Doch diese haben zwei entscheidende Nachteile: Zum einen zweigen sie dauerhaft Arbeitsspeicher ab - Entwickler tendieren daher dazu, das Notebook mit acht Gigabyte RAM herumzuschleppen. Künftig können sie die Präsentation beim Kundenundefined auch mit dem Windows-Tablet mit eher mageren zwei Gigabyte RAM durchführen. Ein zweiter Punkt ist der gemeinsame Zugriff auf Dateien und Ordner. In virtuellen Maschinen muss dies über Shared Folders oder Verzeichnis-Freigaben realisiert werden, nicht immer istes ganz einfach, einen von Windows freigegebenen Ordner an der richtigen Stelle im Linux-Dateisystem einzuhängen. Diese Beschränkung fällt nun weg: man hat mit jedem Windows-Programm Zugriff auf jede Datei in der Linux-Umgebung.

    Zeitgleich mit der Linux-Umgebung für Windows hat Microsoft auch die Visual-Studio-Unterstützung für Linux vorgestellt. Dabei greift Microsoft auf den kleinen Trick zurück, die Quellcode-Dateien per SCP zu einem Linux-Rechner zu schicken und sie dort in einer SSH-Sitzung zu kompilieren. Das Prozedere ist prinzipiell auch mit der Linux-Umgebung möglich, allerdings muss dann als SSH-Server zunächst Dropbear verwendet und dieser eben explizit in einem Bash-Fenster gestartet werden, bevor das Linux-Feature des Visual Studio genutzt werden kann. Mittelfristig dürfte zu erwarten sein, dass Microsoft die Linux-Umgebung direkt heranzieht, wenn sie vorgefunden wird.


    Kein Zugriff auf Windows-Prozesse

    Auffällig ist, dass LXSS keinen Zugriff auf Windows-Prozesse hat, dabei zeichneten sich bisherige Subsysteme immer dadurch aus, dass sie auch Prozesse anderer Subsysteme starten und mit diesen interagieren konnten.

    Dies dürfte als Überbleibsel des ursprünglichen Verwendungszwecks als Android-Subsystem zu sehen sein. Mittelfristig wäre es für Systemadministratoren sicher ein tolles Feature, wenn es möglich wäre, einen SSH-Dienst mit Administratorrechten zu starten und in diesem mit Windows-Tools wie msiexec.exe oder wusa.exe Software aktualisieren und installieren zu können. Gerade wer serverseitig viel mit Linux und Samba arbeitet, schätzt es, wenn er auch clientseitig mit Linux-Tools automatisieren kann.


    Wo Licht ist, ist auch Schatten

    Wer ernsthaft versucht, mit LXSS zu arbeiten, läuft allerdings an der ein oder anderen Stelle gegen eine Wand. Ein sehr großes Ärgernis ist das unzureichend befüllte /proc und /sys, welches bei vielen Diensten beispielsweise dafür herangezogen wird, zu bestimmen, ob auf Festplatten ausreichend freier Platz verfügbar ist oder nicht. Workarounds, welche nach Identifizierung des LXSS auf eine Größenabfrage verzichten, sind nicht sehr aufwendig, allerdings dürften viele Linux-Entwickler - zurecht - zunächst Microsoft auffordern, die betreffenden Einträge im /proc und /sys doch mit sinnvollen Werten zu füllen.

    Interaktives SSH-Login und Terminals funktionieren noch nicht.

    Auch /dev ist nicht ganz so bevölkert, wie man das von Linux kennt. Größtes Problem ist das Fehlen von /dev/pts, einem Verzeichnis für die Dateideskriptoren virtueller Terminals. Das hat zur Folge, dass kein interaktives SSH-Login möglich ist und auch andere Programme, die Kindprozesse in einem virtuellen Terminal ausführen, dies nicht tun können. Schließlich fehlen einige Systemaufrufe, die zur Folge haben, dass Programme unvermittelt abstürzen.


    Nutzen für den Normalanwender

    Bleibt die Frage nach dem Nutzen für Normalanwender. Wer schon immer einmal die Dateisystemstruktur von Linux kennenlernen wollte oder erste Schritte unter Linux typischen Shell- oder Scriptsprachen wagen möchte, findet mit LXSS eine schlanke Umgebung vor. Und Webentwicklung ist ja auch im Hobby-Bereich weitverbreitet. Der Autor ist beispielsweise großer Fan des Textsatzsystems LaTeX, welches unter Linux leichter zu erweitern ist als unter Windows.

    Gimp: Mit Xming sind auch grafische Anwendungen möglich – allerdings bei durchwachsener Stabilität.

    Auch erlaubt die Shell unter Linux einfaches, automatisiertes Verarbeiten von Texten. Die Erstellung von Dokumenten mit LaTeX ist damit auch ein guter Grund, LXSS zu installieren. Für die Verwendung grafischer Programme ist LXSS nur bedingt geeignet: Mit Xming ist die Font-Darstellung nicht vollständig wie unter Linux, ohne DBUS gibt es keine hübschen Themes für Gtk-Anwendungen, und gelegentliche Abstürze machen LXSS mit X11 nur für Entwickler interessant, die mal kurz auf zwei Plattformen parallel entwickeln möchten.


    Fazit

    Auf der Kommandozeile und als Entwicklungshilfe überzeugt LXSS bereits. Leider schimmert an vielen Stellen durch, dass der Fokus von LXSS einst auf der Isolierung von Android-Apps lag. Bis LXSS auch für Endanwender eine vollwertige Alternative zu virtuellen Maschinen ist, muss Microsoft noch einiges an Fleißarbeit leisten, zunächst in /dev, /proc und /sys - in einigen Fällen wird Microsoft/Canonical aber auch Änderungen an Startscripten vornehmen müssen, um korrekt zu funktionieren. Bis dahin ist LXSS eher etwas für technisch versierte Nutzer, die den Schwerpunkt auf Enwicklung legen (egal ob Anwendung oder Web, egal ob als Hobby oder professionell) und eine leichtgewichtige Möglichkeit der parallelen Nutzung auch auf vergleichsweise schwacher Hardware suchen.


    Quelle: Windows 10 und Linux parallel nutzen: Das bringt's - PC Magazin