WSL 1 と WSL 2 の比較まとめ
WSL (Windows Subsystem for Linux) は、Windows 上で Linux 環境を実行するための技術です。ここでは、WSL 1 と WSL 2 の主な違いや特徴、使用シナリオについて詳しく解説します。
1. WSL 1 の特徴
アーキテクチャ
- 仕組み: WSL 1 は LXCore というサブシステムを利用して Linux のシステムコールを Windows API に変換します。
-
Windowsカーネル: Linux カーネルを直接実行せず、Windows NT カーネルドライバ (
LxCore.sys
やLxss.sys
) を通じて処理します。
主な特徴
- システムコール互換性: Linux カーネルを直接実行しないため、特定のアプリケーションが動作しない場合があります。
-
ファイルシステム:
- Linux ファイルは NTFS 上に保存され、Windows との統合がシームレス。
- Windows ファイルへのアクセスは高速ですが、Linux のファイル操作は遅くなることがあります。
-
ネットワーク:
- Windows のネットワークスタックを共有し、Windows ホストの IP アドレスがそのまま使われます。
使用シナリオ
- 簡単な開発: シンプルな Linux コマンドやツールの実行。
- Windows 統合重視: Windows ファイルシステムへの高速アクセスやネットワーク統合が必要な場合。
2. WSL 2 の特徴
アーキテクチャ
- 仕組み: WSL 2 は Hyper-V を使用し、Linux カーネルが 軽量仮想マシン (VM) 内で直接実行されます。
主な特徴
-
システムコール互換性:
- Linux カーネルが直接動作するため、システムコールの互換性は完全。
- Docker や Kubernetes など、Linux に依存するツールも動作します。
-
ファイルシステム:
- Linux ファイルは ext4 フォーマットの仮想ディスク (
*.vhdx
) 上に保存され、Linux 環境内でのパフォーマンスが向上します。
- Linux ファイルは ext4 フォーマットの仮想ディスク (
-
ネットワーク:
- 仮想マシン内で独立したネットワークスタックを使用し、Windows とは別の IP アドレスを持ちます。
- 外部アクセスにはポートフォワーディングの設定が必要です。
-
リソース管理:
- 仮想マシンを利用するため、CPU やメモリのリソース管理が柔軟です。
-
起動速度:
- 仮想マシンが軽量設計のため、起動が速く、動作も軽快です。
使用シナリオ
- 高度な開発: Docker、機械学習、CI/CD パイプラインなど、Linux 完全互換が必要な開発環境。
- パフォーマンス重視: Linux ファイル操作やシステムコールの速度が重要な場合。
3. WSL 1 と WSL 2 の比較表
特徴 | WSL 1 | WSL 2 |
---|---|---|
カーネル | Windowsカーネルエミュレーション | Linuxカーネル (仮想マシン) |
Docker サポート | 動作しない | 動作する |
システムコール互換性 | 部分的 | 完全 |
ファイルシステム | NTFS 上に保存 (Windows 統合) | ext4 仮想ディスク (高速アクセス) |
ファイルアクセス速度 | Windows ファイルは高速 | Linux ファイルは高速 |
ネットワーク | Windows と統合 (同一 IP) | 独立したネットワークスタック |
起動時間 | 非常に速い | やや遅い (軽量 VM) |
リソース管理 | Windows リソースと共有 | 柔軟な CPU・メモリ管理 |
4. 互換性と移行
-
バージョン切り替え:
WSL 1 から WSL 2 へのアップグレード、またはダウングレードは簡単に行えます。
コマンド例:wsl --set-version <ディストリビューション名> 2
-
サイドバイサイド実行:
同一環境で WSL 1 と WSL 2 の両方を使用可能です。
確認コマンド:wsl -l -v