Microsoft Storeから WSL 環境をインストールすると、1種類のディストリビューションは1個の環境としてしかインストールできない(と思う)。
だが同一ディストロの環境を気軽に複数作ったり壊したり消したり、使い捨てで使いたいこともあるだろう。ターミナルから簡単に環境を複製できるのでやり方を書いておく。
手順
WSL が入っているのは前提とする。まずターミナルで wsl -l --verbose
を実行して、手元に存在する環境を確認する。
PS C:\Users\user01> wsl -l --verbose
NAME STATE VERSION
* Ubuntu-20.04 Running 2
docker-desktop Running 2
docker-desktop-data Running 2
例えばストアからインストールした Ubuntu-20.04 が入っていれば上記のように出力される。この、環境名 Ubuntu-20.04
としてインストールされている Ubuntu を使い捨て用に複製してみることにする。
WSL のエクスポート機能で、環境を丸ごと tar ファイルとして出力できる。wsl --export (エクスポートしたい WSL 環境名) (出力ファイル名)
を実行すればよい。
PS C:\Users\user01\export_distro> wsl --export Ubuntu-20.04 FocalFossa_copy.tar
これで元の Ubuntu-20.04
の環境が tar ファイルとして出力されるので、あとはこれに別の環境名を付けてインポートすれば同一環境が得られる。wsl --import (WSL 下に登録する環境名) (インストール先パス) (インポートする環境.tar)
を実行すればよい。
PS C:\Users\user01\export_distro> wsl --import FocalFossa_copy ..\wsl_manual_install\ FocalFossa_copy.tar
これで、指定した環境名で元の Ubuntu-20.04
と同一の環境が複製された。
PS C:\Users\user01> wsl -l --verbose
NAME STATE VERSION
* Ubuntu-20.04 Running 2
FocalFossa_copy Stopped 2
docker-desktop Running 2
docker-desktop-data Running 2
ターミナルから wsl -d (環境名)
と打ち込んで起動してもよいし、もしくは Windows Terminal のタイトルバーの ∨
ボタンから表示できる環境リストから選んで起動するなりすればよい。
PS C:\Users\user01> wsl -l --verbose
NAME STATE VERSION
* Ubuntu-20.04 Running 2
FocalFossa_copy Running 2
docker-desktop Running 2
docker-desktop-data Running 2
無事、同一ディストロが別名環境として起動している。
なお、インポート時に指定したインストール先に環境の実体であるハードディスクイメージファイル ext4.vhdx
が生成されているが、中身は \\wsl$\
下にマウントされているのでそちらからエクスプローラーでブラウジングすることができる。(※ 実体ファイルは常に ext4.vhdx
というファイル名になるので、1つのディレクトリには1つのハードディスクイメージファイルしか作成できず、同じところに複数作ろうとすると 指定されたインストール場所は、既に使用されています。
と出て拒否られる。環境ごとにディレクトリを用意すること。)
いらなくなった環境を削除したいときは、wsl --unregister (登録名)
で削除できる。
わりと簡単に環境を複製・破壊・廃棄できるので、気兼ねなく遊んでみよう!