Was ist der Unterschied zwischen Windows Subsystem für Linux (WSL), Cooperative Linux (coLinux) und Cygwin?

742
Rinaldo Jonathan

Hat sich noch jemand an coLinux erinnert? Ich erinnere mich, dass es vor einigen Jahren für SpeedLinux und Portable Ubuntu verwendet wurde.

Es ist ziemlich klar, was coLinux macht, Linux irgendwie über Windows zu laufen, aber es kann eine echte Linux-Partition verwendet werden. Inzwischen kompiliert cygwin Linux-Apps für Windows.

Aber WSL? ist WSL näher an coLinux oder Cygwin?

3

1 Antwort auf die Frage

2
Bob

WSL wäre näher an coLinux als Cygwin.


Beachten Sie, dass Unix, POSIX und Linux unterschiedliche Dinge sind .

Cygwin ist eine POSIX-Kompatibilitätsebene, die auf dem Win32-Subsystem ausgeführt wird . Es hat ungefähr nichts mit Linux zu tun ; Es kann allgemein als "nur ein anderes Unix-ähnliches" behandelt werden, bei dem das Portieren von Programmen eine Neukompilierung und möglicherweise eine Änderung der Quelle erfordert und alles, was nicht für POSIX Linux spezifische Funktionen erfordert, wird wahrscheinlich nicht funktionieren.

WSL ist so konzipiert, dass sie ABI- kompatibel mit Linux ist. Es verwendet nicht den echten Linux-Kernel, ist jedoch so kompatibel, dass für Linux kompilierte Programme ohne Neukompilierung oder Übersetzung darauf laufen können. WSL ist Teil des NT-Kernels und existiert daher unabhängig vom Win32-Subsystem. Dies ähnelt der älteren SUA, obwohl dies ein POSIX-Subsystem (nicht Linux!) Auf dem NT-Kernel war.

coLinux führt einen echten (wenn auch modifizierten) Linux-Kernel aus. Auf Windows-Seite gibt es einen Treiber, der die Speicherverwaltung und den E / A-Zugriff ermöglicht. Konzeptionell ist es einer virtuellen Maschine am nächsten, jedoch mit einer engeren Integration zwischen Host und "Gast".


Aus der Sicht eines Programms sehen WSL und coLinux in etwa wie ein echter Linux-Kernel aus, der auf roher Hardware läuft. WSL hat (derzeit) mehr Einschränkungen und Macken, aber auch Unterstützung von Microsoft (Erstanbieter) und Wotks auf x86_64. coLinux ist ein echter Linux-Kernel und verhält sich wie Linux, während WSL eine Reinraumimplementierung des ABI ist.

Cygwin sieht Linux nicht näher als FreeBSD.

Ich stimme zu, dass Colinux vorerst viel besser ist. Es ist traurig, dass niemand es nach x86-64 portiert hat. Rinaldo Jonathan vor 5 Jahren 0
@ RinaldoJonathan Persönlich bevorzuge ich den WSL-Ansatz. IMO der CoLinux-Ansatz ist relativ fragil (schlecht definierte Schnittstellen zwischen den beiden Kerneln). Tatsächlich würde ich eine komplette VM über CoLinux nehmen. Aber es hängt davon ab, was Sie brauchen. Bob vor 5 Jahren 0