WSL(Windows Subsystem for Linux)は、Windows環境でLinuxを使えるようにする機能です。
開発やサーバー操作をWindows上で完結できるため、多くのエンジニアに活用されています。
しかし、「どのコマンドから覚えればいいの?」「実際の開発でどう使うの?」と迷ってしまう方も多いでしょう。
この記事では、WSLの基本から便利なコマンドの一覧までを、初心者にもわかりやすく解説します。
WSLとは?Windows上でLinuxを動かす革新的技術

WSLの基本概念
WSL(Windows Subsystem for Linux)は、MicrosoftがWindowsで提供するLinux互換レイヤーです。仮想マシンとは異なり、Windowsカーネル上でLinuxバイナリを直接実行できます。
WSLの主な特徴
- 軽量性:仮想マシンより高速で軽い
- 統合性:WindowsとLinuxファイルシステムの相互アクセス
- ネイティブ性能:ほぼネイティブLinuxと同等のパフォーマンス
- 複数ディストリビューション:Ubuntu、Debian、CentOSなど複数のLinuxを並行実行
WSL1とWSL2の違い
機能 | WSL1 | WSL2 |
---|---|---|
Linuxカーネル | エミュレーション | 実際のLinuxカーネル |
パフォーマンス | 普通 | 高速 |
ファイルIO | 遅い(クロスOS) | 高速 |
Dockerサポート | 限定的 | 完全対応 |
メモリ使用量 | 低い | やや高い |
起動速度 | 高速 | 普通 |
推奨:特別な理由がない限りWSL2を使用
WSLが必要な理由
開発者にとってのメリット
- Linux専用ツールをWindows上で使用可能
- サーバー環境と同じコマンドでローカル開発
- Docker、Kubernetes、Terraformなどの最新ツールが利用可能
- WindowsとLinuxの両方の利点を活用
具体的な使用場面
- Node.js、Python、Go開発でのパッケージ管理
- Dockerコンテナの開発・テスト
- AWS CLI、kubectl等のクラウドツール使用
- シェルスクリプトやLinuxコマンドでの自動化
WSLの基本を理解したところで、実際にコマンドを使ってWSL環境を管理していきましょう。
WSLのインストールと初期設定
WSLの有効化
PowerShellを管理者権限で実行
# WSL機能を有効化
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
# WSL2に必要な仮想マシン機能を有効化
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
Windows機能の有効化(GUI方式)
Windows + R
で「optionalfeatures」を実行- 「Linux用Windowsサブシステム」にチェック
- 「仮想マシンプラットフォーム」にチェック
- 再起動
簡単インストール(Windows 11 / Windows 10 2004以降)
ワンコマンドインストール
wsl --install
これで以下が自動実行されます:
- WSL機能の有効化
- WSL2カーネルの更新
- WSL2をデフォルトバージョンに設定
- Ubuntuディストリビューションのインストール
特定のディストリビューションをインストール
# インストール可能な一覧を確認
wsl --list --online
# 特定のディストリビューションをインストール
wsl --install -d Ubuntu-22.04
wsl --install -d Debian
wsl --install -d openSUSE-Leap-15.4
WSL2カーネルの更新
手動更新(必要な場合)
# カーネル更新パッケージをダウンロード・インストール
# https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi
# WSL2をデフォルトバージョンに設定
wsl --set-default-version 2
WSLを使い始める前に、適切なインストールと設定を行うことが重要です。次は具体的な管理コマンドを見ていきましょう。
WSLの基本管理コマンド一覧

ディストリビューションの管理
利用可能なディストリビューションの確認
# オンラインで利用可能なディストリビューション一覧
wsl --list --online
実行例
インストールできる有効なディストリビューションの一覧:
NAME FRIENDLY NAME
Ubuntu Ubuntu
Debian Debian GNU/Linux
kali-linux Kali Linux Rolling
Ubuntu-18.04 Ubuntu 18.04 LTS
Ubuntu-20.04 Ubuntu 20.04 LTS
Ubuntu-22.04 Ubuntu 22.04 LTS
インストール済みディストリビューションの確認
# インストール済み一覧(詳細表示)
wsl --list --verbose
# 短縮形
wsl -l -v
実行例
NAME STATE VERSION
* Ubuntu-22.04 Running 2
Debian Stopped 2
kali-linux Stopped 2
起動と終了の管理
WSLの起動
# デフォルトディストリビューションを起動
wsl
# 特定のディストリビューションを起動
wsl -d Ubuntu-22.04
wsl -d Debian
# 特定のユーザーで起動
wsl -d Ubuntu-22.04 -u root
WSLの終了
# 特定のディストリビューションを終了
wsl -t Ubuntu-22.04
# 全てのWSLインスタンスを終了
wsl --shutdown
# 特定のディストリビューションを強制終了
wsl --terminate Ubuntu-22.04
WSLバージョンの管理
WSLバージョンの確認
# WSLのバージョン情報を確認
wsl --version
実行例
WSL バージョン: 2.0.9.0
カーネル バージョン: 5.15.133.1-1
WSLg バージョン: 1.0.59
MSRDC バージョン: 1.2.4677
Direct3D バージョン: 1.611.1-81528511
DXCore バージョン: 10.0.25131.1002-220531-1700.rs-onecore-base2-hyp
Windows バージョン: 10.0.22621.2861
ディストリビューションのWSLバージョン変更
# WSL1からWSL2に変更
wsl --set-version Ubuntu-22.04 2
# WSL2からWSL1に変更(通常は不要)
wsl --set-version Ubuntu-22.04 1
# デフォルトバージョンの設定
wsl --set-default-version 2
デフォルト設定の管理
デフォルトディストリビューションの設定
# デフォルトディストリビューションの変更
wsl --set-default Ubuntu-22.04
# 現在のデフォルトを確認(*印で表示)
wsl -l -v
デフォルトユーザーの設定
# 特定のディストリビューションのデフォルトユーザーを変更
ubuntu2204.exe config --default-user root
# または
wsl -d Ubuntu-22.04 -u root
ディストリビューションのアンインストール
完全アンインストール
# ディストリビューションをアンインストール(データも削除)
wsl --unregister Ubuntu-22.04
# 確認
wsl -l -v
注意:アンインストールすると、そのディストリビューション内のすべてのデータが削除されます
基本的なWSLコマンドを使いこなすことで、Linux環境の管理がスムーズになります。複数のディストリビューションを用途別に使い分けることも可能です。
コマンド実行とファイル操作
Windowsから直接Linuxコマンドを実行
基本的なコマンド実行
# デフォルトディストリビューションでコマンド実行
wsl ls -la
# 特定のディストリビューションでコマンド実行
wsl -d Ubuntu-22.04 ls -la
# 現在のディレクトリでコマンド実行
wsl pwd
# 複数のコマンドを実行
wsl "cd /home/user && ls -la && pwd"
実行例
PS C:\Users\username> wsl ls -la
total 28
drwxr-xr-x 1 username username 4096 Jan 8 10:30 .
drwxr-xr-x 1 root root 4096 Jan 7 15:20 ..
-rw-r--r-- 1 username username 220 Jan 7 15:20 .bash_logout
-rw-r--r-- 1 username username 3771 Jan 7 15:20 .bashrc
-rw-r--r-- 1 username username 807 Jan 7 15:20 .profile
パイプとリダイレクトの活用
WSLコマンドの出力をWindowsで処理
# WSLのコマンド結果をWindowsファイルに保存
wsl ls -la > C:\temp\file_list.txt
# WSLコマンドの結果をWindows PowerShellで処理
wsl "ps aux" | Select-String "python"
# 複雑なパイプライン
wsl "cat /proc/cpuinfo" | findstr "processor"
ファイルシステムの相互アクセス
Windowsファイルシステムへのアクセス(WSL内から)
# WindowsのCドライブにアクセス
cd /mnt/c/Users/username/Documents
# Windowsのプログラムを実行
/mnt/c/Windows/System32/notepad.exe
# パスの確認
ls -la /mnt/c/
WSLファイルシステムへのアクセス(Windows側から)
# エクスプローラーでWSLファイルにアクセス
explorer.exe \\wsl$\Ubuntu-22.04\home\username
# PowerShellからWSLファイルにアクセス
Get-Content \\wsl$\Ubuntu-22.04\home\username\.bashrc
# ファイルをコピー
Copy-Item "C:\temp\file.txt" "\\wsl$\Ubuntu-22.04\home\username\"
ネットワーク関連コマンド
ネットワーク設定の確認
# IPアドレスの確認
wsl ip addr show
# ネットワーク接続テスト
wsl ping google.com
# ポートの確認
wsl netstat -tuln
# DNS設定の確認
wsl cat /etc/resolv.conf
Windows側からWSLサービスへの接続
# WSL内で動作するWebサーバーにアクセス
# WSLのIPアドレスを確認
wsl hostname -I
# ポートフォワーディング(必要に応じて)
netsh interface portproxy add v4tov4 listenport=8080 listenaddress=0.0.0.0 connectport=8080 connectaddress=172.20.10.2
WSL活用例

Node.js開発環境のセットアップ
Node.jsのインストールと設定
# Node.jsの最新LTSをインストール(NVM使用)
wsl curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
# WSLを再起動してNVMを有効化
wsl --shutdown
wsl
# Node.jsのインストール
wsl nvm install --lts
wsl nvm use --lts
# バージョン確認
wsl node --version
wsl npm --version
プロジェクトの作成と実行
# Windowsの開発フォルダに移動
wsl cd /mnt/c/development
# 新しいプロジェクトの作成
wsl npx create-react-app my-app
wsl cd my-app
# 開発サーバーの起動
wsl npm start
Python開発環境のセットアップ
Python環境の構築
# Pythonとpipの更新
wsl sudo apt update
wsl sudo apt install python3 python3-pip python3-venv
# 仮想環境の作成
wsl cd /mnt/c/projects/my-python-project
wsl python3 -m venv venv
# 仮想環境の有効化
wsl source venv/bin/activate
# パッケージのインストール
wsl pip install flask django requests
Docker開発環境
Docker Desktopとの連携
# DockerがWSL2で動作していることを確認
wsl docker --version
# コンテナの実行
wsl docker run hello-world
# Docker Composeの使用
wsl cd /mnt/c/projects/my-docker-project
wsl docker-compose up -d
Git操作の活用
GitをWSLで使用
# Gitの設定
wsl git config --global user.name "Your Name"
wsl git config --global user.email "your.email@example.com"
# SSH鍵の生成(GitHubアクセス用)
wsl ssh-keygen -t ed25519 -C "your.email@example.com"
# リポジトリのクローン
wsl cd /mnt/c/projects
wsl git clone git@github.com:username/repository.git
高度なWSL設定とカスタマイズ
.wslconfig ファイルによる設定
WSL2の全体設定(%USERPROFILE%.wslconfig)
[wsl2]
memory=8GB # WSL2に割り当てるメモリ
processors=4 # WSL2に割り当てるプロセッサ数
swap=2GB # スワップファイルサイズ
swapFile=C:\\temp\\wsl-swap.vhdx # スワップファイルの場所
localhostForwarding=true # localhost フォワーディング
nestedVirtualization=true # ネスト仮想化の有効化
[experimental]
sparseVhd=true # 動的VHDXサイズ調整
autoMemoryReclaim=gradual # メモリの自動回収
wsl.conf ファイルによる個別設定
ディストリビューション固有の設定(/etc/wsl.conf)
[boot]
systemd=true # systemdの有効化(WSL2)
[automount]
enabled=true # 自動マウントの有効化
root=/mnt/ # マウントポイントのルート
options="metadata,uid=1000,gid=1000,umask=022,fmask=11,case=off"
[network]
generateHosts=true # /etc/hostsの自動生成
generateResolvConf=true # /etc/resolv.confの自動生成
hostname=my-wsl-machine # ホスト名の設定
[interop]
enabled=true # Windows実行ファイルの実行を許可
appendWindowsPath=true # WindowsのPATHを追加
起動時スクリプトの設定
自動実行スクリプトの作成
# .bashrcに追加
wsl cat >> ~/.bashrc << 'EOF'
# カスタム環境変数
export DEVELOPMENT_PATH=/mnt/c/development
export EDITOR=vim
# エイリアスの設定
alias ll='ls -alF'
alias la='ls -A'
alias l='ls -CF'
alias ..='cd ..'
alias ...='cd ../..'
# 開発用ディレクトリに移動
cd $DEVELOPMENT_PATH
# 挨拶メッセージ
echo "Welcome to WSL Development Environment!"
echo "Current directory: $(pwd)"
EOF
パフォーマンス最適化
ファイルI/Oの最適化
# Linuxファイルシステム上での作業(高速)
wsl mkdir -p ~/projects/my-app
wsl cd ~/projects/my-app
# Windowsファイルシステムとのシンボリックリンク作成
wsl ln -s /mnt/c/development ~/development
# ファイル権限の設定
wsl chmod +x ~/scripts/deploy.sh
トラブルシューティングとよくある問題
WSLが起動しない問題
問題:WSLが全く起動しない
# WSL機能の確認
dism.exe /online /get-featureinfo /featurename:Microsoft-Windows-Subsystem-Linux
# 仮想マシン機能の確認
dism.exe /online /get-featureinfo /featurename:VirtualMachinePlatform
# BIOSで仮想化が有効になっているか確認
systeminfo | findstr /C:"Hyper-V"
対処方法
# 機能の再有効化
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
# WSLサービスの再起動
net stop LxssManager
net start LxssManager
パフォーマンス問題
問題:WSLが遅い
# メモリ使用量の確認
wsl --shutdown
Get-Process -Name "Vmmem" -ErrorAction SilentlyContinue
# .wslconfigでリソース制限
# メモリやCPUの設定を調整
対処方法
# 不要なプロセスの停止
wsl ps aux | grep -v "essential"
# キャッシュのクリア
wsl sudo apt clean
wsl sudo apt autoremove
ネットワーク接続問題
問題:インターネットに接続できない
# DNS設定の確認
wsl cat /etc/resolv.conf
# ネットワークインターフェースの確認
wsl ip route show
対処方法
# DNS設定の手動変更
wsl sudo sh -c 'echo "nameserver 8.8.8.8" > /etc/resolv.conf'
# ネットワークの再起動
wsl sudo service networking restart
ファイル権限問題
問題:ファイル権限がおかしい
# 現在のマウントオプション確認
wsl mount | grep drvfs
# umaskの確認
wsl umask
対処方法
# wsl.confでマウントオプションを設定
wsl sudo tee /etc/wsl.conf > /dev/null << EOF
[automount]
options = "metadata,uid=1000,gid=1000,umask=022"
EOF
# WSLを再起動
wsl --shutdown
wsl
便利なTipsとベストプラクティス
効率的なワークフロー
開発プロジェクトの管理
# プロジェクト用スクリプトの作成
cat > ~/bin/newproject << 'EOF'
#!/bin/bash
PROJECT_NAME=$1
mkdir -p ~/projects/$PROJECT_NAME
cd ~/projects/$PROJECT_NAME
git init
echo "# $PROJECT_NAME" > README.md
echo "Created project: $PROJECT_NAME"
EOF
chmod +x ~/bin/newproject
# 使用例
wsl newproject my-new-app
クイックアクセスエイリアス
# .bashrcに便利なエイリアス追加
cat >> ~/.bashrc << 'EOF'
alias windir='cd /mnt/c/Users/$USER'
alias proj='cd ~/projects'
alias dev='cd /mnt/c/development'
alias reload='source ~/.bashrc'
alias update='sudo apt update && sudo apt upgrade'
alias ports='netstat -tuln'
alias myip='curl -s https://ipecho.net/plain; echo'
EOF
バックアップとエクスポート
ディストリビューションのバックアップ
# ディストリビューションをエクスポート
wsl --export Ubuntu-22.04 C:\backup\ubuntu-backup.tar
# バックアップからインポート
wsl --import Ubuntu-Backup C:\WSL\Ubuntu-Backup C:\backup\ubuntu-backup.tar
# 確認
wsl -l -v
セキュリティ設定
SSH鍵の管理
# SSH鍵の生成と設定
wsl ssh-keygen -t ed25519 -C "your-email@example.com"
# SSH Agentの設定
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
# GitHubへの鍵登録
wsl cat ~/.ssh/id_ed25519.pub
ファイアウォール設定
# UFWファイアウォールの設定
wsl sudo ufw enable
wsl sudo ufw allow ssh
wsl sudo ufw allow 3000 # Node.js開発サーバー用
wsl sudo ufw status
まとめ:WSLを使いこなして効率的な開発環境を構築しよう
WSLはWindowsとLinuxの垣根を越えた、まさに革新的な開発環境です。
基本的な管理コマンドから高度なカスタマイズまで、幅広い機能を提供しています。
この記事で学んだポイント
- WSLの基本概念とWSL1/WSL2の違い
- ディストリビューションの管理と設定方法
- ファイルシステムの相互アクセステクニック
- 開発環境での実践的な活用例
- パフォーマンス最適化とトラブルシューティング
コメント