В чем разница между Windows Subsystem для Linux (WSL), Cooperative Linux (coLinux) и Cygwin?

762
Rinaldo Jonathan

Кто-нибудь еще помнил coLinux? Я помню, что он использовался для SpeedLinux и Portable Ubuntu несколько лет назад.

Довольно ясно, что делает coLinux, как-то работает под управлением Windows поверх Windows, но может использовать настоящий раздел linux. Тем временем cygwin перекомпилирует linux-приложения для использования в Windows.

Но WSL? WSL ближе к coLinux или Cygwin?

3

1 ответ на вопрос

2
Bob

WSL будет ближе к coLinux, чем Cygwin.


Имейте в виду, что Unix, POSIX и Linux - это разные вещи .

Cygwin - это уровень совместимости POSIX, который работает поверх подсистемы Win32 . Это не имеет ничего общего с Linux ; в широком смысле его можно рассматривать как «просто еще один Unix-подобный», где для переноса программ требуется перекомпиляция и, возможно, модификация исходного кода, а все, что требует специфичных для POSIX Linux функций, вероятно, не будет работать.

WSL разработан, чтобы быть ABI- совместимым с собственно Linux. Он не использует настоящее ядро ​​Linux, но совместим так, что программы, скомпилированные для Linux, могут работать на нем без перекомпиляции или перевода. WSL является частью ядра NT, поэтому существует независимо от подсистемы Win32. Это похоже на более старый SUA, хотя это была подсистема POSIX (не Linux!) Поверх ядра NT.

coLinux использует настоящее (хотя и модифицированное) ядро ​​Linux. На стороне Windows он существует как драйвер, который обеспечивает управление памятью и доступ к вводу / выводу. Концептуально, это наиболее близко к виртуальной машине, хотя с более тесной интеграцией между хостом и гостем.


С точки зрения программы, и WSL, и coLinux выглядят примерно так же, как настоящее ядро ​​Linux, работающее на сыром оборудовании. WSL (в настоящее время) имеет больше ограничений и причуд, но также имеет поддержку сторонних разработчиков (Microsoft) и wotks на x86_64. coLinux - настоящее ядро ​​Linux, поэтому будет вести себя так же, как Linux, тогда как WSL - это реализация ABI для чистых помещений.

Cygwin не выглядит ближе к Linux, чем, скажем, FreeBSD.

Я согласен, что сейчас Colinux намного лучше. Грустно, что никто не портировал его на x86-64. Rinaldo Jonathan 6 лет назад 0
@RinaldoJonathan Лично я предпочитаю подход WSL. IMO подход coLinux относительно хрупок (плохо определены интерфейсы между двумя ядрами). На самом деле, я бы взял полную виртуальную машину поверх coLinux. Но это зависит от того, что вам нужно. Bob 6 лет назад 0