Монтирование образа диска VMDK

У меня есть один файл образа vmware disk с расширением vmdk

Я пытаюсь установить это и исследовать все разделы (включая скрытые).

Я попытался выполнить несколько руководств, например: 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

Что я делаю неправильно?

Ответ 1

Для новых 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

Ответ 2

Вы также можете использовать 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 должен быть -r только для чтения, чтобы его можно было смонтировать с помощью qemu

а потом я креплю его с

mount /dev/nbd1p1 /mnt

Я использую nbd1, потому что nbd0 иногда выдает: 'mount: специальное устройство /dev/nbd0p1 не существует'

Для дисков .ova

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

Вышеизложенное .vmdk диск .vmdk и затем смонтирует его.

Ответ 3

Установите affuse, затем смонтируйте его.

affuse /path/file.vmdk /mnt/vmdk

Необработанное diskimage теперь находится в /mnt/vmdk. Проверьте размер его сектора

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

Умножьте секторный и начальный. В примере это будет 2048 * 512

echo 2048*512 | bc
1048576

С помощью этого смещения

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

Теперь диск должен быть установлен и доступен для чтения на/mnt/vmdisk

Ответ 4

Я нашел и ответ от commandlinefu.com довольно приятный:

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

Вы также можете активировать тома LVM на изображении, запустив

vgchange -a y

а затем вы можете установить LV внутри изображения.

Чтобы отключить изображение, umount раздел /LV, отключите VG для изображения

vgchange -a n <volume_group>

затем запустите

kpartx -dv <image-flad.vmdk>

чтобы удалить сопоставления разделов.

Ответ 5

У вас есть пакет программного обеспечения для ntfs?

Try

apt-get install ntfs-3g

в системах на основе debian.

Ответ 6

Не разрешено комментировать пост @Thomas (ответ 38 upvotes). Я хотел бы сообщить следующему человеку, который может столкнуться со следующим кодом ошибки, сгенерированным из guestmount, при использовании qemu-img, как решить проблему.

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

Попробуйте сгенерировать сырую версию .vmdk, используя vmdkmount

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

Внутри смонтированного каталога находится файл vmdk1 (ваш необработанный файл)

Теперь попробуйте загрузить vmdk, используя guestmount

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

Ответ 7

У меня работают следующие команды:

fdisk -lu vm.img # get offset
mount -o ro,norecovery,loop,offset=65536 vm.img /mnt/dir/