Windows上のLinux開発環境構築ガイド:WSL 2とUbuntuのインストール・設定・運用
bashコマンドでLinuxシェル(Bash)を起動し、Linuxコマンドを実行できる。また、wslコマンドを使用してWSL自体の管理を行う。運用時には、.wslconfig設定ファイルを用いることで、メモリ使用量、スワップ領域、CPUコア数などを調整できる。WSL 2上にインストールしたUbuntuに開発ツールを導入することで、コンパイラの動作確認やプログラムのテストが可能である。Windows 10(Build 19044以降)およびWindows 11ではWSLg機能により、LinuxのGUIアプリケーションも追加設定なしで利用できる。
【目次】
- WSL 2の有効化
- Ubuntu(Linuxディストリビューション)のインストール
- 基本的な使い方:bashとwslコマンド
- WSL 2の設定と.wslconfigファイル
- Ubuntuの初期設定
- 開発環境のセットアップ例(C/C++/Python)
- ネットワーク設定(ポートフォワーディング・ファイアウォール)
- WSLgによるGUIアプリの利用
- トラブルシューティング
主なwslコマンド:
- wsl --list --online: 利用可能なディストリビューションの一覧
- wsl --update: 最新状態に更新
- wsl --install -d Ubuntu-24.04: Ubuntu 24.04のインストール
【サイト内のWindowsセットアップ関連ページ】
- Windows 11クリーンインストールガイド: 別ページ »で説明
- Windows システムの基本操作ガイド: 別ページ »で説明
- Windows 11の基本設定: 別ページ »で説明
- Windows ソフトウェア一覧(2026年版): 別ページ »で説明
- Windows のまとめ: 別ページ »で説明
- Windows上のLinux開発環境構築ガイド:WSL 2とUbuntuのインストール・設定・運用: 別ページ »で説明
- Windows の種々のソフトウェアのインストール: 別ページ »で説明
【外部リソース】
- Windows 11のディスクイメージのダウンロードのページ: https://www.microsoft.com/ja-jp/software-download/windows11
- Rufusのページ: https://rufus.ie/ja/
WSL 2の有効化
このセクションでは、WSL 2を利用するために必要なWindows機能を有効化する。
前提: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での有効化手順(コマンド操作の代替方法)
- 「コントロールパネル」を開く
- 「プログラム」を選択する
- 「プログラムと機能」を選択する
- 画面左側の「Windowsの機能の有効化または無効化」を選択する
- 「Windowsの機能の有効化または無効化」で、以下の項目にチェックを入れ、「OK」をクリックする
- Linux用Windowsサブシステム(または Windows Subsystem for Linux)
- 仮想マシンプラットフォーム
- (Windows Proエディションの場合)Hyper-V
既存のチェック項目は変更しないこと。システムの安定性を維持するため、必要な機能のみを追加で有効化する。
Ubuntu(Linuxディストリビューション)のインストール
ここでは、WSL 2上にUbuntu Linuxディストリビューションをインストールする手順を説明する。
- 管理者権限のコマンドプロンプトで、利用可能なLinuxディストリビューションを確認する
wsl --list --online
- WSLカーネルを最新の状態に更新する
wsl --update - Ubuntu 24.04をインストールする。他のバージョンやディストリビューションをインストールする場合は、
-dオプションに続けて一覧表示された名前を指定するwsl --install -d Ubuntu-24.04
インストール中に、Ubuntuで使用するユーザー名とパスワードの設定を求められる。このパスワードは、
sudoコマンドで管理者権限が必要な操作を行う際に使用する
基本的な使い方: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から実行する
WSL 2の設定と.wslconfigファイル
WSL 2は仮想マシン上で動作するため、リソースを多く消費する開発作業では、メモリやCPUコア数の割り当てを調整することを推奨する。
設定ファイルは%UserProfile%\.wslconfig(例:C:\Users\ユーザー名\.wslconfig)に配置する。
.wslconfig設定例
[wsl2]
memory=4GB # WSL 2が使用できる最大メモリ(デフォルト:Windowsの総メモリの50%)
swap=2GB # スワップファイルサイズ(デフォルト:Windowsのメモリサイズの25%)
processors=4 # WSL 2が使用できるCPUコア数(デフォルト:Windowsの論理プロセッサ数と同じ)
memory:ホストPCのメモリ容量に応じて調整する。上限を設定するとホストシステムの安定性を保ちやすい。Apache、MySQL、開発ツール使用時は4GB程度が目安となるswap:メモリ不足時に使用される領域である。大規模ビルドでメモリ不足が懸念される場合に設定するprocessors:ホストPCのCPUコア数を超えない範囲で設定する。並列ビルドを多用する場合に調整すると効果的である
設定方法
- テキストエディタ(メモ帳など)で
.wslconfigファイルを%UserProfile%ディレクトリに作成または開く。コマンドプロンプトで以下を実行する(この操作は管理者権限不要)cd %UserProfile% notepad .wslconfig
- メモ帳で必要な設定を記述し、ファイルを上書き保存する
- 設定を反映させるために、WSL 2を再起動する。コマンドプロンプトで以下を実行する
wsl --shutdown
次にWSLを起動した際に設定が反映される
wsl --shutdownを実行してWSLを再起動すること。再起動しないと変更は反映されない。
Ubuntuの初期設定
Ubuntuのインストール後、いくつかの初期設定を行うことを推奨する。以下のコマンドは、UbuntuのBashシェル内で実行する(bashコマンドでシェルを起動)。管理者権限が必要なコマンドにはsudoを付加する。
aptパッケージリポジトリのミラーサーバー変更(任意)
ダウンロード速度を向上させるため、パッケージのダウンロード元を日本のミラーサーバーに変更する。変更しない場合はこの手順を省略する。
/etc/apt/sources.list.d/ubuntu.sourcesに移動している。従来の/etc/apt/sources.listは空または存在しない場合がある。
まず、使用されている設定ファイルを確認する。
# 設定ファイルの存在確認
ls -la /etc/apt/sources.list /etc/apt/sources.list.d/ubuntu.sources 2>/dev/null
/etc/apt/sources.list.d/ubuntu.sourcesが存在する場合(Ubuntu 24.04のデフォルト)は、以下のコマンドでミラーサーバーを変更する。
# バックアップを作成
sudo cp /etc/apt/sources.list.d/ubuntu.sources /etc/apt/sources.list.d/ubuntu.sources.bak
# ミラーサーバーを日本に変更
sudo sed -i 's|http://archive.ubuntu.com|http://jp.archive.ubuntu.com|g' /etc/apt/sources.list.d/ubuntu.sources
sudo sed -i 's|http://security.ubuntu.com|http://jp.archive.ubuntu.com|g' /etc/apt/sources.list.d/ubuntu.sources
従来形式の/etc/apt/sources.listを使用している場合は、以下のコマンドを実行する。
# バックアップを作成
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
# ミラーサーバーを日本に変更
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
パッケージリストの更新とアップグレード
システムを最新の状態に保つ。
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<stdio.h>
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は独自の仮想ネットワークを持つため、Windowsが受けた接続をWSL 2に転送する設定が必要となる。
ポートフォワーディングの設定
- 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
ファイアウォール設定
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には許可したいポート番号を指定する。
Remove-NetFirewallRule -DisplayName "WSL 2 Inbound Port 80"
WSLgによるGUIアプリの利用
Windows 10(Build 19044以降)および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)を参照のこと。
トラブルシューティング
BIOS/UEFI設定の確認
WSL 2はハードウェア仮想化支援機能を利用する。PCによっては、この機能がBIOS/UEFI設定で無効になっている場合がある。WSL 2のインストールや起動に問題がある場合は、以下の設定が有効になっているか確認すること(名称はマザーボードメーカーにより異なる場合がある)。
- Intel VT-x / AMD-V(CPU仮想化支援):必須
- SLAT / EPT / RVI:必須(近年のCPUでは通常サポートされている)。SLATはSecond Level Address Translationの略で、仮想マシンのメモリ管理を効率化する技術である。EPT(Extended Page Tables)はIntel、RVI(Rapid Virtualization Indexing)はAMDにおける実装名称である
- Intel VT-d / AMD IOMMU(I/O仮想化支援):パフォーマンス向上に寄与するが、必須ではない。デバイス(周辺機器)の仮想化を支援する技術である
- SVM Mode(AMD CPUの場合):必須(AMD-Vと同義の場合が多い)。SVMはSecure Virtual Machineの略である
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およびディストリビューション関連の問題
- WSLのバージョン確認と状態確認:管理者権限のコマンドプロンプトで実行する
wsl --status wsl -l -v - WSLの再起動:WSLの動作が不安定な場合に試す
wsl --shutdown 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.exeGit Bashを起動する場合は、通常以下のパスになる
"C:\Program Files\Git\bin\bash.exe"