# WSL（Windows Subsystem for Linux）とは？インストールと設定方法

URL: https://skillaria.top/ja/guides/linux/wsl-windows-subsystem-linux

WSL（Windows Subsystem for Linux）は、Windows 10と11に組み込まれたサブシステムで、別の仮想マシンやデュアルブートなしで本物のLinuxディストリビューションを動かせます。PowerShellを管理者として開き、wsl --installを実行するだけでインストールでき、既定ではWSL 2とUbuntuが入ります。WSL 2では本物のLinuxカーネルが軽量な仮想マシン上で動作します。

Windows Subsystem for Linux（WSL、Windowsのための Linux サブシステム）は、Windows 10と11に含まれる機能で、Linuxディストリビューションを Windows の中で直接動かせます。bashのターミナル、`apt`、`ssh`、`grep`、Docker、その他のコマンドラインツールが使えます。VirtualBoxを入れる必要も、ディスクを分けて別のOSを入れる必要もありません。Ubuntuは数秒で通常のターミナルウィンドウとして開きます。以下では、WSL 1とWSL 2の違い、インストール方法、ファイルやVS Code、GUIアプリの扱い方、よくあるトラブルへの対処を説明します。

## WindowsとLinuxでのWSLとは

簡単に言えば、WSLは開発や学習のために、Windowsを離れずに完全なLinux環境を手に入れる仕組みです。コマンドラインまたはMicrosoft StoreからUbuntu、Debian、openSUSE、Kali、AlmaLinuxなどのディストリビューションを入れ、サーバーと同じように、ユーザー、権限、パッケージ、サービスを使って作業します。

WSLが何をしないかも理解しておきましょう。Cygwinのようなコマンドのエミュレーターでも、移植されたユーティリティの寄せ集めでもありません。WSL 2ではMicrosoftがビルドした本物のLinuxカーネルが動いています。そのため、Linux用のバイナリは再コンパイルせずに実行でき、WSLで身につけたスキルは実際のサーバーにそのまま使えます。

WSLの典型的な用途：

- 専用のコンピューターを用意せずにLinuxとコマンドラインを学ぶこと。
- 本番環境がLinuxで動いている場合のWeb開発（Python、Node.js、PHP、Go）。
- Docker Desktop — エンジンとしてWSL 2を使います。
- SSHによるサーバー接続、bashスクリプト、使い慣れた環境でのgit作業。

## WSL 1とWSL 2の違い

WSLには2つのアーキテクチャがあります。WSL 1はLinuxのシステムコールをWindowsカーネルの呼び出しに変換します。Linuxカーネルそのものは含まれません。WSL 2は、Hyper-Vをベースにした軽量な仮想マシンで本物のLinuxカーネルを動かします。仮想マシンは数秒で起動し、メモリも自動で管理されます。

| 項目 | WSL 1 | WSL 2 |
| --- | --- | --- |

| カーネル | なし、システムコールを変換 | 本物のLinuxカーネル |

| システムコールの互換性 | 一部 | 完全 |

| Docker、systemd | なし | あり |

| Linuxのファイル（`~/`）の速度 | 遅め | 高速 |

| Windowsのファイル（`/mnt/c`）の速度 | 高速 | 明らかに遅め |

| 仮想化の必要性 | なし | あり |

| ネットワーク | Windowsと共通 | 独立した仮想ネットワーク（既定はNAT） |

ほとんどの用途ではWSL 2を選んでください。WSL 2は既定の設定です。WSL 1が意味を持つのは、仮想化を有効にできない場合（たとえばWindows自体がネストされた仮想化なしの仮想マシン内で動いている場合）や、プロジェクトをWindowsのディスクに置いて頻繁に扱う必要がある場合です。

## Windows 10と11へのWSLのインストール方法

Windows 11と、Windows 10のバージョン2004以降（ビルド19041以上）では、インストールは1つのコマンドで済みます。PowerShellまたは「ターミナル」を管理者として開き、次を実行します。

```
wsl --install
```

このコマンドは必要なWindowsの機能を有効にし、WSL 2のカーネルをダウンロードして、Ubuntuをインストールします。再起動後にディストリビューションのウィンドウが開くので、Linuxのユーザー名とパスワードを決めてください。これらはWindowsのアカウントとは無関係です。このパスワードは`sudo`で必要になります。

```
Enter new UNIX username: alex
New password:
Retype new password:
passwd: password updated successfully
Installation successful!
```

すぐにパッケージを更新しましょう。新しいサーバーと同じです。

```
sudo apt update && sudo apt upgrade -y
```

### ディストリビューションの選び方

既定ではUbuntuがインストールされますが、別のディストリビューションを選ぶこともできます。利用可能な一覧は次のとおりです。

```
wsl --list --online
```

一覧にある名前を指定してインストールします。

```
wsl --install -d Debian
```

WSLがすでに入っていれば、このコマンドは新しいディストリビューションを追加するだけです。複数のシステムを同時に持つこともできます。たとえば、仕事用にUbuntu、実験用にKaliといった使い分けができます。

### バージョンの確認：wsl -l -v

インストール済みのディストリビューション、その状態、WSLのバージョンを確認します。

```
wsl -l -v
  NAME      STATE           VERSION
* Ubuntu    Running         2
  Debian    Stopped         2
```

アスタリスクは既定のディストリビューションを示し、`wsl`をパラメーターなしで実行すると起動します。既定を変えるには`wsl --set-default Debian`を実行します。

### WSL 1からWSL 2への切り替え

新しくインストールするディストリビューションのバージョンは、次のコマンドで指定します。

```
wsl --set-default-version 2
```

すでにインストールされているディストリビューションは個別に変換します（データは保持されますが、数分かかることがあります）。

```
wsl --set-version Ubuntu 2
```

逆に戻すには`wsl --set-version Ubuntu 1`を使います。

### WSLの管理に役立つコマンド

| コマンド | 動作 |
| --- | --- |

| `wsl` | 既定のディストリビューションを開く |

| `wsl -d Debian` | 指定したディストリビューションを開く |

| `wsl --shutdown` | すべてのディストリビューションとWSL 2の仮想マシンを停止する |

| `wsl --terminate Ubuntu` | 1つのディストリビューションを停止する |

| `wsl --update` | WSLとカーネルを更新する |

| `wsl --status` | 既定のバージョンと全体の状態を表示する |

| `wsl --export Ubuntu ubuntu.tar` | ディストリビューションをアーカイブにバックアップする |

| `wsl --import Ubuntu2 D:\wsl\u2 ubuntu.tar` | ディストリビューションを復元または複製する |

| `wsl --unregister Ubuntu` | すべてのデータを含めてディストリビューションを削除する |

`--unregister`には注意してください。ディストリビューション内のファイルはごみ箱に入らず削除されます。実行前に`--export`でバックアップを取ってください。

## LinuxとWindowsの間でのファイルの扱い

WindowsのドライブはWSL内で`/mnt`ディレクトリに自動的にマウントされます。Cドライブは`/mnt/c`、Dドライブは`/mnt/d`です。

```
cd /mnt/c/Users/alex/Downloads
ls -l
cp report.csv ~/projects/
```

逆方向では、Linuxのファイルはネットワークパス`\\wsl$\Ubuntu`（Windows 11では`\\wsl.localhost\Ubuntu`でも）からエクスプローラーで見られ、サイドバーの「Linux」セクションにも表示されます。現在のLinuxディレクトリをすぐにエクスプローラーで開くには次のコマンドを使います。

```
explorer.exe .
```

WSLからはWindowsのプログラム（`notepad.exe`、`code`）を起動でき、PowerShellからは先頭に`wsl`を付けてLinuxのコマンドを実行できます。パスを2つのシステム間で変換するには`wslpath`ユーティリティを使います。

```
wslpath 'C:\Users\alex'
/mnt/c/Users/alex
```

WSL 2のパフォーマンスの基本ルールは、プロジェクトを`/mnt/c`ではなくLinuxのファイルシステム（`~/projects`）に置くことです。Windowsのドライブへのアクセスはネットワークプロトコルを通るため、大きなプロジェクトでの`git status`や`npm install`は何倍も遅くなります。

## VS CodeとWSL

Visual Studio CodeはWSLをリモートマシンのように扱えます。インターフェースはWindowsに残り、ターミナル、拡張機能、インタープリター、デバッガーはLinux内で実行されます。そのためにはWSL拡張機能（Microsoft提供）が必要です。ディストリビューションのターミナルでプロジェクトのディレクトリに移動し、次を実行します。

```
cd ~/projects/site
code .
```

初回起動時、VS CodeはLinux側にサーバー部分を自動でインストールします。左下に「WSL: Ubuntu」という表示が出れば、内蔵ターミナルから実行するものはすべてLinux内で動いています。PythonやESLintなどの拡張機能は「WSLにインストール」する必要があります。ボタンで提案されるので、それを押してください。

## WSLでのGUIアプリ（WSLg）

Windows 11と、最新のWSLが入ったWindows 10には、WSLgというグラフィカルなLinuxアプリのサポートが標準で付いています。X serverの設定は不要です。プログラムを通常どおりインストールすると、ウィンドウがWindowsのウィンドウと並んで表示され、ショートカットは「スタート」メニューに追加されます。

```
sudo apt install gedit -y
gedit ~/.bashrc &
```

WSLgはX11とWaylandに加え、音声とクリップボードにも対応しています。ただし、日常的にLinuxのデスクトップ全体をGNOMEやKDEで使いたい場合の代わりにはなりません。WSLは個々のアプリケーション向けであり、デスクトップ環境全体を動かすためのものではありません。

## systemdとWSL 2のリソース

最新のWSL 2ではsystemdがサポートされており、新しいUbuntuのインストールでは既定で有効です。有効になっていない場合は、ディストリビューション内の`/etc/wsl.conf`に次を追加します。

```
[boot]
systemd=true
```

その後、PowerShellでサブシステムを再起動します: `wsl --shutdown`。これで`systemctl`やnginx、PostgreSQLなどのサービスが使えます。

WSL 2の仮想マシンが使うメモリとプロセッサーの数は、Windows側の`%UserProfile%\.wslconfig`で制限できます。

```
[wsl2]
memory=4GB
processors=2
```

設定は`wsl --shutdown`の後に反映されます。

## WSLのインストールでよくあるエラー

### エラー 0x80370102

完全なメッセージは「仮想マシンを起動できませんでした。必要なコンポーネントがインストールされていません」（WslRegisterDistribution failed with error: 0x80370102）です。原因はほぼ常に1つで、WSL 2が仮想マシンを起動できないことです。次の順に確認してください。

1. BIOS/UEFIでハードウェア仮想化が有効になっているか：Intel VT-x（Intel Virtualization Technology）またはAMD-V（SVMモード）。状態は、タスクマネージャー →「パフォーマンス」→ CPU →「仮想化: 有効」で確認できます。
2. 「仮想マシン プラットフォーム」のコンポーネントが有効か。
3. ブートローダーでハイパーバイザーが無効になっていないか。

コンポーネントは管理者のPowerShellで有効にします。

```
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
bcdedit /set hypervisorlaunchtype auto
```

その後コンピューターを再起動してください。仮想マシンの中で作業している場合は、ホスト側でネストされた仮想化を許可するか、WSL 1を使ってください。

### その他のよくある問題

- **0x800701bc** — WSL 2のカーネルが更新されていません。`wsl --update`を実行してください。
- **`wsl --install`がヘルプだけを表示する** — WSLはすでにインストールされています。`wsl --install -d Ubuntu`でディストリビューションを追加してください。
- **VPN使用時にWSL内でインターネットに接続できない** — VPNクライアントが仮想ネットワークのルートを横取りしています。Windows 11では、`.wslconfig`の`[wsl2]`セクションに`networkingMode=mirrored`を指定すると解決することがあります。
- **WSLがディスク容量を大量に使う** — 仮想ディスク`ext4.vhdx`は大きくなりますが、ファイルを削除しても自動では縮みません。手動で縮小するか、`--export`/`--import`でディストリビューションを移動してください。
- **Linuxのパスワードを忘れた** — PowerShellからrootでログインし（`wsl -u root`）、`passwd alex`を実行してください。

## WSL、仮想マシン、デュアルブートの比較

WindowsのコンピューターでLinuxを使う方法はWSLだけではありません。目的によって選び方が変わります。

| 方式 | 長所 | 短所 | 選ぶべき場合 |
| --- | --- | --- | --- |

| WSL 2 | 数秒で起動、ファイルを共有、VS Code、Docker | 本格的なデスクトップがない、ネットワークやディスクの特性がある | 開発、コマンドラインの学習、スクリプト |

| 仮想マシン（VirtualBox、Hyper-V、VMware） | 完全な隔離、スナップショット、任意のディストリビューションとデスクトップ、独自のネットワークカード | 重い、リソースは事前に割り当てられる | サーバーの検証環境、ネットワークやブートの実験、ディスクのパーティション操作 |

| デュアルブート | ハードウェアの性能をすべて使える、ネイティブのグラフィックスとドライバー | 切り替えに再起動が必要、ディスクのパーティション操作にリスクがある | Linuxをメインのシステムとして使う、Linux上でのゲームやGPUの作業 |

ゼロからLinuxを学ぶだけならWSLで十分なことが多いです。ファイル、権限、プロセス、パッケージ、bashスクリプト、SSHはサーバーと同じように動きます。仮想マシンが必要になるのは、ブートローダー、物理ディスクのパーティション、ネットワークインターフェース、ホストのファイアウォールなど、WSLでは仕組みが違う領域を扱うときです。

## まとめ

Windows Subsystem for Linuxは、`wsl --install`という1つのコマンドでWindowsの中に本物のLinuxを用意します。WSL 2を選び、`wsl -l -v`でバージョンを確認し、プロジェクトは`/mnt/c`ではなく`~/`に置き、WSL拡張機能でVS Codeを接続してください。インストールが0x80370102で失敗する場合は、BIOSで仮想化を有効にし、「仮想マシン プラットフォーム」を有効にしてください。このような作業環境の準備から、Linuxの実践が始まります。

## FAQ

**WSLは無料ですか？**

はい。WSLはWindows 10と11のすべてのエディション（Homeを含む）に含まれ、Linuxディストリビューションも無料で配布されています。

**WSLでDockerを動かせますか？**

はい、ただしWSL 2の場合に限ります。WSL 2をエンジンとするDocker Desktopを入れるか、普通のUbuntuサーバーと同じようにディストリビューション内にDocker Engineを直接インストールできます。

**WSLのディストリビューションのファイルはどこに保存されていますか？**

WSL 2では、Windowsユーザーのプロファイル内の仮想ディスクext4.vhdxに保存されています。直接開く必要はありません。エクスプローラーで\\wsl$\のパスを使ってください。

**WSLを完全に削除するにはどうすればよいですか？**

wsl --unregister 名前 でディストリビューションを削除し、「設定」の「インストールされているアプリ」からWindows Subsystem for Linuxアプリを削除してください。必要であればWindowsの機能も無効にします。

**WSLを別のドライブに移動できますか？**

はい。wsl --export Ubuntu ubuntu.tarを実行し、wsl --unregister Ubuntuの後、wsl --import Ubuntu D:\wsl\ubuntu ubuntu.tarを実行します。新しいバージョンにはwsl --manage Ubuntu --moveコマンドもあります。


---
Source: Skillaria.Top (https://skillaria.top)
