🔥

WSLのOS引っ越しでvdhxファイルを自動マウント

2022/10/03に公開

ArchLinuxに不満が出てきた

ArchLinuxベースのManjaroを使っていたが、
pacmanアップデート時に証明書エラーが乱発するようになった。
一応復旧はできるんだが面倒くさいのでOSを変えたい。

ただ、データサイズがとんでもない量になっているので、
Windows経由だと時間がかかりすぎる。

(゜-゜) OS丸ごとデータドライブとしてマウントできないかな

今後同じようなこともありそうだし。
データ用のvhdxを持っておいて、
OSを簡単に変えられるようにしたいなぁ。
となるとマウントも自動にしなきゃな。

ということでOS自体を別OSにマウントする想定でやってみよう。

ヾ(・ω<)ノ" 三三三● ⅱⅲ コロコロ♪

------------------- ↓ 本題はここから ↓-------------------

マウントされるOSのvhdxファイルを用意

ホストOSをUbuntu、マウントされるOSをdebianとすると

powershell
wsl --install ubuntu
wsl --install debian
wsl --export Debian --vhd Debian.vhdx
wsl --unregister debian

ホストOSにマウント

ゲストOS側でマウントを実行。
Linux側からwsl.exeコマンドを呼び出す。
vhdxファイルの保存先をC:\work\Debian.vhdxをとすると

bash
/c/Windows/System32/wsl.exe --mount "C:\work\Debian.vhdx" --name Debian --vhd

~/.profileにマウントコマンドを登録

マウントコマンドはシャットダウンすると解除される。
ただ、fstabやdiskpartでやる方法がどうも面倒くさい。
手っ取り早く.profile側に書いてしまおう

~/.profile
if [ ! -d /mnt/wsl/Debian ]; then
  /c/Windows/System32/wsl.exe --mount "C:\work\Debian.vhdx" --name Debian --vhd
fi

参考:
How to automount an external vhdx file in WSL2
WSL2で他のディスクをマウント

------------------- ↓ 後書きはここから ↓-------------------

vhdxファイル作成方法

コントロールパネルにハードディスク パーティションの作成とフォーマット という長い名前の機能がある。
ここでvhdxファイルを取り扱うことができるのだが、
OSが載ってるパーティションもごちゃ混ぜになってるUIなので使いたくない。

そこで、筆者はdistrodでAlpineなどの適当なゲストOSを作成して、
生成されたファイルを保存用vhdxとして使っている。

Discussion