Dock Stay
WSL2 とは - WSL2 の使い方・オプション・サンプル

WSL2 とは - WSL2

Windows Subsystem for Linux の第 2 世代。Hyper-V 技術を基盤にした軽量 VM 上で本物の Linux カーネルを動かす方式で、WSL1 のエミュレーションとは根本的に別物。Docker Desktop の標準バックエンドでもある。

概念図

WSL2 diagram

構文

bash
wsl --install -d Ubuntu-22.04
wsl --set-default-version 2

実例

Ubuntu 22.04 を WSL2 でインストール

bash
wsl --install -d Ubuntu-22.04

インストール済みディストリと WSL バージョンを一覧

bash
wsl --list --verbose

既存ディストリを WSL2 に変換

bash
wsl --set-version Ubuntu-22.04 2

すべての WSL2 VM を停止(設定変更後に使う)

bash
wsl --shutdown

概要

WSL1 は Windows カーネルに Linux システムコール互換層を実装して Linux バイナリを動かす方式でした。

ファイルシステム互換性やシステムコール網羅性に限界があり、Docker のようなカーネル機能(cgroups, namespaces)に強く依存するソフトは動きません。

WSL2 はアプローチを根本から変え、Windows が提供する薄い Hyper-V(仮想化プラットフォーム)上に Microsoft 製の軽量 Linux カーネルを乗せた「本物の VM」を動かします。

ディストリビューション(Ubuntu、Debian、openSUSE 等)はそのカーネルの上のユーザーランドで、起動は数秒、メモリ消費も実使用分だけで済みます。

これにより Docker、systemd、eBPF といった本物の Linux 機能が Windows 上でそのまま使えるようになりました。

典型的な用途

  • Windows を母艦にしながら Linux での開発(Ruby on Rails、Node.js、Python、Go 等)
  • Docker Desktop / Rancher Desktop の実行基盤
  • Linux ツールチェーン(make、gcc、man、apt 等)を Windows マシンで使う
  • CI の挙動を手元で再現する(同じ Linux ディストリビューションを使える)
  • Kubernetes ローカル開発(minikube、kind、k3d など)

コマンド例

# インストール(Windows 11 では 1 コマンドで完結)
wsl --install -d Ubuntu-22.04

# 既存バージョン確認
wsl --list --verbose
#   NAME            STATE           VERSION
# * Ubuntu-22.04   Running         2

# 既存ディストリを WSL2 に変換
wsl --set-version Ubuntu-22.04 2

# カーネル更新
wsl --update
wsl --version

# 全 VM 停止(.wslconfig 等を変更した後)
wsl --shutdown

%USERPROFILE%\.wslconfig でメモリや CPU 上限を制御できる。

[wsl2]
memory=8GB
processors=4
swap=0

ベストプラクティス

  • ホスト Windows 側にコードを置かず、作業リポジトリは WSL2 側の ~/projects に配置する(ファイルシステム性能が段違い)
  • %USERPROFILE%\.wslconfig でメモリ上限を設定し、ビルド時の暴走を防ぐ
  • VS Code は WSL 拡張経由で WSL2 内を開き、ターミナル・デバッグ・Git 操作をすべて Linux 側に寄せる
  • wsl --update は定期的に実行。カーネル脆弱性修正や性能改善が頻繁に入る
  • 開発用と検証用でディストリビューションを分け、wsl --export / wsl --import でスナップショット運用する

注意点

  • WSL2 は仮想化が前提なので、BIOS で Intel VT-x / AMD-V を有効化しておく必要がある
  • VMware Workstation や VirtualBox の古いバージョンは Hyper-V と競合する(新しいバージョンは共存可)
  • \\wsl$\Ubuntu-22.04\ として Windows 側から WSL2 のファイルシステムを参照できるが、大量アクセスは遅い
  • USB デバイスや GPU の扱いは WSL1 と異なる。USB は usbipd-win、GPU は WSLg + 対応ドライバが必要
  • 企業環境では社内ファイアウォール / プロキシ / AV の設定で VM 側の通信が弾かれることがある

関連トピック