この記事では『WSL(Windows Subsystem for Linux)』について、
- WSLとは
- WSL1とWSL2の違い
などを図を用いて分かりやすく説明するように心掛けています。ご参考になれば幸いです。
WSLとは
WSLはWindows Subsystem for Linuxの略であり、Windows上でLinux環境を実行するための仕組みです。
WSLを利用することで、Windowsを使いながら、Windows上でLinuxを動作させることができるようになります。しかも、WSLを使ってLinuxを実行する際には、Windowsを再起動する必要がありません。つまり、Windowsにインストールされているソフトウェアの1つのようにLinuxを使用することができます。
WSLはUbuntu、OpenSUSE、DebianなどのLinuxプログラムからのシステムコール(APIやファイルアクセス要求など)をWindows APIに変換することで、Linuxのバイナリプログラムをそのまま実行できるようにしています。
2016年8月に最初のWSL(以後、WSL1と呼びます)のベータ版、2017年10月にWSL1の正式版が公開されました。その後、2019年2月にWSL2(WSL1の次バージョン)が公開されました。
補足
- WSLはマイクロソフト社が開発者のためのツールとして提供しています。
- WSL1の正式版はWindows 10(バージョン1709)から利用可能となりました。
- WSL2はWindows 10(バージョン2004)から利用可能となりました。
WSL1とWSL2の違い
WSL1とWSL2の違いを下記に示します。
WSL1とWSL2の違い
- WSL2はWSL1より軽快に動作できる&高速起動できる
- WSL2はWSL1よりファイルアクセス速度が向上している
- WSL2は仮想マシンによって「完全なLinux」を動作できる
これらの違いについて順番に説明します。
WSL2はWSL1より軽快に動作できる&高速起動できる
WSL1も比較的軽快に動作しますが、WSL2はさらに高速に動作できるようになっています。
また、WSL2はWSL1よりもLinux起動時のメモリ消費量が少ないため、より高速に起動できるようになっています。
そのため、WSL2を使えば、搭載しているメモリが少なくなりがちなノートPCでも、快適にLinuxを利用することができます。
WSL2はWSL1よりファイルアクセス速度が向上している
WSL1では「NTFS(Windows標準のファイルシステム)」上にLinuxのファイルを保存しています。
一方、WSL2では「ext4(Linux標準のファイルシステム)でフォーマットされた仮想HDD(*.vhdxファイル)」上にLinuxのファイルを保存しています。WSL2では、Linuxファイルと直接やり取りできるため、ファイルアクセス速度が向上しています。
補足
- ファイルシステムはコンピュータがファイルを操作・管理するための仕組みです。
- NTFSは「NT File System」の略です。
- ext4は「fourth extended file system」の略です。
WSL2は仮想マシンによって「完全なLinux」を動作できる
WSL1とWSL2の最も大きな違いは、WSL2では、仮想マシンによって「完全なLinux」を動作させることができる点です。
WSL1では、「完全なLinux」は動作していません。WSL1では、Linuxカーネルではなく、「LxCore.sys/Lxss.sys」というNTカーネルドライバがLinuxの実行環境を作っています。NTカーネルドライバがLinuxプログラムからのシステムコール(APIやファイルアクセス要求など)をWindows APIに変更しています。この仕組みがLinuxとしては不完全で、できることに制限がありました。また、うまく動かないソフトウェアもありました。例えば、DockerはWSL1では動作しませんでした。
一方、WSL2では、Hyper-Vと呼ばれるパイパーバイザー上の「軽量ユーティリティ仮想マシン(Light Weight utility Virtual)」でLinuxカーネルそのものが実行されています。そのため、WSL2を使うことで、Windows上で「完全なLinux」が動作するようになりました。また、WSL1で動作しなかったDockerが、WSL2では動作できるようになっています。
また、WSL1はWindow上で動作していたため、IPアドレスはWindowsと共有していました。一方、WSL2では仮想化によって仮想NIC(Network Interface Card)が作成されることで、Windowsとは別のIPアドレスを割り当てることが可能になりました。
WSL2はWSL1と比べて、パフォーマンス(動作や起動速度など)が向上しています。また、WSL2では仮想マシンによって「完全なLinux」を動作させることが可能になっています。そのため、WSL1とWSL2のどちらを使うべきか迷ったら、基本的にはWSL2を使うとよいでしょう。
補足
- 仮想NICは「仮想ネットワークアダプタ」と呼ばれることもあります。
- 仮想NICはコンピュータ上で仮想的に作られるネットワーク接続の機能です。実際の物理的なNICと同じように機能します。
本記事のまとめ
この記事では『WSL(Windows Subsystem for Linux)』について、以下の内容を説明しました。
- WSLとは
- WSL1とWSL2の違い
お読み頂きありがとうございました。