Возможно ли монтировать образы дисков VMWare под Linux?
Я нашел следующие две статьи, обе из которых рекомендуют использовать kpartx -av diskimage-flat.vmdk
. Однако обе статьи старые, и когда я пробую их на моем Ubuntu Utopic 14.10, они больше не работают.
$ sudo kpartx -av MyWin81.vmdk
$ sudo ls /dev/mapper/loop* | wc -l
ls: cannot access /dev/mapper/loop*: No such file or directory
0
Раскрытие информации: Мой образ диска VMWare — это плоский образ диска. Более того (прежде чем вы порекомендуете петлевое монтирование), это образ диска с несколькими разделами, где первый раздел — Window8, а следующие два — Linux. Мне больше интересно работать над следующими двумя разделами Linux.
Может кто-нибудь подтвердить? Спасибо.
Монтирование образов плоских дисков VMWare под Linux http://cromoteca.com/en/blog/mountflatvmwarediskimagesunderlinux/
Смонтируйте файл виртуального диска VMware (.vmdk) на компьютере с Linux http://www.commandlinefu.com/commands/view/12554/mount-a-vmware-virtual-disk-.vmdk-file-on-a-linux-box
ОБНОВЛЯТЬ:
vmware-mount
выглядит очень многообещающе, но я пока не могу заставить это работать:
$ vmware-mount -p Win81.vmdk
VixDiskLib: Invalid configuration file parameter. Failed to read configuration file.
Nr Start Size Type Id Sytem
-- ---------- ---------- ---- -- ------------------------
1 2048 78643200 BIOS 7 HPFS/NTFS
2 78645248 6039552 BIOS 83 Linux
3 84684800 41144320 BIOS 83 Linux
% vmware-mount Win81.vmdk 1 /mnt/tmp1/
VixDiskLib: Invalid configuration file parameter. Failed to read configuration file.
Failed to mount partition 1 of disk 'Win81.vmdk' on '/mnt/tmp1/': Insufficient permissions to perform this operation
% vmware-mount -L
VixDiskLib: Invalid configuration file parameter. Failed to read configuration file.
No mounted disks.
$ vmware-mount | head -3
VixDiskLib: Invalid configuration file parameter. Failed to read configuration file.
VMware DiskMount Utility version 6.0.0, build-2496824
Usage: vmware-mount diskPath [partition num] mountPoint
Примечание: 2-я и 3-я команды запускаются напрямую root
, но я получаю "Недостаточно прав для выполнения этой операции"?
решение1
Вы также можете использовать 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: special device /dev/nbd0p1 does not exist»
Для .ova
tar -tf image.ova
tar -xvf image.ova
Вышеприведенный код извлечет .vmdk
диск и затем смонтирует его.
Моя конфигурация:
Ubuntu: 16.04.3 LTS Kernel: 4.4.0-112-generic Package: qemu-utils version: 1:2.5+dfsg-5ubuntu10.22 Vmdk: 3 but should be any
решение2
В моей машине петлевые устройства находятся в формате /dev
.Эта статьяупоминает /dev/wrapper и /dev, так что это может быть вам полезно.
С другой стороны,эта другая статьяиспользует vmware-mount
команду для достижения того же самого.
Примечание: Моя система — это Slackware64-current (в основном), но с программным обеспечением в основном на основе gtk.
решение3
Установите affuse, затем смонтируйте с его помощью файл:
affuse /path/file.vmdk /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
Умножить sectorsize и startsector. В примере это будет 2048*512
echo 2048*512 | bc
1048576
Монтировать с использованием этого смещения
mount -o ro,loop,offset=1048576 /mnt/vmdk/file.raw /mnt/vmdisk
Теперь диск должен быть смонтирован и доступен для чтения в /mnt/vmdisk.