挂载VMDK磁盘映像

时间:2014-03-11 13:51:06

标签: mount computer-forensics virtual-disk vmdk

我有一个带有vmdk扩展名的vmware磁盘映像文件

我正在尝试安装它并探索所有分区(包括隐藏的分区)。

我已尝试按照多个指南操作,例如:http://forums.opensuse.org/showthread.php/469942-mounting-virtual-box-machine-images-host

我可以使用vdfuse

安装图像
vdfuse -w -f windows.vmdk /mnt/

在此之后我可以看到一个分区和一个整个磁盘暴露

# ll /mnt/
total 41942016
-r-------- 1 te users 21474836480 Feb 28 14:16 EntireDisk
-r-------- 1 te users  1569718272 Feb 28 14:16 Partition1

继续本指南我尝试使用

安装EntireDisk或Partition1
mount -o loop,ro /mnt/Partition1 mnt2/

但是这给了我错误' mount:你必须指定一个文件系统类型'

试图找到我尝试的正确类型

dd if=/mnt/EntireDisk | file -
which outputs a ton of information but of note is:
/dev/stdin: x86 boot sector; partition 1: ....... FATs ....

所以我厌倦了作为一个vfat登上,但那给了我

mount: wrong fs type, bad option, bad superblock ...etc

我做错了什么?

7 个答案:

答案 0 :(得分:42)

对于较新的Linux系统,有命令' guestmount'。安装后,您可以运行以下命令在VMDK映像中安装第三个分区:

guestmount -a xyz.vmdk -m /dev/sda3 --ro /mnt/vmdk

或者,要自动检测并安装图像(不太可靠),您可以尝试:

guestmount -a xyz.vmdk -i --ro /mnt/vmdk

请注意,标记--ro只是将图像挂载为只读;要将图像挂载为读写,只需将其替换为标记--rw

guestmount包含在每个发行版的以下包中:

  • Ubuntu:libguestfs-tools
  • OpenSuse:guestfs-tools
  • CentOS:libguestfs-tools-c

答案 1 :(得分:3)

您也可以使用qemu:

对于.vdi

sudo modprobe nbd
sudo qemu-nbd -c /dev/nbd1 ./linux_box/VM/image.vdi

如果它们不是安装的,你可以安装它们(在Ubuntu就是这个命令)

sudo apt install qemu-utils

然后挂载

mount /dev/nbd1p1 /mnt

对于.vmdk

sudo modprobe nbd
sudo qemu-nbd -r -c /dev/nbd1 ./linux_box/VM/image.vmdk

请注意我使用了-r选项,因为 VMDK版本3必须只读才能通过qemu

安装

然后我挂载

mount /dev/nbd1p1 /mnt

我使用nbd1,因为nbd0有时会提供' mount:特殊设备/ dev / nbd0p1不存在'

对于.ova

tar -tf image.ova
tar -xvf image.ova

以上将提取.vmdk磁盘然后挂载。

答案 2 :(得分:2)

安装,然后使用它安装。

affuse /path/file.vmdk /mnt/vmdk

现在可以在/ mnt / vmdk下找到原始diskimage。 检查其扇区大小

fdisk -l /mnt/vmdk/file.vmdk.raw

# example

Disk file.vmdk.raw: 20 GiB, 21474836480 bytes, 41943040 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
Disklabel type: dos
Disk identifier: 0x000da525

Device       Boot Start      End  Sectors Size Id Type
/mnt/vmdk/file.vmdk.raw1 *     2048 41943039 41940992  20G 83 Linux

乘以sectorize和startsector。在示例中,它将是2048 * 512

echo 2048*512 | bc
1048576

使用该偏移量挂载

mount -o ro,loop,offset=1048576 /mnt/vmdk/file.raw /mnt/vmdisk

现在应该在/ mnt / vmdisk

上安装和读取磁盘

答案 3 :(得分:1)

我从commandlinefu.com找到并回答非常好:

kpartx -av <image-flat.vmdk>; mount -o /dev/mapper/loop0p1 /mnt/vmdk

您还可以通过运行

激活图像中的LVM卷
vgchange -a y

然后你可以将LV安装在图像中。

要卸载图像,请卸载分区/ LV,停用图像的VG

vgchange -a n <volume_group>

然后运行

kpartx -dv <image-flad.vmdk>

删除分区映射。

答案 4 :(得分:0)

你有ntfs的软件包吗?

尝试

apt-get install ntfs-3g

基于debian的系统。

答案 5 :(得分:0)

不允许在@Thomas帖子上发表评论(38个投票答案),我想通知下一个使用qemu-img解决问题时可能会从guestmount生成以下错误代码的人。

ERROR:  qemu-img: '' uses a vmdk feature which is not supported by this qemu version: VMDK version 

尝试使用vmdkmount生成.vmdk的原始版本

# vmdkmount {file}.vmdk  /ur/mount/path

在挂载目录中有一个vmdk1文件(您的原始文件)

现在尝试使用guestmount加载vmdk

# guestmount -a vmdk1 -i --ro /ur/mount/path

答案 6 :(得分:0)

您可以在this article中查看VMware虚拟磁盘开发套件(VDDK)的下载链接。下载并安装后:

vmware-mount -p path_to_vmdk将显示VMDK文件中的分区。例如:

Nr      Start       Size Type Id Sytem                   
-- ---------- ---------- ---- -- ------------------------
 1       2048  461371392 BIOS 83 Linux

然后就做:

sudo vmware-mount path_to_vmdk 1 /mnt/mount_point

我尝试了guestmount,但是它非常非常慢。在其下创建一个虚拟机,使用KVM等。疯狂的东西,慢到地狱。