Answers:
您可以将其转换为标准映像,然后将其装入。
VBoxManage clonehd --format RAW ubuntu.vdi ubuntu.img
然后
mount -t ext3 -o loop,rw ./ubuntu.img /mnt
ext3
在这种情况下,您需要知道文件系统的类型。挂载后,进入并使用您选择的编辑器进行编辑。不要将/mnt
位置内部的文件与正在运行的主机混淆,否则会很糟糕。
要检查有关VDI文件的详细信息,请运行:VBoxManage showhdinfo ubuntu.vdi
。
VBoxManage showhdinfo [your vdi file]
如果不确定,请看一下输出。
使用时qemu-nbd
,该过程将在serverfault和此博客中进行说明。
基本上,qemu
如果需要,您将必须安装:
sudo apt-get install qemu
然后,您需要加载网络模块设备模块:
sudo rmmod nbd
sudo modprobe nbd max_part=16
将.vdi映像附加到刚创建的nbd之一:
sudo qemu-nbd -c /dev/nbd0 drive.vdi
现在,您将获得一个/ dev / nbd0块设备,以及几个/ dev / nbd0p *分区设备节点。
sudo mount /dev/nbd0p1 /mnt
完成后,卸载所有东西并断开设备连接:
sudo qemu-nbd -d /dev/nbd0
qemu-kvm
而不是安装qemu
可能同样有效。它在我的Ububtu 16.04上为我完成了安装,仅安装23MB和13个依赖项,而不是230MB以及完整的qemu安装的更多依赖项。
sudo partprobe
需要使用较新的内核来执行,以便/dev/nbd0p*
在Debian / Ubuntu中创建(bugs.debian.org/cgi-bin/bugreport.cgi?bug=824553)。
看起来vdfuse是您要寻找的工具。它在Ubuntu存储库中。如果您想自己编译(2010年资料),也可以这样做。
但是对于我们大多数人来说,它可以归结为一个简单的例子:
sudo apt-get install virtualbox-fuse
似乎它现在也支持动态vdi。
并使用以下命令将.vdi
文件挂载到/mnt
dir中:
sudo vdfuse -a -f /path-to-vdi-file /mnt
整个磁盘将安装有partitions Partition1
,Partition2
命名格式。然后可以循环安装这些文件。例如,
sudo mount -o loop /mnt/Parition1 /mountpoint
将磁盘设置为另一个虚拟OS的辅助主磁盘,然后启动到该(虚拟)OS,然后就可以挂载它。
步骤1:假设您已经在Virtual(虚拟)框中安装了虚拟操作系统(例如Ubuntu 16.04),请从该虚拟OS的设置中添加新的存储。
第2步:浏览要访问的Vdi文件并选择它。
步骤3:登录虚拟操作系统。
步骤4:虚拟磁盘可能会在OS内部可用。如果不是,请按照步骤5进行操作
步骤5:在虚拟操作系统中,使用Gparted并检查磁盘。并确保磁盘是虚拟OS可以访问的类型。如果不是,则可能必须编辑磁盘,但是这样会丢失现有内容。
我还没有进行自我测试,但是有一个保险丝模块可以安装它们(vdfuse
),请检查以下页面:
请注意,使用它进行写访问是有风险的。
用法:
$ ./vdfuse-v<version> -h
USAGE: ./vdfuse [options] -f image-file mountpoint
-h help
-r readonly
-t specify type (VDI, VMDK, VHD, or raw; default: auto)
-f VDimage file
-a allow all users to read disk
-w allow all users to read and write to disk
-g run in foreground
-v verbose
-d debug
要使用文件名直接挂载映像:
$ ./vdfuse-v<version> -f image.vdi /mnt/vdi
$ mount -o loop /mnt/vdi/Partition1 /mnt/WindowsXP
挂载机器磁盘(包括快照):
$ ./vdautomount-<version> -p /path/to/vdfuse WinXP /mnt/vdi
$ mount -o loop /mnt/vdi/Partition1 /mnt/WindowsXP
不是您要求的,但是如果只是从vdi中获取文件的问题,而您想要一个非常快速的解决方案:
apt-get install openssh-server && service ssh restart
)sftp hostuser@hostip
)put
根据需要将许多文件发送到主机。正如Vojtech Trefny所述,
1)首先转换您的VDI-> IMG
VBoxManage clonehd --format RAW ubuntu.vdi ubuntu.img
2)然后安装IMG
mount -t ext3 -o loop,rw ./ubuntu.img /mnt
3)但是,当我收到此错误消息时:
mount: wrong fs type, bad option, bad superblock on /dev/loop0,
missing codepage or helper program, or other error
In some cases useful info is found in syslog - try
dmesg | tail or so
dmesg说:
[3105578.013671] EXT4-fs (loop0): VFS: Can't find ext3 filesystem
您需要检查.img的分区结构:
fdisk -l ubuntu.img
Disk ubuntu.img: 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: 0xf45bc910
Device Boot Start End Blocks Id System
ubuntu.img1 * 2048 12582911 6290432 83 Linux
ubuntu.img2 12584958 16775167 2095105 5 Extended
ubuntu.img3 16775168 40959999 12092416 83 Linux
ubuntu.img5 12584960 16775167 2095104 82 Linux swap / Solaris
4)如您所见,主分区从字节16775168开始。但是,请注意扇区大小为512字节,因此您需要将结果乘以16775168 x 512 = 8588886016,因此需要像这样偏移安装:
mount -t ext3 -o loop,rw,offset=8588886016 ./ubuntu.img /mnt
5)实际上,如果文件系统在调整大小后变脏,这对我不起作用。在这种情况下,我进一步这样做:
dd if=ubuntu.img of=ubuntu.disk bs=512 skip=16775168 count=12092416
e2fsck ubuntu.disk
mount ubuntu.disk /mnt