🚑

WindowsでWSL2のvhdxファイルを別のユーザーの環境に直接コピーする方法

2022/08/01に公開

概要

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のホームディレクトリ以下に対する完全なアクセス権を持っているものとする。
  • UserSrcWSL2上で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を立ち上げる。

脚注
  1. https://techracho.bpsinc.jp/morimorihoge/2021_11_26/113804 ↩︎

Discussion