WSL 上で同一ディストリビューションの環境を複数インストール・管理する

公開:2020/09/24
更新:2020/09/24
4 min読了の目安(約2400字TECH技術記事

Microsoft Storeから WSL 環境をインストールすると、1種類のディストリビューションは1個の環境としてしかインストールできない(と思う)。
image.png
だが同一ディストロの環境を気軽に複数作ったり壊したり消したり、使い捨てで使いたいこともあるだろう。ターミナルから簡単に環境を複製できるのでやり方を書いておく。

手順

手元にあるディストリビューションの確認・エクスポート

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 のタイトルバーの ボタンから表示できる環境リストから選んで起動するなりすればよい。
image.png

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$\ 下にマウントされているのでそちらからエクスプローラーでブラウジングすることができる。
image.png

環境の廃棄

いらなくなった環境を削除したいときは、wsl --unregister (登録名) で削除できる。

わりと簡単に環境を複製・破壊・廃棄できるので、気兼ねなく遊んでみよう!