如何在Ubuntu 13.10中挂载一个VDI文件?

我正在尝试在Ubuntu 13.10中挂载一个vdi文件。我试过了
sudo apt-get install virtualbox-fuse

但它抱怨找不到该软件包。
对我来说,将其转换为原始格式并不是一个真正的选择,因为我没有足够的可用空间。
5个回答

在Ubuntu 14.04上运行Virtualbox 4.3.10,我通过强制dpkg安装了该软件包。
sudo dpkg -i --force-depends virtualbox-fuse_4.1.18-dfsg-1ubuntu1_amd64.deb

一切在那之后都正常运作。
当你挂载vdi文件时,它只会给你访问分区的权限,但你还需要将分区挂载到某个位置。例如:
mkdir ~/vdisk
mkdir ~/part1
sudo vdfuse -f Machine.vdi ~/vdisk
sudo mount ~/vdisk/Partition1 ~/part1

值得一提的是,这种方法会使APT(高级软件包管理器)在卸载包之前变得愤怒。考虑到我只是试图从一个拒绝引导的虚拟机中复制数据,当完成后我就卸载了这个包。 - David Baucum
sudo dpkg -i --force-depends virtualbox-fuse_4.1.22-dfsg-0ubuntu2_amd64.deb - diyism

根据@gavenkoa的回答,但是用于挂载现有的镜像而不是创建新的镜像:
$ sudo apt-get install qemu-utils
$ sudo modprobe nbd max_part=16
$ sudo qemu-nbd -c /dev/nbd0 ~/path/to/my.vdi
$ sudo partprobe /dev/nbd0
$ sudo mount /dev/nbd0p1 /mount-target

如果您有多个分区,您可以通过编号访问它们 — nbd0p1 是第一个分区,nbd0p2 是第二个分区,依此类推。
在完成调查后,您应该从网络设备卸载 VDI 镜像。
$ sudo qemu-nbd -d /dev/nbd0

virtualbox-fuse已从apt存储库中删除。您可以从Launchpad下载并安装它。下载完成后,只需在键盘上按下Ctrl+Alt+T即可打开终端。打开终端后,导航到文件下载的位置,并运行以下命令:
sudo dpkg -i <package_name>.deb

安装完成后,您可以通过输入命令来挂载vdi文件。
sudo vdfuse -f /home/user/file.vdi /home/user/mountpoint

注意:virtualbox-fuse依赖于virtualbox 4.1.18,无法与4.2版本兼容。感谢Marius的贡献。

2这是正确的答案,但应指出的是,VirtualBox 4.2没有virtualbox-fuse。对于那些使用4.2版本的人来说,如果想使用这个软件,你们应该降级。 - marius-nyxpoint

...对于那些使用4.2版本的人来说,如果你想使用这个软件,你应该降级...
这是不正确的!"vbfuse"的4.1版本与官方VirtualBox版本的4.x系列兼容。
只需下载virtualbox-fuse软件包,但不要安装它:
sudo apt-get install -d virtualbox-fuse

相反,只需将该软件包复制到一个(临时)目录中,提取并将“vdfuse”二进制文件复制到您的系统中。
mkdir /tmp/vboxfuse
cd /tmp/vboxfuse
mv /var/cache/apt/archives/virtualbox-fuse*.deb .
dpkg -x virtualbox-fuse*.deb .
cp -av usr/bin/vdfuse /usr/bin/.
cd /tmp
rm -rf vboxfuse

根据您系统中 /usr 和 /var 的权限,执行上述命令中的一些可能需要 root 权限。

这样您就不必卸载您的 virtualbox-4.x。 在 Ubuntu 12.04 下测试过,但也应该适用于其他版本。

参见:https://wiki.blue-it.org/VirtualBox#Mount_a_vmdk_file_in_linux


1这在.vdi文件上不起作用。 - Ken Sharp

准备工作环境:
$ mkdir ~/devel/lfs
$ VBoxManage createhd --filename ~/devel/lfs/lfs.vdi --size 2000 --format VDI

获取所需的软件包:
$ sudo apt-get install qemu-utils
$ sudo modprobe nbd max_part=16

没有max_part=16,我在Debian上执行后续命令时会出错。
$ sudo partprobe /dev/nbd0                                                                                                                
Error: Error informing the kernel about modifications to partition /dev/nbd0p1 -- Invalid argument.
This means Linux won't know about any changes you made to /dev/nbd0p1 until you reboot -- so you shouldn't mount it or use it in any
way before rebooting.                                                                               
Error: Failed to add partition 1 (Invalid argument)

制作分区并格式化:
$ sudo qemu-nbd -c /dev/nbd0 ~/devel/lfs/lfs.vdi
$ { echo mklabel msdos; echo mkpart primary ext2 0s -1s; echo quit; } | sudo parted /dev/nbd0
$ sudo partprobe /dev/nbd0
$ sudo mkfs.ext3 /dev/nbd0p1

挂载图像:
$ mkdir ~/devel/lfs/image
$ sudo mount /dev/nbd0p1 ~/devel/lfs/image

完成调查后,您应该将VDI镜像从网络设备卸载。
$ sudo qemu-nbd -d /dev/nbd0

太好了,但他只想挂载镜像,而不是销毁其中的所有数据。 - Ken Sharp
2按照完全相同的指示进行,跳过"parted"和"mkfs"行以挂载现有镜像(显然还要跳过"createhd")。 - lalomartins