WindowsでWSL2のvhdxファイルを別のユーザーの環境に直接コピーする方法
概要
Windowsにおいて、WSL2環境を同一ホストの別ユーザーに移行する場合、importとexport機能を使うのが一般的である。[1]
しかし、この方法は移行前と移行後のどちらのWindowsユーザーもアクセス可能であることが前提であり、緊急時にバックアップファイルから直接復元する際に利用することはできない。
本記事では、WSLのVMイメージであるvhdxファイルを別のユーザーの環境に直接コピーする方法について記す。
DISCLAIMER
以下の内容を読んだ上で自己責任で実行すること。
- 本手法は公式に保証されている方法ではない。
- 本手法は偶然動いたことを確認したのみであり、一切動作の保証はできない。
- 本手法は再現実験等を行っていないため、他の環境や他のバージョンで動く保証はない。
環境
- OS: Windows 10 Pro 21H2 (ビルド 19044.1826)
- WSL環境: Ubuntu 22.02 LTS
- WSLバージョン: 2
前提条件
ユーザー名を以下の通りとする。
- 移行前ユーザ:
UserSrc
- 移行後ユーザ:
UserDst
-
UserSrc
のホームディレクトリ配下は完全な形でバックアップされているものとする。バックアップディレクトリは\Backup
とする。 -
UserDst
あるいは管理ユーザーは、バックアップディレクトリ及びUserDst
のホームディレクトリ以下に対する完全なアクセス権を持っているものとする。 -
UserSrc
はWSL2
上でUbuntu 22.02 LTS
を動かしており、その最新の状態がバックアップされているものとする。 -
Docker Desktop
がインストールされているものとする。
方法概要
Ubuntu 22.04 LTS
ユーザーのVMイメージファイルは$HOME\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu22.04LTS_***\LocalState\ext4.vhdx
に設置されている。
このファイルはUbuntu 22.04 LTS
インストール時に新規に作成されるが、起動時に単に読み込むだけ(他のメタデータファイル等を参照しない模様)なので、差し替えることでそのまま起動できる。
方法
まずUserDst
において、Microsoftストアから通常通りにUbuntu 22.02 LTS をインストールし、自分の環境で新規にVMを作成する。
以下のファイルが存在することを確認する。
\Users\UserDst\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu22.04LTS_***\LocalState\ext4.vhdx
(ファイル1)
次に、バックアップディレクトリに以下のファイルがあることを確認する。
\Backup\UserSrc\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu22.04LTS_***\LocalState\ext4.vhdx
(ファイル2)
PowerShell上で以下のコマンドを実行し、すべてのWSLコンテナが終了していることを確認する。
wsl --shutdown
Docker Desktopを終了する。
ファイル1のバックアップを取得する。
ファイル2をファイル1のパスに上書きする。
Docker Desktopを起動し、WSLでUbuntuを立ち上げる。
Discussion