zirconsoft’s blog

Microsoft関係について取り上げます。

WindowsでのLinux準拠環境まとめ

Windows 10でLinux?

Windows 10でLinuxのアプリケーションを動かすための環境についてまとめます。
ここで紹介するのは、必ずしも完全なLinuxではないです。
Linuxにある程度の互換性はありますが、それ自身ではないので、完全なLinuxを使いたい人は、LinuxのOSを普通にインストールした方がいいと思います。

WindowsシステムをLinuxに対応させる

WindowsのWin32APIの上でLinux準拠の環境を再現する方法です。

Cygwin

POSIX準拠のシステムコールをDLL(ダイナミックリンクライブラリ)によって再現し、その上にGCCUNIXの主要なコマンドを動作させる。
POSIXシステムコールをWindowsAPIに変換しているため動作は遅いが、POSIX準拠のため多くのソフトウェアを動作できる。
Windows上のGUIによるパッケージ管理システムとともにCUIでapt-cygというパッケージ管理システムがある。
オープンソースソフトウェアである。

MinGW

Cygwinから派生したソフトウェア。名前の由来はMinimalist GNU for WindowsWindowsのための最小構成のGNU)
WindowsGNUツール群を用いた開発をするためのソフトウェア。POSIXに準拠していない分、高速化を実現している。
POSIXに準拠していないとは、システムコールのreadやwriteを使えないということである。
GCCコンパイラやGit(分散バージョン管理システム)をWindowsで使用したいときに使用する。
オープンソースソフトウェアである。

Windows Subsystem for Linux(WSL)

Microsoftが開発したLinux互換のカーネルインターフェース。
Windows 10 Fall Creators Updateにより、Windows OSに組み込まれた。
公開されているWindows APIではなく、非公開のWindowsのOSの内部でLinuxカーネルを再現することにより高速化を実現している。
デーモンなどのバックグラウンドタスクは動作しないなど制限も多い。
ソフトウェアが対応しているかどうかは実際試してみないとわからない。
Windows StoreよりUbuntuSUSEFedoraディストリビューションがインストール可能である。
ディストリビューションオープンソースだが、それを動作させるインターフェースは、Windows内部のシステムなのでソースコードは非公開である。

ハードウェアシェア型

ハイパーバイザ技術による仮想化技術によって、すべてのゲストOSがハードウェアを共有し、完全なLinuxカーネルを動作させる。

Hyper-V

Microsoftの開発した仮想化システムとして有名なソフトウェア。
Windows ServerとWindows Client(x64版)のPro、Education、Enterpriseエディションで動作する。Homeエディションでは動作しない。
完全なLinux環境を用意することができ、様々なディストリビューションに対応している。

どれが一番いいのか?

Linuxとの互換性は、
Hyper-V > Cygwin > WSL > MinGW
の順番だと思います。
どれが一番良いかということはなく、

  • どのようなソフトウェアを動作させるのか?
  • どんな目的で使用するのか?

といった様々な使用条件をもとに検討するのがいいと思います。