LoginSignup
12
11

WSL2環境をコピー(複製)する方法

Last updated at Posted at 2023-01-17

WSLが登場してから大変便利に利用しています。
以前はVMwareやVirtualBoxといった仮想マシンをローカルPCへ入れたりしていましたが、私の場合、たいていはWSLで足りる感じになっています。

私の場合、環境を使っているうちに、クラッシュしたり、パッケージをいじくりまわして設定おかしくなって困ったなど、しばしば環境を戻したいことがあります。
仮想マシンを利用していた時はそのイメージのスナップショットを取得することで丸ごとバックアップしていました。
WSL2でもバックアップすることが可能です。手順をメモしておきます。

環境

2023年1月時点の内容になります。WSLは結構進化している印象ですので、記事が古くなった際は注意です。
(導入手順など初期に比べるとかなり楽になりました)

OSはWindows11 Proです。PowerShellから操作します。

PS > wsl --version
WSL バージョン: 1.0.3.0
カーネル バージョン: 5.15.79.1
WSLg バージョン: 1.0.47
MSRDC バージョン: 1.2.3575
Direct3D バージョン: 1.606.4
DXCore バージョン: 10.0.25131.1002-220531-1700.rs-onecore-base2-hyp
Windowsバージョン: 10.0.22621.1105

登録済みWSL環境を複製する手順

元となる仮想ディスクの場所を確認

UbuntuをMicrosoftストアなどから導入した場合、下記にインストールされているはずです。

$env:LOCALAPPDATA\Packages\CanonicalGroupLimited.Ubuntu_79rhkp1fndgsc\LocalState\

エクスプローラーでも確認可能です。下記へアクセスします。

%LOCALAPPDATA%\Packages\CanonicalGroupLimited.Ubuntu_79rhkp1fndgsc\LocalState\

ext4.vhdx というファイルが仮想ディスクファイルの実体になります。

WSLを停止

まずはディストリビューションを確認します。

PS > wsl --list --verbose
  NAME         STATE           VERSION
*  Ubuntu       Stopped         2

停止します

PS > wsl --terminate Ubuntu
この操作を正しく終了しました。

ディストリビューションをコピー

下記コマンドを実行します。

PS > wsl --import NewUbuntu .\NewUbuntu $env:LOCALAPPDATA\Packages\CanonicalGroupLimited.Ubuntu_79rhkp1fndgsc\LocalState\ext4.vhdx --version 2 --vhd
インポート中です。この処理には数分かかることがあります。
この操作を正しく終了しました。

パラメータ --importで既存のものから新しいディストリビューションを作成することを指示しています。
先頭の NewUbuntu は新しいディストリビューション名(識別名)です。
2つ目の .\NewUbuntu はインストール先のパスです。
3つ目はインポート元のファイルです。上記の ext4.vhdx ファイルをフルパスで指定しています。
--version 2 は作成されるWSLバージョンが2であることを指示しています。
最後の --vhd はインポート元ファイルが .vhdx であることを指示しています。

確認

指定したインストール先パスへ .vhdxファイルが作成されています。

PS > ls .\NewUbuntu\
Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a---          2023/01/16    12:01     1155530752 ext4.vhdx

WSL上の管理対象ディストリビューションとして登録されています。

PS > wsl --list --verbose
  NAME         STATE           VERSION
  NewUbuntu    Stopped         2
* Ubuntu       Stopped         2

作成したディストリビューションを実行します。

PS > wsl --distribution NewUbuntu
Welcome to Ubuntu 22.04.1 LTS (GNU/Linux 5.15.79.1-microsoft-standard-WSL2 x86_64)
...
root@pc:/mnt/c/Users/....#

.vhdxファイルから復元する手順

登録済みディストリビューションとしてではなく、.vhdxファイルがあれば新たな環境を作成することも可能です。
バックアップ用途であればこちらの手順となります。
上記で作成した NewUbuntu ディストリビューションを複製します。

.vhdxファイルをローカルディスクへコピー

本手順では NewUbuntuディストリビューションの.vhdxファイルをコピーします。
(バックアップからのリストアの場合は別ストレージから.vhdxファイルをコピーすることになります)

PS > mkdir NewUbuntuCopy
PS > cp .\NewUbuntu\ext4.vhdx .\NewUbuntuCopy\

新規ディストリビューションとして登録

--import-in-place パラメータによって、既に存在する.vhdxファイルからディストリビューションを登録します。
指示する内容はディストリビューション名 NewUbuntuCopy と、上記でコピーした. vhdxファイルパスです。

PS > wsl --import-in-place NewUbuntuCopy .\NewUbuntuCopy\ext4.vhdx
この操作を正しく終了しました。

確認

WSL上の管理対象ディストリビューションとして NewUbuntuCopy が登録されています。

PS > wsl --list --verbose
  NAME             STATE           VERSION
  NewUbuntu        Stopped         2
* Ubuntu           Stopped         2
  NewUbuntuCopy    Stopped         2

作成したディストリビューションを実行します。

PS > wsl --distribution NewUbuntuCopy
root@pc:/mnt/c/Users/....#

不要なディストリビューションを削除

不要になったディストリビューションを登録解除します
.vhdxファイルも削除されるので注意です。

PS > wsl --unregister NewUbuntu
登録解除。
この操作を正しく終了しました。

最後に

以前は --export によって出力された .tarファイルを --importする手順だったと記憶しています。
現在は .vhdxファイルを直接指定して --import または --import-in-place によるディストリビューション登録が可能になっています。
.vhdxファイルだけバックアップしておけば復元できるのでとても簡単になりました。

12
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
11