ツールとしては qemu-nbd
を使うのですが、WSL2のデフォルトではカーネルモジュール nbd
が有効になっていないので、カーネルを自分でビルドします。
カーネルビルド
方法は WSL2でカスタムカーネルをビルドして使う に書きました。
ただし、ビルドする前にカーネルパラメータを変更します。
./Microsoft/config-wsl
# 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