Cymaphore

Now and then

Our world is made of glass

31.03.2016, 14:23 Linux-Subsystem für Windows 10 im grundsätzlichen Vergleich mit Virtualisierung, coLinux und Cygwin

Microsoft hat in Zusammenarbeit mit Canonical ein neues Windows-Subsystem entwickelt, mit dem eine Nutzung von Linux-Software unter Windows möglich werden soll. In diesem Beitrag möchte ich erklären, warum der Ansatz sich deutlich von bestehenden Lösungen wie Cygwin, coLinux und Paravirtualisierung unterscheidet. Darüber hinaus setze ich mich ein wenig mit der Bedeutung dieses Subsystems auseinander.

Virtualisierung

Nutzt man Linux paravirtualisiert unter Windows, etwa mittels Hyper-V, VMWare oder VirtualBox, läuft ein grundsätzlich unverändertes Linux-System als virtualisierter Gast. Dem System werden je nach Umsetzung Images, Speichermedien oder Dateipfade, ein Anteil am RAM, die Nutzung einer oder mehrerer CPUs und Netzwerkszugriff mittels Bridging, TAP-Interfaces, usw., ermöglicht. Dabei wird entweder die entsprechende Hardware (Netzwerkkarte, Grafikkarte, etc.) emuliert oder eigene Gerätetreiber ermöglichen eine schlanke Umsetzung und Mitnutzung der Fähigkeiten des Hostsystems.
Der Vorteil daran ist, dass man ein vollständiges und relativ eigenständiges Linux-System hat, dass man bei Bedarf starten und beenden kann. Andererseits hat dieser Lösungsansatz einen erheblichen Overhead. Prozess-Scheduling, Speicherverwaltung, Dateisysteme, all das läuft eigenständig im Gastsystem ab. Viele Aufgaben werden somit mehrfach ausgeführt, womit es sich um eine solide aber auch aufgeblähte, starre und oftmals schlecht skalierbare Lösung handelt. Andererseits lässt sich ein solches Gastsystem relativ unkompliziert auf andere Rechner und sogar eine physikalische Maschine übertragen und schottet das Host-System relativ gut vor dem Gastsystem ab.

coLinux

Bei coLinux handelt es sich um einen Linux-Kernel, der als Windows-Anwendung übersetzt und ausgeführt wird. Der Kernel stellt dabei Fähigkeiten des Host-Systems in Form von Geräten und ähnlichem der Linux-Umgebung zur Verfügung. Dieser Lösungsansatz ist grundsätzlich leichtgewichtiger und flexibler als die Nutzung von Paravirtualisuerung, jedoch bleibt ein bedeutender Teil des Overheads durch den Linux-Kernel und weitgehend eigenständige Prozess- und Speicherverwaltung bestehen.

Cygwin

Bei Cygwin handelt es sich um eine Werkzeugsammlung rund um eine Bibliothek, die POSIX- und bestimmte GNU/Linux-Funktionen in Win32-Aufrufe übersetzt. Anwendungen laufen als grundsätzlich normale Windows-Tasks und nutzen indirekt die entsprechenden Windows-Funktionalitäten. Cygwin ist eine eigenständige Umgebung die nicht binärkompatibel zu Linux ist. Anwendungen müssen also für Cygwin compiliert werden und nutzen dabei das Windows-eigene PE-Format („.exe“ und „.dll“ Dateien). Als Schnittstelle zum Betriebssystem dient eine Bibliothek (cygwin1.dll), die die Umsetzung der Aufrufe vornimmt.
Cygwin verfügt über eine umfangreiche und gut gepflegte Sammlung von Paketen und die Nutzung vieler für UNIX-artige Betriebssysteme geschriebener Programme ist vergleichsweise unkompliziert möglich. Andererseits sind viele Funktionalitäten, wie zum Beispiel Datei- und Prozessrechte und Zugriffe auf Geräte nur eingeschränkt umgesetzt und durch die Art der Integration sind oftmals Anpassungen an UN*X-Software und ihrer Build-Umgebung notwendig, bevor sie zuverlässig und einwandfrei unter Cygwin genutzt werden kann.

Linux-Subsystem

Der von Microsoft im Rahmen der „Build 2016“ vorgestellte Ansatz über ein eigenes Windows-Subsystem geht dabei einen anderen, mit Wine oder der Binärkompatibilität von FreeBSD mit Linux vergleichbaren weg.
Hierbei wird direkt eine Unterstützung für das ELF-Format und die Systemaufrufe umgesetzt. Die Absicht dabei ist es, Windows mittels des neuen Subsystems binärkompatibel zu GNU/Linux zu machen und Funktionen des Windows-Kernels über Linux-Schnittstellen bereit zu stellen.
Dieser Lösungsansatz, sofern kompetent, vollwertig und qualitativ hochwertig umgesetzt, bietet ein hohes Maß an Kompatibilität bei gleichzeitig minimalem Overhead. Den Entwicklern des neuen Subsystems kommt dabei entgegen, dass bei der Konzeption des NT-Kernels derartiges bereits vorgesehen und teils umgesetzt (OS/2-, POSIX-, Interix-, MS-DOS- und WOW64-Subsystem) wurde.

Bedeutung und Perspektive

Einige Leute werden die berechtigte Besorgnis äußern, dass dies ein Versuch ist, mittels der guten alten EEE-Strategie der Linux-Plattform zu schaden. Nach dem aktuellen Wissensstand sieht es für mich aber nicht danach aus. Microsoft ist mit seinen Bemühungen, Windows als Plattform für Internet-, „Cloud-“ sowie High-Performance-Dienste zu etablieren in Anbetracht des investierten Aufwandes bislang alles in allem grandios gescheitert.
Auch der Versuch, erst mittels ActiveX, VBScript und JScript, später mit der „.NET“-Strategie und Silverlight dem Rest der Welt proprietäre Standards für das Internet aufzuzwingen und so unverzichtbar zu werden, ist nicht gelungen. Stattdessen haben sich größtenteils freie Standards und auf OpenSource-Systeme aufbauende Lösungen durchgesetzt. Der „Marktanteil“ beispielsweise des Internet Explorer ist von einst über 90 Prozent auf knappe 10 – 15 Prozent eingebrochen, Tendenz fallend. Besonders im Segment der Internet-Dienste mit einem derzeitigen Anteil von etwa 1,8 % an den Server-Betriebssystemen ist Microsoft heute nahezu völlig bedeutungslos.
In jüngster Vergangenheit hat Microsoft einige gravierende Strategiewechsel vorgenommen. Die Veröffentlichung der Visual Studio Community Edition, die Freigabe des .NET-Framework auf github unter OpenSource-Lizenzen oder auch die Portierung des MSSQL-Servers auf Linux wären vor nicht einmal zehn Jahren für Microsoft noch völlig undenkbar gewesen.
Microsoft scheint sich allmählich doch mit veränderten Realitäten abzufinden und von alten Strategien abzukehren. Im Wesentlichen sehe ich im Linux-Subsystem daher den Versuch, Windows für Entwickler attraktiver zu machen und in dem Bereich gegen GNU/Linux und OSX konkurrenzfähiger zu werden.
Ob das Subsystem ein Erfolg wird oder wie Projekt Astoria endet, ist noch nicht absehbar. Ich bin gespannt.
[ Link ]

0 Comments

Write Comment

Name:
eMail:
Comment:
Hint: Comment must have at least 4 characters.
Name is optional.
eMail-Address is optional and will never be published or shared in any way.
Feeds: Atom, RSS, List