WSL2で仮想ディスクイメージをマウントする


ツールとしては qemu-nbd を使うのですが、WSL2のデフォルトではカーネルモジュール nbd が有効になっていないので、カーネルを自分でビルドします。

カーネルビルド

方法は WSL2でカスタムカーネルをビルドして使う に書きました。

ただし、ビルドする前にカーネルパラメータを変更します。

# CONFIG_BLK_DEV_NBD is not set
CONFIG_BLK_DEV_NBD=y

コマンドインストール

$ sudo apt install qemu-nbd

ネットワークブロックデバイス(nbd)の接続

$ ls -l /dev/nbd*
/dev/nbd0  /dev/nbd10  /dev/nbd12  /dev/nbd14  /dev/nbd2  /dev/nbd4  /dev/nbd6  /dev/nbd8
/dev/nbd1  /dev/nbd11  /dev/nbd13  /dev/nbd15  /dev/nbd3  /dev/nbd5  /dev/nbd7  /dev/nbd9

$ sudo qemu-nbd -c /dev/nbd0 /mnt/c/<path>/<to>/virtualbox.vdi

$ sudo sfdisk -d /dev/nbd0
label: dos
label-id: 0x9719b922
device: /dev/nbd0
unit: sectors
/dev/nbd0p1 : start=        2048, size=      204800, type=83, bootable
/dev/nbd0p2 : start=      206848, size=     4022272, type=82
/dev/nbd0p3 : start=     4229120, size=    12548096, type=83

マウントする

下の例では パーティション /dev/nbd0p3 をマウントしてますが、パーティションは環境によって変えてくださいね。

$ sudo mkdir /mnt/virtualbox

$ sudo mount /dev/nbd0p3 /mnt/virtualbox

アンマウントして、nbdも切断する

$ sudo umount /mnt/virtualbox

$ sudo qemu-nbd -d /dev/nbd3