「Ubuntu on WSL 2 on Windows 11」でコンテナ環境を構築してみよう:Windows 11で“本物のLinux”を体験
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
「macOSやUNIXベースのOSを利用して開発したい」という考え方が広まる中、多くの企業でmacOSが搭載されたMacを社用PCとして利用できるようになりました。一方、業務システムとの互換性の問題などからWindowsの利用を求められる企業も少なくありません。そこで注目されているのが、WindowsでLinuxを利用できる「WSL」(Windows Subsystem for Linux)です。WSLを利用することで、業務システムとの互換性はWindowsで保ちつつ、快適な開発作業をLinuxで進められるようになります。
WSLの登場以前は「VMware」や「VirtualBox」などの仮想化ソフトウェアを使用してLinuxを実行したり、LinuxのコマンドなどをWindowsに移植した「Cygwin」のようなツールを利用したりするなどの方法がありました。しかし、前者はホストOSであるWindowsで仮想化ソフトウェアを実行した上でLinuxをインストールするため、オーバーヘッドの大きさが課題でした。後者はあくまでもLinuxで利用できる一部のコマンドをWindowsで利用できるようにしたもので機能面に課題がありました。
WSLも仮想マシンの仕組みを用いていますが、Windowsと親和性の高い「Hyper-V」を使用しているのでオーバーヘッドが小さく、Cygwinのようなツールと違い、本物のLinuxを実行できます(Hyper-Vを利用しているのは後述するWSL 2からとなります)。
WSL、WSL 2、WSLgの違い
WSLは2016年に登場しましたが、2019年に「WSL 2」が発表され、2021年には「WSLg」が発表されました。バージョンアップを重ねてきたわけですが、それぞれの違いはどこにあるのでしょうか。
WSLとWSL 2はWindows上でLinuxディストリビューションを実行する点は同じですが、仕組みが異なります。WSLでは、LinuxのシステムコールをWindowsカーネル向けに変換する独自機能を追加してWindows上でLinuxを実行しています。Linuxから見たときにWindowsカーネルがLinuxカーネルに見えるような仕組みが整っています。
WSL 2では、Hyper-Vを使用してLinuxを実行しています。Hyper-VはMicrosoftが開発した仮想マシンの仕組み(ハイパーバイザー)で、Windowsとの親和性が高く、VMwareやVirtualBoxなどと比較してオーバーヘッドが抑えられています。
WSLgは、Windows上で動く本物のLinuxで、Linux GUIアプリケーションを実行できる機能です。他と大きく違うのは、WindowsでLinuxのデスクトップが開き、その上でGUIアプリケーションが実行されるのではなく、WindowsのウィンドウとしてLinuxのGUIアプリケーションが起動して表示される点にあります。