【保存版】WSL(Windows Subsystem for Linux)の便利なコマンド一覧と使い方

Windows

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の違い

機能WSL1WSL2
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方式)

  1. Windows + Rで「optionalfeatures」を実行
  2. 「Linux用Windowsサブシステム」にチェック
  3. 「仮想マシンプラットフォーム」にチェック
  4. 再起動

簡単インストール(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の違い
  • ディストリビューションの管理と設定方法
  • ファイルシステムの相互アクセステクニック
  • 開発環境での実践的な活用例
  • パフォーマンス最適化とトラブルシューティング

コメント

タイトルとURLをコピーしました