WSL で用途別にディストリビューション環境を構築する方法(--install --name/--export/--import)
はじめに
WSL(Windows Subsystem for Linux)を使っていると、用途ごとにディストリビューションを分けて運用したい場面があります。
以前は、「同じディストリビューション」を「異なる名前」でインストールするには wsl --import
コマンドを使う必要がありました。
しかし、2024年11月頃から wsl --install
コマンドに --name
オプションが追加され、簡単に複数環境を作成できるようになりました。
この新機能は Microsoft Dev Blogs で発表されていますが、公式ドキュメント(Microsoft Learn)にはまだ反映されていません。
本記事では、新しいインストール方法と従来のエクスポート/インポート手法について解説します。
検証環境
- Windows 11 Home
- PowerShell 7
- WSL 2
- Ubuntu 22.04 LTS
詳細
> Get-CimInstance Win32_OperatingSystem | Select-Object Caption, Version, OSArchitecture
Caption Version OSArchitecture
------- ------- --------------
Microsoft Windows 11 Home 10.0.26100 64 ビット
> $PSVersionTable
Name Value
---- -----
PSVersion 7.5.2
PSEdition Core
GitCommitId 7.5.2
OS Microsoft Windows 10.0.26100
Platform Win32NT
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0…}
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
WSManStackVersion 3.0
> wsl --version
WSL バージョン: 2.5.9.0
カーネル バージョン: 6.6.87.2-1
WSLg バージョン: 1.0.66
MSRDC バージョン: 1.2.6074
Direct3D バージョン: 1.611.1-81528511
DXCore バージョン: 10.0.26100.1-240331-1435.ge-release
Windows バージョン: 10.0.26100.4652
> wsl -l -v
NAME STATE VERSION
* Ubuntu Running 2
NixEnv Stopped 2
docker-desktop Running 2
# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 22.04.5 LTS
Release: 22.04
Codename: jammy
インストール方法の使い分け
方法 | 選択のポイント |
---|---|
wsl --install --name |
任意の名前で新規インストールしたい場合はこれが第一選択 |
wsl --export / --import |
--name が使えない場合、既存環境を複製したい場合 |
方法1 --name オプション
1.1 利用可能なディストリビューションの確認
以下のコマンドでインストール可能なディストリビューション一覧を確認できます。
wsl --list --online
# 2025/7/21 実施
> wsl --list --online
インストールできる有効なディストリビューションの一覧を次に示します。
'wsl.exe --install <Distro>' を使用してインストールします。
NAME FRIENDLY NAME
AlmaLinux-8 AlmaLinux OS 8
AlmaLinux-9 AlmaLinux OS 9
# 中略
Ubuntu Ubuntu
Ubuntu-22.04 Ubuntu 22.04 LTS
1.2 任意の名前を指定してインストール
任意の名前でディストリビューションをインストールしたい場合は、--name
オプションを使います。
ここでは、Ubuntu
を MyEnv
という名前でインストールします。
wsl --install Ubuntu --name MyEnv
インストールの確認
インストール済みのディストリビューション一覧を表示すると、MyEnv
が追加されていることを確認できます。
wsl -l -v
> wsl -l -v
NAME STATE VERSION
* Ubuntu Running 2
docker-desktop Running 2
MyEnv Stopped 2
ディストリビューションへの入り方
以下のコマンドで、任意のディストリビューションに入れます。
wsl --distribution MyEnv
特定のユーザーで入りたい場合は、--user
オプションでユーザー名を指定します。
wsl --distribution MyEnv --user root
1.3 規定のディストリビューションを変更する
wsl
コマンドをオプション無しで実行した場合、規定のディストリビューション(*が付いているもの)が起動します。
例えば、以下の場合だと *
が記載されている Ubuntu
が規定となっています。
> wsl -l -v
NAME STATE VERSION
* Ubuntu Running 2
docker-desktop Running 2
MyEnv Stopped 2
# これを実行すると Ubuntu に入る
> wsl
以下のコマンドで規定を MyEnv
に変更できます。
wsl --set-default MyEnv
> wsl -l -v
NAME STATE VERSION
* MyEnv Running 2
docker-desktop Running 2
Ubuntu Running 2
方法2 export/import コマンド
一部のディストリビューションでは、--name
オプションが利用できません。
例えば、Ubuntu-22.04
をインストールしようとすると、以下の様なエラーが発生します。
> wsl --install Ubuntu-22.04 --name MyEnv
レガシ ディストリビューションをインストールする場合、'--name' はサポートされません。
この場合は、エクスポート・インポート機能を使って複製&名前の設定を行います。
2.1 複製元の環境をインストール
Ubuntu-22.04
を --name
オプションを使わずにインストールします。
wsl --install Ubuntu-22.04
2.2 環境の複製
以下のコマンドを実行すると、Ubuntu-22.04
を複製して MyEnv
という名前で登録できます。
wsl --export Ubuntu-22.04 - | wsl --import MyEnv "C:\Users\MyName\Wsl\MyEnv" -
コマンドの解説
wsl --export <Distribution Name> <FileName>
wsl --import <Distribution Name> <InstallLocation> <FileName>
通常、export
コマンドでは .tar
ファイルとして保存します。
今回は複製が目的なので、ファイルを保存せずにそのまま import
コマンドに渡します。
そのため、export
と import
を |
で連結し、<FileName>
には -
(標準出力/入力)を指定しています。
<Distribution Name>
には wsl -l -v
で表示された名前を指定します。
<InstallLocation>
には任意のフォルダを指定します。
保存するフォルダはどこがいい?
任意なので、どこでも大丈夫です。
C:\Users\MyName\Wsl\
や D:\Wsl\
の様に分かりやすい場所が無難でしょう。
なお、wsl --install
コマンドでインストールした場合、以下に保存されます。
C:\Users\MyName\AppData\Local\Packages
個人的には AppData
はユーザーが直接触る場所ではないと思ったので、wsl --import
では AppData
を指定せずに、専用のフォルダに保存することにしました。
データのバックアップを残したい場合
以下を実行すると、コマンドを実行したディレクトリに保存できます。
wsl --export Ubuntu-22.04 Backup.tar
2.3 不要なディストリビューションの削除
複製元のディストリビューションが不要であれば、以下のコマンドで削除できます。
wsl --unregister Ubuntu-22.04
(おまけ)コマンドの詳細情報について
本当は公式ドキュメント(Microsoft Learn)を提示したかったのですが、wsl --install
コマンドのオプションを網羅的に解説した公式ページが見つけられませんでした。
PowerShell で wsl --help
を使うのが一番確実な情報源だと思います。
> wsl --help
# 中略
--install [Distro] [Options...]
Linux 用 Windows サブシステム ディストリビューションをインストールします。
有効なディストリビューションの一覧を表示するには、'wsl.exe --list --online' を使用します。
オプション:
--enable-wsl1
WSL1 サポートを有効にします。
--fixed-vhd
ディストリビューションを保存するための固定サイズのディスクを作成します。
--from-file <Path>
ローカル ファイルからディストリビューションをインストールします。
--legacy
レガシ ディストリビューション マニフェストを使用します。
--location <Location>
ディストリビューションのインストール パスを設定します。
--name <Name>
ディストリビューションの名前を設定します。
--no-distribution
必要なオプション コンポーネントのみをインストールし、ディストリビューションはインストールしません。
--no-launch, -n
インストール後にディストリビューションを起動しません。
--version <Version>
新しいディストリビューションに使用するバージョンを指定します。
--vhd-size <MemoryString>
ディストリビューションを保存するディスクのサイズを指定します。
--web-download
Microsoft Store ではなくインターネットからディストリビューションをダウンロードします。
参考資料
Discussion