Монтирование образа диска 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/