2021/09/11

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 ファイルは不要なら削除しても良いけど、再利用するなら取っておいても良い。自分は最新の状態からコピーしたいので毎度エクスポートしてインポートするようにしてる。

使い捨てで何かを試したいときに便利。

サイト内検索