WSL2のインスタンスをコピーする
何かを試したいときにWSL2のインスタンスをシュッとコピーして破棄したい。
すでに WSL2でUbuntu-18.04 を稼働させているところからスタート。
$ wsl -l -v
NAME STATE VERSION
* Ubuntu-18.04 Running 2
コピー元となる Ubuntu-18.04 を止めます。
$ wsl -t Ubuntu-18.04
止まりました。
$ wsl -l -v
NAME STATE VERSION
* Ubuntu-18.04 Stopped 2
止めたWSL2 インスタンスをエクスポートします。
$ wsl --export Ubuntu-18.04 C:\Users\foo\WSL2\Ubuntu-18.04.tar
PCやインスタンスのスペックによりますが、エクスポートにはちょっと時間がかかります。
C:\Users\foo\WSL2\Ubuntu-18.04.tar
がエクスポートした実体ファイルです。
今度はインポートします。
$ wsl --import Ubuntu-18.04-2 C:\Users\foo\WSL2\instances C:\Users\foo\WSL2\Ubuntu-18.04.tar
無事、インポートできました。
$ wsl -l -v
NAME STATE VERSION
* Ubuntu-18.04 Stopped 2
Ubuntu-18.04-2 Stopped 2
新しいインスタンスを起動してログインします。
$ wsl -d Ubuntu-18.04-2 -u foo
-u
を指定しなければ root でログインします。
Windows Terminal でメニューに追加します。
設定ファイルの json ファイルを開いて、適当に元のインスタンスのものをコピーして書き換えます。
{
"guid": "{353609c4-612a-57e6-1dd5-1f0e2f372625}",
"hidden": false,
"name": "Ubuntu-18.04-2",
"commandline": "wsl -d Ubuntu-18.04-2 -u foo"
}
インスタンスの登録を解除する
$ wsl --unregister Ubuntu-18.04-2
.tar
ファイルは不要なら削除しても良いけど、再利用するなら取っておいても良い。自分は最新の状態からコピーしたいので毎度エクスポートしてインポートするようにしてる。
使い捨てで何かを試したいときに便利。