まず、fuseを利用することになるのでfuse関連のモジュールをrpmパッケージでインストールしておく。
・fuse
・fuse-libs
・fuse-devel
あたり。
vdfuseをダウンロードする。同名のプロジェクトがいくつか存在するが、以下のURLのもので成功を確認した。
https://github.com/SophosLabs/vdfuse
中に含まれるREADMEとINSTALLの指示に従ってビルドする。
fetch_vbox_header.sh の実行は必要だった。
次に、autogen.sh
./configure
make
の順で実行した。
make時にVBoxDDU.soが無いというエラーが出るが、
OracleからVirtualBoxのインストーラをダウンロードして
実行したら、インストーラはインストールに失敗したが、
必要なファイルは/usr/lib/virtualbox/VBoxDDU.soとしてインストールされた。
VDIファイルのマウントは、
vdfuse -t VDI -a -f /path/to/vdi_file /path/to/mountpoint
すると、マウントポイントにEntireDiskとPartition1という2つのイメージファイルのような
ものが出現する。 そこで以下のようにfdiskで読み込ませ、
fdisk EntireDisk
pコマンドでパーティションテーブルを表示させてやると、Parttion 1の
Startが2048ブロックであることが表示される。
2048*512 = 1048576
なので、以下のようにoffsetを指定してマウントする。
mount -o loop,offset=1048576 -t ext4 /path/to/EntireDisk /mount_point
えがったえがった。