Ist es möglich, eine virtuelle Festplatte (VHD, HDD, VDI, VMDK) auf Ubuntu zu mounten? Wie geht das?
Ist es möglich, eine virtuelle Festplatte (VHD, HDD, VDI, VMDK) auf Ubuntu zu mounten? Wie geht das?
Antworten:
Nach diesem Artikel :
Linux und andere Unix-ähnliche Hosts können Images, die mit dem Raw-Formattyp erstellt wurden, mit einem Loopback-Gerät mounten. Hängen Sie von einem Root-Login (oder mit sudo) einen Loopback mit einem Offset von 32.256 ein.
mount -o loop,offset=32256 /path/to/image.img /mnt/mountpoint
Für andere Arten von qemu-Bildern können Sie qemu-nbd verwenden
modprobe nbd max_part=16
qemu-nbd -c /dev/nbd0 image.qcow2
partprobe /dev/nbd0
mount /dev/nbd0p1 /mnt/image
Außerdem können Sie normalerweise Bilder von einem Format in ein anderes konvertieren.
raw - (default) the raw format is a plain binary image of the disc
image, and is very portable.
On filesystems that support sparse files,
images in this format only use the
space actually used by the data recorded in them.
cloop - Compressed Loop format, mainly used for reading Knoppix
and similar live CD image formats
cow - copy-on-write format, supported for historical reasons only and
not available to QEMU on Windows
qcow - the old QEMU copy-on-write format, supported for
historical reasons and superseded by qcow2
qcow2 - QEMU copy-on-write format with a range of special features,
including the ability to take multiple snapshots, smaller
images on filesystems that don't support sparse files,
optional AES encryption, and optional zlib compression
vmdk - VMware 3 & 4, or 6 image format, for exchanging images
with that product
vdi - VirtualBox 1.1 compatible image format, for exchanging
images with VirtualBox.
Versuchen Sie zu googeln, ich habe die Lösung für (VirtualBox) .VDI in einer Sekunde gefunden :
modprobe nbd max_part=16
qemu-nbd -c /dev/nbd0 /path/to/some.vdi
mount -o loop /dev/nbd0p1 /mnt
# do stuff
umount /mnt
qemu-nbd -d /dev/nbd0
rmmod nbd
Das Gleiche wie "Qemus Weg". Keine Grenzen!
Dies ist auf Ubuntu 16.04 .
apt-get install afflib-tools
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
echo 2048*512 | bc
1048576
mount -o ro,loop,offset=1048576 /mnt/vmdk/file.raw /mnt/vmdisk
mount -o ro,loop,offset=1048576 ./foo.raw /mnt/foo
schlägt jedoch mit fehl only root can use "--options" option
. Mit sudo
scheitert es mit failed to setup loop device: Permission denied
.
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 (unter Ubuntu ist dies der 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 verwende -r
, da VMDK Version 3 nur lesbar sein muss, um von qemu gemountet werden zu können
und dann montiere ich es
mount /dev/nbd1p1 /mnt
Ich benutze, nbd1
weil nbd0
manchmal gibt 'mount: special device / dev / nbd0p1 existiert nicht'
tar -tf image.ova
tar -xvf image.ova
Mit dem obigen Befehl wird die .vmdk
Festplatte extrahiert und dann gemountet.
Für vmdk
und vhd
Dateien hatte ich nur mit dem folgenden kpartx
Befehl Glück :
sudo kpartx -a -v <image-flat.vmdk>
Überprüfen Sie die Ausgabe für losetup
, es sollte Loop-Gerät enthalten /dev/loop0
; Überprüfen Sie auch, ob sudo blkid
eine Partition vorhanden ist /dev/mapper/loop0p1
, und verwenden Sie sie dann im Befehl mount:
sudo mount -o rw /dev/mapper/loop0p1 /mnt/vmdk
Wobei / mnt / vmdk Ihr Einhängepunkt ist, der erstellt werden soll, sudo mkdir /mnt/vmdk
wenn er nicht vorhanden ist.
source at commandlinefu.com (Befehl kpartx und mount)
Aushängen mit:
sudo umount /mnt/vmdk
sudo kpartx -d -v <image-flat.vmdk>
vhd
, es funktioniert!