手順

WSL(Windows Subsystem for Linux)とは?インストールと設定方法

更新日: · Skillaria.Top

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 1WSL 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 Ubuntu1つのディストリビューションを停止する
wsl --updateWSLとカーネルを更新する
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の実践が始まります。

よくある質問

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>コマンドもあります。

動画でこのテーマを学ぶ

このテーマはコース「Linux: с нуля до уверенного администрирования」で実践とともに詳しく解説しています。

コースへ