💾
[WSL2] --import-in-placeオプションを使ってディストリビューションを複製する
モチベーション
WSL2の環境を複製する機会があるたびにwsl --helpやネットの記事を調べてwsl --import ...をしていたのですが,ヘルプを眺めていたら--import-in-placeオプションがあることに気付いたのでまとめてみました.
ざっくりまとめ
-
*.vhdxファイルをWSLにインポートするオプションです. -
--importよりディレクトリ構成が浅くなります.
使用例
$ wsl -t MyDistro
$ wsl --export MyDistro \path\to\MyDistro-2.vhdx
$ wsl --import-in-place MyDistro-2 \path\to\MyDistro-2.vhdx
--import-in-placeオプションとは
v0.58.0 (2022年4月)でリリースされていたようです.(知らなかった...)
構文
$ wsl --import-in-place <Distribution Name> <FileName>
-
<Distribution Name>-
wsl --listで見られるディストリビューション名.Ubuntu,docker-desktop-dataとか
-
-
<FileName>- 新しいディストリビューションとしてインポートされる.vhdxファイルのパス.このパスには
.vhdx拡張子を必ずつけること. つけ忘れると怒られます.$ wsl --export Ubuntu .\Ubuntu-hoge --vhd 指定されたファイルには .vhdx ファイル拡張子が必要です。 exit status 4294967295
- 新しいディストリビューションとしてインポートされる.vhdxファイルのパス.このパスには
実際に使ってみる
0. ファイルをまとめておくディレクトリを作成する
(個人的な好みですが)ディストリビューションの仮想ディスク(*.vhdxファイル)はまとめておきたいので%USERPROFILE%\wsl-distroを作ってそこで作業します.別に要らないやという方は読み飛ばしてください.
$ mkdir %USERPROFILE%\wsl-distro
$ cd %USERPROFILE%\wsl-distro
ここまでのディレクトリ構成
%USERPROFILE% (== C:\Users\onamae\)
+ +-- wsl-distros\
1. ディストリビューションを*.vhdxファイルにエクスポートする
まずは既存のUbuntuディストリビューションをエクスポートします.このときの注意点として,--import-in-placeオプションは.vhdxファイルを使うので,エクスポート時には.vhdxファイルである必要があります.
$ wsl --export Ubuntu .\Ubuntu-hoge.vhdx --vhd
ここまでのディレクトリ構成
%USERPROFILE% (== C:\Users\onamae\)
+-- wsl-distros\
+ +-- Ubuntu-hoge.vhdx
2. *.vhdxファイルをインポートする
- でエクスポートした
Ubuntu-hoge.vhdxをディストリビューションとしてWSLにインポートします.
$ wsl --import-in-place Ubuntu-hoge .\Ubuntu-hoge.vhdx
これでwslからUbuntu-hogeが起動できるようになります.
$ wsl --list
(略)
Ubuntu-hoge
(略)
$ wsl -d Ubuntu-hoge
root@LETSNOTE:/mnt/c/Users/Windowsのユーザ名/wsl-distributions#
--import と --import-in-placeの違い
wsl --importとwsl --import-in-placeを使ったディストリビューションの複製には,ディレクトリ構成の面で違いが出ます.
--importを使った方法
$ wsl --export Ubuntu .\Ubuntu-hoge.tar
$ wsl --import Ubuntu .\Ubuntu-hoge Ubuntu-hoge.tar
.
+-- Ubuntu-hoge\
| +--- ext4.vhdx
+-- Ubuntu-hoge.tar
--import-in-placeを使った方法
$ wsl --export Ubuntu .\Ubuntu-hoge.vhdx --vhd
$ wsl --import-in-place Ubuntu-hoge .\Ubuntu-hoge.vhdx
.
+-- Ubuntu-hoge.vhdx
--import-in-placeオプションを使った方法のほうがディレクトリがより浅く済んでいます.また*.tarファイルが作成されないので,複製時にバックアップを残しておきたいなら--import,バックアップがいらないなら--import-in-placeを使うのがよいと思います.
参考
-
ディストリビューションをインプレースでインポートする, WSL の基本的なコマンド| Microsoft Learn
-
--import-in-placeの説明
-
-
ユーザー設定, WSL での詳細設定の構成 | Microsoft Learn
- ディストリビューションのログイン時におけるデフォルトユーザーの変更方法
Discussion