Ich habe eine einzelne VMware-Image-Datei mit der Erweiterung VMDK
Ich versuche, dies zu mounten und alle Partitionen (einschließlich der versteckten) zu untersuchen.
Ich habe versucht, verschiedenen Anleitungen zu folgen, wie zum Beispiel: http://forums.opensuse.org/showthread.php/469942-mounting-virtual-box-machine-images-Host
Ich kann das Image mit vdfuse mounten
vdfuse -w -f windows.vmdk /mnt/
Danach kann ich sehen, eine Partition und eine ganze Festplatte ausgesetzt
# ll /mnt/
total 41942016
-r-------- 1 te users 21474836480 Feb 28 14:16 EntireDisk
-r-------- 1 te users 1569718272 Feb 28 14:16 Partition1
Ich fahre mit der Anleitung fort und versuche, entweder EntireDisk oder Partition1 zu mounten
mount -o loop,ro /mnt/Partition1 mnt2/
Aber das gibt mir den Fehler "mount: Sie müssen einen Dateisystemtyp angeben"
Bei dem Versuch, den richtigen Typ zu finden, habe ich es versucht
dd if=/mnt/EntireDisk | file -
which outputs a ton of information but of note is:
/dev/stdin: x86 boot sector; partition 1: ....... FATs ....
Also war ich müde, als Vfat aufzusteigen, aber das gab mir
mount: wrong fs type, bad option, bad superblock ...etc
Was mache ich falsch?
Für neuere Linux-Systeme gibt es den Befehl 'guestmount'. Nach der Installation können Sie den folgenden Befehl ausführen, um die dritte Partition in einem VMDK-Image bereitzustellen:
guestmount -a xyz.vmdk -m /dev/sda3 --ro /mnt/vmdk
Alternativ können Sie zum automatischen Erkennen und Bereitstellen eines Image (weniger zuverlässig) Folgendes versuchen:
guestmount -a xyz.vmdk -i --ro /mnt/vmdk
Beachten Sie, dass das Flag --ro
das Bild einfach als schreibgeschützt einfügt. Um das Bild als Lese- und Schreibzugriff zu mounten, ersetzen Sie es einfach durch das Flag --rw
.
guestmount ist in folgenden Paketen pro Distro enthalten:
Sie können auch qemu verwenden:
.vdi
Sudo modprobe nbd
Sudo qemu-nbd -c /dev/nbd1 ./linux_box/VM/image.vdi
wenn sie nicht installiert sind, können Sie sie installieren (auf Ubuntu ist dieser Befehl).
Sudo apt install qemu-utils
und dann montieren
mount /dev/nbd1p1 /mnt
.vmdk
Sudo modprobe nbd
Sudo qemu-nbd -r -c /dev/nbd1 ./linux_box/VM/image.vmdk
beachten Sie, dass ich die Option -r
benutze, weil VMDK Version 3 nur lesbar sein muss , um von qemu eingehängt zu werden
und dann montiere ich es
mount /dev/nbd1p1 /mnt
Ich verwende nbd1
, weil nbd0
manchmal 'mount: special device/dev/nbd0p1 nicht vorhanden' ergibt.
tar -tf image.ova
tar -xvf image.ova
Das obige wird die .vmdk
-Diskette extrahieren und dann mounten.
Affuse installieren, dann einhängen.
affuse /path/file.vmdk /mnt/vmdk
Das Rohdatenträgerbild befindet sich jetzt unter /mnt/vmdk.Überprüfen Sie seine Sektorgröße
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
Multiplizieren Sie die Sektorengröße und den Startsektor. Im Beispiel wäre es 2048 * 512
echo 2048*512 | bc
1048576
Mit diesem Versatz einhängen
mount -o ro,loop,offset=1048576 /mnt/vmdk/file.raw /mnt/vmdisk
Die Festplatte sollte jetzt gemountet und auf/mnt/vmdisk lesbar sein
Ich fand und antwortete von commandlinefu.com recht nett:
kpartx -av <image-flat.vmdk>; mount -o /dev/mapper/loop0p1 /mnt/vmdk
Sie können LVM-Volumes im Image auch durch Ausführen aktivieren
vgchange -a y
und dann können Sie die LV in das Image einbinden.
Um das Image aufzuheben, heben Sie die Partition/LV auf und deaktivieren Sie den VG für das Image
vgchange -a n <volume_group>
dann renne
kpartx -dv <image-flad.vmdk>
um die Partitionszuordnungen zu entfernen.
@Thomas post nicht kommentieren (38 Antworten wurden vergeben) Ich würde die nächste Person informieren, die möglicherweise den folgenden Fehlercode enthält, der von guestmount generiert wird, wenn qemu-img das Problem löst.
ERROR: qemu-img: '' uses a vmdk feature which is not supported by this qemu version: VMDK version
Versuchen Sie, eine Rohversion von .vmdk mit vmdkmount zu erstellen
# vmdkmount {file}.vmdk /ur/mount/path
Innerhalb des gemounteten Verzeichnisses befindet sich eine vmdk1-Datei (Ihre Rohdatei).
Versuchen Sie nun, die vmdk mit guestmount zu laden
# guestmount -a vmdk1 -i --ro /ur/mount/path
Hast du das Softwarepaket für NTFS?
Versuchen
apt-get install ntfs-3g
auf Debian-basierten Systemen.