vdiをlinuxでマウントする時のメモ

実際に試したのはarchlinux上でです

前提

qemu-nbdを使えるようにパッケージ管理などでいれておいてください
archlinuxだと

# pacman -S qemu

で入りました

やり方

# modprobe nbd

/dev/nbd0などを使えるようにする

# qemu-nbd -c /dev/nbd0 (vdiのファイル)

/dev/nbd0にvdiのファイルを割り当てる

# fdisk -l /dev/nbd0
Disk /dev/nbd0: 21.0 GB, 20971520000 bytes
255 heads, 63 sectors/track, 2549 cylinders, total 40960000 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x7febedc0

     Device Boot      Start         End      Blocks   Id  System
     /dev/nbd0p1   *        2048       67583       32768   83  Linux
     /dev/nbd0p2           67584     1116159      524288   82  Linux swap / Solaris
     /dev/nbd0p3         1116160    40959999    19921920   83  Linux

セクターとスタート位置を知る必要があるので調べる
例えばここで/dev/nbd0p3をマウントしたかったら標準出力の3行目の512 bytesと/dev/nbd0p3のStartの1116160を覚える

# mount -o offset=$((1116160*512)) /dev/nbd0 (好きなマウント先)

$( (1116160*512) )の1116160と512は先ほど覚えた数値
後は好きにマウントしたものをいじるだけ
いじり終わったら行儀よく

# umount (好きなマウント先に指定したもの)
# qemu-nbd -d /dev/nbd0
# rmmod nbd

アンマウントとかアンロードをしておきましょう