wsl --mountで別のVMのディスクをマウントする

2024/01/08に公開

WSL2で複数のディストリビューションを使っているときや、ディストリビューションを変更するときなど、VMのディスクをマウントしたい場合があります。

Windows上では、WSL上でのファイルシステムを透過的に扱えますが、それぞれのVMは独立しているために、そのままではVM間でファイルを共有することはできません。

検索すると、sshfsを使う方法などが紹介されていますが、マウントされる側のディスクを使うVMを落としたままでよければ、WSLの機能だけで可能です。

たとえば、Ubuntuのディスクをマウントしたい場合は、以下のようなコマンドをPowerShell上で実行すると/tmp/wsl/ubuntuにマウントされます。

wsl --mount \
--vhd C:\Users\YOUR_USER_NAME\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu_YOUR_HASH\LocalState\ext4.vhdx \
--name ubuntu

ただし、この方法でマウントする場合は wsl --shutdown 等でWSL自体が終了している必要があります。wsl --terminate <distro> で該当のVMだけを停止させた状態ではだめでした。また、マウントしているディスクを使うVMを立ち上げることもできません。

なお、--vhdに指定するvhdxファイルの位置を調べる方法は、軽く調べた感じはなさそうでした。一般には%APP_DATA%配下に入るのでその下を検索するか、wsl --importで作成した場合はそのパスを覚えておくとよさそうです。

GitHubで編集を提案

Discussion