WSL(Windows Subsystem for 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が仮想マシンを起動できないことです。次の順に確認してください。
- BIOS/UEFIでハードウェア仮想化が有効になっているか:Intel VT-x(Intel Virtualization Technology)またはAMD-V(SVMモード)。状態は、タスクマネージャー →「パフォーマンス」→ CPU →「仮想化: 有効」で確認できます。
- 「仮想マシン プラットフォーム」のコンポーネントが有効か。
- ブートローダーでハイパーバイザーが無効になっていないか。
コンポーネントは管理者の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の実践が始まります。
よくある質問
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を別のドライブに移動できますか?
はい。<code>wsl --export Ubuntu ubuntu.tar</code>を実行し、<code>wsl --unregister Ubuntu</code>の後、<code>wsl --import Ubuntu D:\wsl\ubuntu ubuntu.tar</code>を実行します。新しいバージョンには<code>wsl --manage Ubuntu --move</code>コマンドもあります。