web-dev-qa-db-ja.com

WindowsサブシステムLinux(WSL)、Cooperative Linux(coLinux)、およびCygwinの違いは何ですか?

誰かがまだcoLinuxを覚えていますか?私はそれがSpeedLinuxとPortable Ubuntuに数年前に使われたのを覚えています。

CoLinuxがWindows上でLinuxを実行しているのは明らかですが、実際のLinuxパーティションを使用することができます。その間cygwinはWindowsで使用するためにLinuxアプリを再コンパイルしています。

しかしWSL? WSLはcoLinuxやCygwinに近いのでしょうか。

13

WSLはCygwinよりcoLinuxに近いでしょう。


Unix、POSIX、Linuxは違うものです

Cygwinは Win32サブシステム の上で動作するPOSIX互換レイヤです。これはLinuxとはほとんど関係ありません。プログラムを移植するのに再コンパイルが必要で、場合によってはソースの修正が必要な場合は、広く「単なるUnixライクな」ものとして扱うことができ、POSIX以外のLinux固有の機能を必要とするものはおそらく機能しません。

WSL 1 は、 ABI - Linuxとの互換性を保つように設計されています。 。本物のLinuxカーネルを使わないしないが、Linux用にコンパイルされたプログラムが実行できるように 互換性がある 再コンパイルまたは翻訳せずにそれに。 WSLはNTカーネルの一部なので、Win32サブシステムとは無関係に存在します。これは古いSUAと似ていますが、それはNTカーネル上のPOSIX(Linuxではありません!)サブシステムでした。

WSL 2 はまだ利用できませんが、軽量のVM上で本物のLinuxカーネルを実行します。それはWSL 1と同様のWindows統合を約束しますが、本物のLinuxカーネル(カーネルモジュール、ファイルシステムなど)で動作します。

coLinuxは、実際の(修正されているが)Linuxカーネルを実行します。 Windows側では、メモリ管理とI/Oアクセスを提供するドライバとして存在します。概念的には、ホストと「ゲスト」の間の緊密な統合はありますが、仮想マシンに最も近いものです。


プログラムの観点からは、WSLとcoLinuxはどちらも、生のハードウェア上で動作する実際のLinuxカーネルとほぼ同じに見えます。 WSL(現在)にはより多くの制限と癖がありますが、x86_64上ではファーストパーティ(Microsoft)のサポートとワットもあります。 coLinuxとWSL 2は本物のLinuxカーネルなので、Linuxと同じように動作しますが、WSL 1はABIのクリーンルーム実装です。

Cygwinは、FreeBSDよりもLinuxに近いとは言えません。

15
Bob