Чи можливо встановити віртуальний жорсткий диск (VHD, HDD, VDI, VMDK) на Ubuntu? Як це можна зробити?
Чи можливо встановити віртуальний жорсткий диск (VHD, HDD, VDI, VMDK) на Ubuntu? Як це можна зробити?
Відповіді:
Відповідно до цієї статті :
Linux та інші хости, схожі на Unix, можуть монтувати зображення, створені у форматі необробленого формату, використовуючи пристрій із зворотним зв'язком. З кореневим логіном (або за допомогою sudo) змонтуйте циклічний зворот із зміщенням 32 256.
mount -o loop,offset=32256 /path/to/image.img /mnt/mountpoint
Для інших типів зображень qemu можна використовувати qemu-nbd
modprobe nbd max_part=16
qemu-nbd -c /dev/nbd0 image.qcow2
partprobe /dev/nbd0
mount /dev/nbd0p1 /mnt/image
Плюс зазвичай, ви можете конвертувати зображення з одного формату в інший.
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.
Спробуйте google, я знайшов рішення для (VirtualBox) .VDI за одну секунду :
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
Те саме, що команди "Шлях Кему". Ніяких кордонів!
Це на 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
не вдається only root can use "--options" option
. З sudo
, вона не вдається failed to setup loop device: Permission denied
.
Ви також можете використовувати 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: спеціальний пристрій / dev / nbd0p1 не існує"
tar -tf image.ova
tar -xvf image.ova
Вище буде витягнутий .vmdk
диск і потім встановити його.
Для vmdk
і vhd
файлів, я тільки пощастило з kpartx
командою нижче:
sudo kpartx -a -v <image-flat.vmdk>
Перевірте вихід на наявність losetup
, він повинен містити циклічний пристрій /dev/loop0
; також перевірте sudo blkid
наявність розділу /dev/mapper/loop0p1
, а потім використовуйте його в команді mount:
sudo mount -o rw /dev/mapper/loop0p1 /mnt/vmdk
Де / mnt / vmdk - це ваша точка монтування, яку слід створити, sudo mkdir /mnt/vmdk
якщо її немає.
джерело на commandlinefu.com (kpartx та команда mount)
Відключити:
sudo umount /mnt/vmdk
sudo kpartx -d -v <image-flat.vmdk>
vhd
, він працює!