Was ist der Unterschied zwischen WSL, SFU, SUA / Interix, dem POSIX-Subsystem und Cygwin?

1218
itaton

Ich habe im msdn-Blog viele Informationen darüber gefunden, wie das Windows-Subsystem für Linux (WSL) funktioniert . Ich weiß, dass es auf der Echtzeitübertragung der Linux-Syscalls in NT-Syscalls basiert. Daher ist es möglich, unveränderte ELF-Binärdateien auszuführen.

WSL ist ein NT-Subsystem, also das Microsoft POSIX-Subsystem, die Windows-Dienste für UNIX (SFU) und das Subsystem für Unix-basierte Anwendungen (SUA) / Interix.

Cygwin dagegen ist eine Anwendung, die sich auf dem Win32-Subsystem befindet.

Im Blog heißt es, dass Programme für SUA neu kompiliert werden mussten. Da SUA (wie ich es verstehe) der Nachfolger von SFU ist, der wiederum der Nachfolger des POSIX-Subsystems ist. Ich gehe also davon aus, dass auch alle neu kompilierten Binärdateien benötigt werden.

Wenn dies der Fall ist, wie unterscheiden sich diese Vorgänger von WSL von Cygwin?

Ich bin auf der Suche nach einem Vergleich zwischen den zuvor genannten Systemen / Programmen und ihrer Funktionsweise "unter der Haube". (Insbesondere wie sich WSL von ihren Nachfolgern unterscheidet)

PS: Ich musste jetzt ein paar Links entfernen, da mein Ruf bei SU mich auf 2 beschränkt

4
Wir könnten jetzt ein richtiges Bash haben: https://brianreiter.org/2010/08/24/the-sad-history-of-the-microsoft-posix-subsystem/ Daniel Sokolowski vor 6 Jahren 0

2 Antworten auf die Frage

3
BeErikk

Bei SUA / SFU und Interix gibt es einen Unterschied. Wikipedia erklärt das ziemlich gut und ausführlich: Microsoft POSIX-Subsystem und Interix

Interix war eine BSD-Implementierung auf dem POSIX-Subsystem. Sie könnten es durch eine andere Implementierung wie GNU Debian oder NetBSD ersetzen (was getan wurde). SUA (2005) hat das POSIX-Subsystem geöffnet, sodass Sie es mit NT-Aufrufen erweitern und sogar gemischte Posix / Win32-Anwendungen ausführen können.

Leider hat Microsoft nie geeignete Entwicklungswerkzeuge veröffentlicht und sogar den Support ausgelagert. Es gab ein Forum, in dem Benutzer sich gegenseitig bei der Entwicklung und anderen Dingen unterstützen konnten. Die Supportfirma lieferte ein Repository mit einer breiten Palette von Binärpaketen. Schließlich stellte Microsoft die Finanzierung ein und so ziemlich alle Informationen über Interix verschwanden, als das Support-Unternehmen das Forum schloss.

Kurz gesagt: Die SUA-Posix-Anwendungen waren sehr schnell, wahrscheinlich die effizienteste, die Sie unter Windows ausführen konnten. Die Entwicklung war jedoch sehr schwierig, da in NT- und Posix-Systemdateien gehackt wurde, was sehr viel Spaß macht.

2
grawity

Interix / SFU / SUA ist ein leichtes Subsystem, das nur die Win32-Ebene des Userspaces durch eine Unix-libc ersetzt. Obwohl es für bestimmte Aufgaben einen "Subsystem-Treiber" (psxss) gibt, werden die ausführbaren Dateien von Windows PE (.exe) verwendet. Die libc verwendet immer noch NT-Kernel-Syscalls, Interix-Prozesse sehen fast vollständig aus wie Win32 oder native Prozesse und haben den gleichen Dateisystemzugriff.

Cygwin ist ähnlich, aber einfacher. Es ist vollständig als Userpace-Laufzeitbibliothek über Win32 (mit dem gelegentlichen NT-Aufruf) aufgebaut. Cygwin-Apps sind daher eigentlich nur Win32-Apps, die eine wirklich komische Libc verwenden.

Im Vergleich dazu ist WSL weitaus umfangreicher als SUA - der Lxss-Treiber implementiert Linux-Kernel-Syscalls anstelle von Benutzerraum-Bibliotheksfunktionen neu und kann unveränderte ELF-Binärdateien ausführen (das standardmäßige WSL-System ist Ubuntu-Standard). Die WSL-Umgebung ist größtenteils in sich abgeschlossen und ist praktisch eine virtuelle Maschine im "Benutzermodus Linux" mit sehr geringer Interaktion mit dem Host-Betriebssystem. Obwohl WSL-Prozesse in der gemeinsam genutzten Prozessstruktur angezeigt werden, können Sie / bin / sh nicht direkt ausführen. Sie müssen das gesamte WSL-System booten, was bash.exeim Hintergrund erfolgt. (Dazu gab es einen Blog-Post.)

Der wichtigste Unterschied zwischen ihnen ist die Tatsache, dass WSL dieselben Tools ausführen kann wie Ubuntu aus demselben Repository. Die einzige Ausnahme (zu diesem Zeitpunkt) sind die Tools mit einer Benutzeroberfläche. Ramhound vor 7 Jahren 0
Es ist keine seltsame libc. `Newlib` unterscheidet sich nur von` GNU libc`, da es hauptsächlich von BSD abgeleitet ist matzeri vor 7 Jahren 0
Wie lautet der erwähnte Blogbeitrag? https://blogs.msdn.microsoft.com/wsl/2016/10/19/windows-and-ubuntu-interoperability/ Stijn Sanders vor 7 Jahren 0