Windows上のLinux開発環境構築ガイド:WSL 2とUbuntuのインストール・設定・運用
【概要】 WSL 2は,Windows上でLinux環境を実現するための仮想化技術です.利用にあたっては,BIOS/UEFIでの仮想化機能の有効化が前提となります.WSL 2を利用するには,まずWindowsで必要な機能を有効化し,次にLinuxディストリビューション(本記事ではUbuntuを例とします)をインストールします.インストール後,`bash`コマンドでLinuxシェル(Bash)を起動し,Linuxコマンドを実行できます.また,`wsl`コマンドを使ってWSL自体の管理を行います.運用時には,`.wslconfig`設定ファイルを用いることでメモリ使用量,スワップ領域,CPUコア数などを調整できます.WSL 2上にインストールしたUbuntuに開発ツールを導入すれば,コンパイラの動作確認やプログラムのテストが可能です.Windows 11ではWSLg機能により,LinuxのGUIアプリケーションも追加設定なしで利用できます.
主なwsl コマンド:
- wsl --list --online: 利用可能なディストリビューションの一覧
- wsl --update: 最新状態に更新
- wsl --install -d Ubuntu-24.04: Ubuntu 24.04 のインストール
【目次】
- WSL 2の有効化
- WSL 2 の設定と .wslconfig ファイル
- Ubuntu (Linux ディストリビューション) のインストール
- 基本的な使い方: bash と wsl コマンド
- Ubuntu の初期設定
- 開発環境のセットアップ例 (C/C++/Python)
- ネットワーク設定 (ポートフォワーディング・ファイアウォール)
- トラブルシューティング
- WSLgによるGUIアプリの利用 (Windows 11)
【サイト内の関連ページ】
【関連する外部ページ】
- https://aka.ms/wsl2 (公式ドキュメント: Linux 用 Windows サブシステムとは)
- https://docs.microsoft.com/ja-jp/windows/wsl/install (公式ガイド: WSL のインストール)
- https://learn.microsoft.com/ja-jp/windows/wsl/tutorials/wsl-vscode (公式チュートリアル: VS Code との連携)
- https://learn.microsoft.com/ja-jp/windows/wsl/tutorials/wsl-containers (公式チュートリアル: Docker コンテナの使用)
- https://learn.microsoft.com/ja-jp/windows/wsl/tutorials/gpu-compute (公式チュートリアル: GPU アクセラレーションの設定)
WSL 2の有効化
前提:Windows Updateの実行
まず,WSL 2をスムーズに動作させるため,Windows Updateを実行し,システムを最新の状態にしておくことを推奨します.
注意:更新による予期せぬ問題に備え,重要なデータは事前にバックアップしてください.更新によりシステムの安定性が損なわれ,起動不能になる可能性もゼロではありません.バックアップは様々なシステムトラブルからの復旧に有効です.
以下のコマンドを実行してWindows Updateを開き,更新プログラムを確認・適用してください.
powershell -command "Start-Process ms-settings:windowsupdate"

更新後,再起動が要求された場合は Windows を再起動してください.
管理者権限でのコマンドプロンプト起動
以降のコマンド操作は,管理者権限で起動したコマンドプロンプトまたはPowerShellで行います.(例:Windowsキーを押し「cmd」と入力し,表示された「コマンドプロンプト」を右クリックして「管理者として実行」を選択)
必要なWindows機能の有効化 (コマンド操作)
以下のコマンドを実行して,WSL 2に必要なWindows機能を有効化します.
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
Windows Pro エディションの場合は,追加で以下も実行します.
dism.exe /online /enable-feature /featurename:Microsoft-Hyper-V /all /norestart
(オプション: 必要に応じてHyper-V関連機能を有効化)
dism.exe /online /enable-feature /featurename:HypervisorPlatform /all /norestart


(補足: 有効化可能な機能名の一覧は `powershell Get-WindowsOptionalFeature –Online` で確認できます.)

再起動
機能の有効化を完了するため,Windowsを再起動します.
shutdown /r /t 0

GUIでの有効化手順 (代替)
コマンド操作でエラーが発生する場合や,GUIでの操作を希望する場合は,以下の手順で機能を有効化することも可能です.
- 「コントロールパネル」を開く
- 「プログラム」を選択
- 「プログラムと機能」を選択
- 画面左側の「Windows の機能の有効化または無効化」を選択
- 「Windows の機能の有効化または無効化」で,以下の項目にチェックを入れ,「OK」をクリックします.
- Linux 用 Windows サブシステム (または Windows Subsystem for Linux)
- 仮想マシンプラットフォーム
- (Windows Pro エディションの場合) Hyper-V
注意:既存のチェック項目は変更しないでください.システム安定性維持のため,必要な機能のみを追加で有効化します.



WSL 2 の設定と .wslconfig ファイル
WSL 2は仮想マシン上で動作するため,特にリソースを多く消費する開発作業などでは,メモリやCPUコア数の割り当てを調整することが推奨されます.これは %UserProfile%\.wslconfig
(例: C:\Users\ユーザー名\.wslconfig
)ファイルで行います.
.wslconfig 設定例
[wsl2]
memory=4GB # WSL 2が使用できる最大メモリ (例: 4GB)
swap=2GB # スワップファイルサイズ (例: 2GB)
processors=4 # WSL 2が使用できるCPUコア数 (例: 4)
設定のポイント:
memory
: ホストPCのメモリ容量と利用状況に応じて調整します.設定しない場合は動的に割り当てられますが,上限を設定することでホストシステムの安定性を保ちやすくなります.Apache+MySQL+開発ツール使用時の推奨最小値として4GB程度が目安です.swap
: メモリが不足した場合に使用される領域です.大規模なビルド等でメモリ不足が懸念される場合に設定します.メモリの50%程度が一般的な目安です.processors
: ホストPCのCPUコア数を超えない範囲で設定します.並列処理(並列ビルドなど)を多用する場合に調整すると効果的です.
設定方法
- テキストエディタ(メモ帳など)で
.wslconfig
ファイルを%UserProfile%
ディレクトリに作成または開きます.管理者権限のコマンドプロンプトで以下を実行すると便利です.cd %UserProfile% notepad .wslconfig
- メモ帳で,必要な設定を記述し,ファイルを上書き保存します.
- 設定を反映させるために,WSL 2 を再起動します.管理者権限のコマンドプロンプトで以下を実行します.
wsl --shutdown
次にWSLを起動した際に設定が反映されます.
Ubuntu (Linux ディストリビューション) のインストール
ここでは,WSL 2上に Ubuntu Linux ディストリビューションをインストールする手順を説明します.
- 管理者権限のコマンドプロンプトで,まず利用可能なLinuxディストリビューションを確認します.
wsl --list --online
- 次に,WSLカーネルを最新の状態に更新します.これにより,インストール時の問題を未然に防ぐことができます.
wsl --update
- Ubuntu 24.04をインストールします.(他のバージョンやディストリビューションをインストールする場合は,
-d
オプションに続けて一覧表示された名前を指定します)wsl --install -d Ubuntu-24.04
インストール中に,Ubuntuで使用するユーザー名とパスワードの設定を求められますので,指示に従って入力してください.これらはLinux環境内で使用します.
基本的な使い方: bash と wsl コマンド
bashコマンドの使用(Linux環境の操作)
bash
コマンドを実行すると,デフォルトに設定されているLinuxディストリビューションのシェル(Bash)が起動し,Linuxコマンドを実行できます.通常は,インストール時に設定したユーザー権限で起動します. exit
コマンドでシェルを終了します.
bash
pwd
exit

bash -c "コマンド"
の形式で,シェルを起動せずに単一のLinuxコマンドを実行することも可能です.
bash -c "pwd"

主要なLinuxコマンドについては,関連ページ「Linux基本コマンドとその活用法」を参照してください.
wslコマンドの使用(WSLシステムの管理)
ディストリビューション管理
- インストール済みディストリビューションの一覧表示と状態確認
管理者権限のコマンドプロンプトで `wsl -l -v` を実行します.「*」記号がデフォルトディストリビューションを示します.wsl -l -v
- デフォルトディストリビューションの設定
`bash` コマンドや引数なしの `wsl` コマンドで起動するディストリビューションを設定します.wsl --set-default Ubuntu-24.04
WSL 2 のシャットダウン
実行中のすべてのWSLインスタンスを停止します.`.wslconfig` の変更を反映させる際や,動作が不安定な場合に使用します.
wsl --shutdown
ディストリビューションのエクスポート(バックアップ)とインポート(復元)
ディストリビューションの状態をtarファイルにバックアップします.
wsl --export Ubuntu-24.04 ubuntu-backup.tar
バックアップファイルから新しいディストリビューションとして復元します.
wsl --import MyUbuntu C:\WSL\MyUbuntu ubuntu-backup.tar
使用コマンドの使い分け
bash
:Linux環境内での操作やコマンド実行.wsl
:WSL自体の管理(ディストリビューションの管理,起動/停止,設定など).WindowsのコマンドプロンプトやPowerShellから実行します.
Ubuntu の初期設定
Ubuntuインストール後,いくつかの初期設定を行うことを推奨します.以下のコマンドはUbuntuのBashシェル内で実行します (`bash` コマンドでシェルを起動).管理者権限が必要なコマンドには `sudo` を付けます.
apt パッケージリポジトリのミラーサーバー変更 (任意)
ダウンロード速度向上のため,パッケージのダウンロード元を日本のミラーサーバーに変更します.(変更しない場合はこの手順をスキップしてください)
# /etc/apt/sources.list 内のサーバーアドレスを置換 (必要に応じて /etc/apt/sources.list.d/ubuntu.sources も確認)
sudo sed -i 's|//archive.ubuntu.com|//jp.archive.ubuntu.com|g' /etc/apt/sources.list
sudo sed -i 's|//security.ubuntu.com|//jp.archive.ubuntu.com|g' /etc/apt/sources.list
(注意: `sed`コマンドは強力なため,実行前に/etc/apt/sources.list
のバックアップを取ることを推奨します.例: sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
)
パッケージリストの更新とアップグレード
システムを最新の状態に保ちます.
sudo apt update
sudo apt -yV upgrade
# オプション: ディストリビューション全体のアップグレード (カーネル等も更新される場合がある)
sudo apt -yV dist-upgrade
開発環境のセットアップ例 (C/C++/Python)
ここでは例として,C/C++およびPythonの基本的な開発環境をUbuntu上にインストールし,簡単な動作確認を行います.コマンドはUbuntuのBashシェル内で実行します.
必要なパッケージのインストール
C/C++コンパイラ (gcc, g++),makeツール,Python3開発ヘッダ,pipなどをインストールします.
sudo apt -y install build-essential python3-dev python3-pip wget ca-certificates
Cコンパイラ (gcc) の動作確認
テキストエディタ(例: nano
)を使って簡単なCプログラムを作成します.
nano hello.c
エディタが開いたら,以下の内容を入力または貼り付けます.
#include
int main() {
printf("Hello, World!\n");
printf("sizeof(size_t)=%ld\n", sizeof(size_t));
return 0;
}
Ctrl+O
を押し,Enterキーでファイルを保存します.その後 Ctrl+X
で nano
を終了します.
作成したプログラムをコンパイルして実行します.
gcc -o hello hello.c
./hello
以下のような出力が表示されれば成功です.
Hello, World! sizeof(size_t)=8

Python 3 の動作確認
Python 3 のバージョンを確認し,簡単なコードを実行してみます.
python3 --version
python3 -c 'print("Hello, Python!")'
以下のような出力が表示されれば成功です.
Python 3.x.y Hello, Python!

ネットワーク設定 (ポートフォワーディング・ファイアウォール)
WSL 2内で起動したサーバー(例: Webサーバー)にWindows側や他のPCからアクセスするには,ポートフォワーディングとファイアウォールの設定が必要になる場合があります.
ポートフォワーディングの設定
- WSL 2のIPアドレス確認
まず,UbuntuのBashシェル内でWSL 2のIPアドレスを確認します.ip addr show eth0 | grep 'inet ' | awk '{print $2}' | cut -d/ -f1
注意:WSL 2のIPアドレスは,WSLの再起動などで変更される可能性があります.固定化する方法もありますが,ここでは基本的な設定手順を示します.接続できなくなった場合は再度IPアドレスを確認してください.
- Windowsでポートフォワーディング設定
次に,管理者権限のコマンドプロンプト(またはPowerShell)で,Windowsのポートフォワーディングを設定します.以下の例では,Windowsの80番ポートへのアクセスを,手順1で確認したWSL 2のIPアドレスの80番ポートに転送します.netsh interface portproxy add v4tov4 listenport=80 listenaddress=0.0.0.0 connectport=80 connectaddress=<WSL2のIPアドレス>
<WSL2のIPアドレス>
は,手順1で確認した実際のIPアドレスに置き換えてください.設定を削除する場合は,以下のコマンドを実行します.
netsh interface portproxy delete v4tov4 listenport=80 listenaddress=0.0.0.0
目的と必要性:
- WSL 2は独自の仮想ネットワークを使用するため,外部(Windowsホストや他のマシン)からのアクセスにはポートフォワーディングが必要です.具体的には,WSL内で動作するWebサーバー(80番ポート)やデータベース(例: 3306番ポート)への接続に必要となります.
- Web開発やデータベース開発において,外部からのサービスアクセスを実現します.これは開発中のアプリケーションテストには必須の設定となる場合があります.
ファイアウォール設定
Windows Defender ファイアウォールが有効な場合,WSL 2への着信接続を許可するルールを追加する必要があります.管理者権限のPowerShellで以下のコマンドを実行します.(例: 80番ポートへのTCP接続を許可する場合)
New-NetFirewallRule -DisplayName "WSL 2 Inbound Port 80" -Direction Inbound -Action Allow -Protocol TCP -LocalPort 80
-DisplayName
は任意の分かりやすい名前,-LocalPort
には許可したいポート番号を指定してください.特定のインターフェース (vEthernet (WSL)) に限定するより詳細な設定も可能ですが,ここではポート番号に基づく基本的な許可ルールを示します.
目的と必要性:
- Windowsファイアウォールによる通信制限を適切に管理し,開発サーバーへのアクセスを許可します.
- 開発環境における効率的な通信環境を構築し,ローカルネットワーク(Windowsホストや同じネットワーク上の他のマシン)からのテストを可能にします.
トラブルシューティング
BIOS/UEFI 設定の確認
WSL 2はハードウェア仮想化支援機能を利用します.PCによっては,この機能がBIOS/UEFI設定で無効になっている場合があります.WSL 2のインストールや起動に問題がある場合は,まず以下の設定が有効になっているか確認してください(名称はマザーボードメーカーにより異なる場合があります).
- Intel VT-x / AMD-V (CPU仮想化支援): 必須
- SLAT (Second Level Address Translation) / EPT (Intel) / RVI (AMD): 必須 (近年のCPUでは通常サポートされています)
- Intel VT-d / AMD IOMMU (I/O仮想化支援): パフォーマンス向上に寄与しますが,必須ではありません.
- SVM Mode (AMD CPUの場合): 必須 (AMD-Vと同義の場合が多い)
目的と必要性:
- WSL 2はハードウェア仮想化技術を活用するため,これらの設定が有効でないと動作しません.
- 適切な仮想化設定により,WSL 2のパフォーマンスが向上します.
BIOS/UEFIメニューへのアクセス方法はPCによって異なりますが,以下のコマンドを管理者権限のコマンドプロンプトで実行すると,再起動後にBIOS/UEFI設定画面に入れる場合があります.
shutdown /r /fw /t 0
コマンドの説明:/r
(再起動),/fw
(ファームウェアUIへ移行),/t 0
(即時実行).
CPUの仮想化機能サポート状況確認 (Windows)
Windows上でCPUが仮想化機能をサポートし,有効になっているかを確認するには,管理者権限のコマンドプロンプトで以下のPowerShellコマンドを実行します.
powershell -c "Get-CimInstance -ClassName Win32_Processor | Select-Object Name, VirtualizationFirmwareEnabled, SecondLevelAddressTranslationExtensions"
実行結果例:

確認ポイント:
-
VirtualizationFirmwareEnabled
:True
になっているか(BIOS/UEFIで有効化されているか) -
SecondLevelAddressTranslationExtensions
:True
になっているか(SLAT対応か)
目的と必要性:
- システムの状況(仮想化機能の有効/無効)を把握できます.
- WSL 2が動作しない場合の基本的な原因切り分けに役立ちます.
WSLおよびディストリビューション関連の問題
- WSLのバージョン確認と状態確認
管理者権限のコマンドプロンプトで実行します.WSL 2で動作しているか,エラーが出ていないか確認します.wsl --status wsl -l -v
- WSLの再起動
WSLの動作が不安定な場合に試します.管理者権限のコマンドプロンプトで実行します.wsl --shutdown # その後、bashやwslコマンドで再度起動 wsl
- WSLカーネルの更新
カーネル関連の問題が疑われる場合に実行します.管理者権限のコマンドプロンプトで実行します.wsl --update
- デフォルトディストリビューションの確認・変更
意図しないディストリビューションが起動する場合に確認・修正します.管理者権限のコマンドプロンプトで実行します.wsl -l -v wsl --set-default Ubuntu-24.04 # デフォルトにしたいディストリビューション名に変更
- ディストリビューションの再インストール
特定のディストリビューションが破損したり,設定を初期化したい場合に実行します.注意:この操作を行うと,対象ディストリビューション内のデータはすべて失われます.必要なデータは事前にバックアップまたはエクスポートしてください(
管理者権限のコマンドプロンプトで実行します.wsl --export
コマンド参照).wsl --shutdown wsl --unregister Ubuntu-24.04 # 再インストールしたいディストリビューション名 wsl --install -d Ubuntu-24.04 # 再インストールしたいディストリビューション名
目的と必要性:
- システム不安定時の環境を完全にクリーンアップする(破損した設定を除去).
- 設定の競合やエラーを根本的に解決する(環境を初期状態に復元).
bashコマンド関連の問題
- `bash` コマンドが見つからない場合
WSLが正しくインストールされているか,システムの環境変数 `Path` に `C:\Windows\System32` が含まれているか確認します.where bash echo %PATH%
- Git Bashなど他のbashとの競合
WSLのbashを明示的に実行したい場合は,フルパスで指定します.C:\Windows\System32\bash.exe
Git Bashを起動する場合は通常以下のパスになります.
"C:\Program Files\Git\bin\bash.exe"
WSLgによるGUIアプリの利用 (Windows 11)
Windows 11ではWSLg (WSL GUI) 機能が組み込まれており,特別な設定なしにWSL 2上のLinux GUIアプリケーションを利用できます.
例えば,UbuntuにGUIテキストエディタ gedit
をインストールすれば,Windowsのスタートメニューから直接起動したり,Ubuntuのターミナルから gedit
コマンドを実行したりすることで,Windows上にgeditのウィンドウが表示されます.
UbuntuのBashシェルで以下を実行してgeditをインストールします.
sudo apt update
sudo apt install gedit -y
インストール後,ターミナルで以下を実行するとgeditが起動します.
gedit


WSLgの詳細については,公式リポジトリ ( https://github.com/microsoft/wslg ) を参照してください.