WSLは、Microsoftが提供する、Windows上でLinuxの実行環境を直接動作させるための仕組みです。従来の仮想マシン(VM)のような重快なセットアップを必要とせず、Windowsアプリの感覚でLinux(Ubuntu等)を利用できます。
1. WSL1 と WSL2 の違い
WSLには大きく分けて2つの世代があり、現在はWSL2が主流です。
| 特徴 | WSL 1 | WSL 2 (現在の標準) |
|---|---|---|
| 仕組み | LinuxシステムコールをWindows用に変換。 | 本物のLinuxカーネルを軽量VM上で実行。 |
| パフォーマンス | ファイルアクセスは早いが、実行は遅め。 | 実行速度が劇的に向上(ネイティブに近い)。 |
| 互換性 | 一部のアプリ(Docker等)が動かない。 | 完全な互換性。Dockerもスムーズに動作。 |
| リソース管理 | Windowsとメモリを共有。 | 動的にメモリを確保(設定で制限可能)。 |
2. WSL2 の主なメリット
- Windowsとの共存: Windowsのファイル(Cドライブなど)にLinuxからアクセスでき、その逆も可能です。VS CodeなどのWindowsアプリからLinux上のコードを編集できます。
- 爆速な起動: 従来のVM(VirtualBox等)が起動に数十秒かかるのに対し、WSL2は1〜2秒で起動します。
- GPUアクセラレーション: NVIDIA CUDAなどをサポートしており、Windows上でLinux版の**機械学習(AI)**やディープラーニングの環境を容易に構築できます。
- GUIアプリのサポート (WSLg): Linux用のデスクトップアプリ(GIMPやテキストエディタなど)をWindowsのウィンドウとしてそのまま表示・操作できます。
3. なぜ「VM」ではなく「WSL」を選ぶのか?
| 比較項目 | 従来のVM (VirtualBoxなど) | WSL 2 |
|---|---|---|
| 目的 | OS全体の完全なエミュレーション。 | 開発環境・コマンドラインの統合。 |
| オーバーヘッド | 高い(CPU・メモリを固定で消費)。 | 低い(必要な分だけ動的に使用)。 |
| ネットワーク | 独自のIPを持つ(設定がやや煩雑)。 | Windowsとlocalhostを共有(設定不要)。 |
| 使い分け | サーバー本番環境の完全再現に。 | Web開発、データサイエンス、日常のツールに。 |
4. 導入方法(Windows 10/11共通)
現在はコマンドプロンプトやPowerShellを「管理者として実行」し、以下のコマンドを打つだけでインストールが完了します。
wsl --install
注意点: WSL2はバックグラウンドでHyper-Vの仕組みを利用しているため、Windowsの「仮想化プラットフォーム」機能が有効である必要があります(通常は自動で有効になります)。
5. cloud-init との関係
WSL2でも、最近のアップデートによりcloud-initのサポートが強化されました。 /etc/wsl.conf や特定のインポート手法を用いることで、インスタンス起動時にユーザー作成やパッケージインストールを自動化する「クラウドに近い開発体験」が可能になっています。