外部ストレージのマウント
WSLを使っていると、Windowsホストのファイルシステムは/mnt/c等にマウントされています。しかし、WSL2やHyper-V等のvhdxファイルをバックアップとして保存しておき、一時的に取り出したいケース。あるいは、WSL2の標準のファイルシステムから独立したパーティションをDドライブ等システムドライブ以外に置きたい場合があると思います。
vhdxのマウント方法
wsl --mount --vhd 'd:\foo.vhdx'
WSLは長らくWindowsコンポーネント版とストア配布のpreviewに分かれて配布されていますが、ストア版が1.0となったことにより、こちらが標準という位置づけになるそうです。そして、ストア版ではコンポーネント版に比べさまざまな機能追加がなされています。vhd/vhdxのマウントもその一つなので、オプションが見つからない場合にはストアから「Windows Subsystem for Linux」をインストールしてください。
アクセスが拒否されることがある
mountオプションが利用可のであるにもかかわらず、以下のようなエラーが発生する場合があります。
ディスク '\\?\D:\foo.vhdx'を WSL2 に接続できませんでした: アクセスが拒否されました。
Error code: Wsl/Service/AttachDisk/MountVhd/E_ACCESSDENIED
この問題はfoo.vhdxにWSLを利用しているユーザーへのフルコントロールが許可されていないために発生するそうです。実際には所属グループに対してフルコントロールが許可されているので問題なさそうですが、この操作を行うにあたり、ユーザー
自身への許可が必要なのだそうです。
解決方法は、foo.vhdxのプロパティを開いて、セキュリティのタブからログインしているユーザー
にフルコントロールの許可を与えてください。
unmountする場合には
d:\foo.vhdx をマウントすると、メッセージには\\?\D:\foo.vhdx
がマウントできた、あるいは出来なかったと表示されています。
アンマウントする際には以下のように指定が必要のようです。
wsl --unmount '\\?\D:\foo.vhdx'