💾
[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\
*.vhdx
ファイルにエクスポートする
1. ディストリビューションをまずは既存のUbuntu
ディストリビューションをエクスポートします.このときの注意点として,--import-in-place
オプションは.vhdx
ファイルを使うので,エクスポート時には.vhdx
ファイルである必要があります.
$ wsl --export Ubuntu .\Ubuntu-hoge.vhdx --vhd
ここまでのディレクトリ構成
%USERPROFILE% (== C:\Users\onamae\)
+-- wsl-distros\
+ +-- Ubuntu-hoge.vhdx
*.vhdx
ファイルをインポートする
2. - でエクスポートした
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