Как конвертировать плоский raw образ диска в vmdk для virtualbox или vmplayer?
У меня есть несколько старых изображений старых файловых систем Linux в плоском формате. они могут быть использованы Бохи, но мне нужно запустить их с Виртуальный Бокс. Virtual Box не может использовать изображения в этом формате ,поэтому мне нужно преобразовать эти изображения из плоского файла.формат файла vmdk. Есть ли способ сделать это?
6 ответов:
apt-get install qemu(устанавливает QEMU на debian / ubuntu)затем выполните следующую команду:
qemu-img convert -O vmdk imagefile.dd vmdkname.vmdkЯ предполагаю, что образ плоского диска-это образ DD-стиля. Операция преобразования также обрабатывает множество других форматов.
Так как вопрос упоминает VirtualBox, это работает в настоящее время:
VBoxManage convertfromraw imagefile.dd vmdkname.vmdk --format VMDKзапустите его без аргументов для нескольких интересных деталей (в частности,
--variantфлаг):VBoxManage convertfromraw
в Windows, используйте https://github.com/Zapotek/raw2vmdk конвертировать RAW-файлы, созданные с помощью ДД или winhex'а в VMDK. raw2vmdk v0.1.3. 2 имеет ошибку - как только файл vmdk будет создан, отредактируйте файл vmdk и исправьте путь к файлу raw (в моем случае вместо D:\Temp\flash_16gb.raw (созданный winhex) сгенерированный путь был D:Tempflash_16gb.необработанный.) Затем откройте его в виртуальной машине vmware версии 6.5-7 (5.1 отказывался подключать жесткий диск vmdk). как же!
чтобы ответить TJJ:но можно ли это сделать без копирования всего файла? Итак, просто чтобы как-то создать дополнительный vmdk-метафайл, который ссылается на необработанный DD-образ.
да, это возможно. Вот как использовать образ плоского диска в VirtualBox:
сначала вы создаете изображение с dd обычным способом:
dd bs=512 count=60000 if=/dev/zero of=usbdrv.imgзатем вы можете создать файл для VirtualBox, который ссылается на этот образ:
VBoxManage internalcommands createrawvmdk -filename "usbdrv.vmdk" -rawdisk "usbdrv.img"вы можно использовать этот образ в VirtualBox как есть, но в зависимости от гостевой ОС он может быть не виден сразу. Например, я экспериментировал с использованием этого метода с гостевой ОС Windows и мне пришлось сделать следующее, чтобы дать ему букву диска:
- перейдите на панель управления.
- перейти в раздел "Администрирование".
- перейти к управлению компьютером.
- перейдите в раздел хранение\Управление дисками на левой боковой панели.
- вы увидите свой диск здесь. Создайте на нем раздел и отформатируйте его. Используйте FAT для небольших объемов, FAT32 или NTFS для больших объемов.
возможно, вы захотите получить доступ к своим файлам в Linux. Сначала отключите его от гостевой ОС, чтобы убедиться, и удалите его из виртуальной машины. Теперь нужно создать виртуальное устройство, которое ссылается на раздел.
sfdisk -d usbdrv.imgответ:
label: dos label-id: 0xd367a714 device: usbdrv.img unit: sectors usbdrv.img1 : start= 63, size= 48132, type=4обратите внимание на начальное положение раздела: 63. В приведенной ниже команде я использовал loop4, потому что это было первое доступное петлевое устройство в моем случае.
sudo losetup -o $((63*512)) loop4 usbdrv.img mkdir usbdrv sudo mount /dev/loop4 usbdrv ls usbdrv -lответ:
total 0 -rwxr-xr-x. 1 root root 0 Apr 5 17:13 'Test file.txt'Ура!
может быть, вы должны попробовать использовать Starwind V2V Converter, вы можете получить его отсюда -http://www.starwindsoftware.com/converter. Он также поддерживает формат диска IMG и выполняет секторное преобразование между IMG, VMDK или VHD в и из любого из них без внесения каких-либо изменений в исходный образ. Этот инструмент является бесплатным :)
ответ кросенвольда вдохновил следующий скрипт, который делает следующее:
- получить дамп dd через ssh с удаленного сервера (как файл gz)
- распаковать дамп
- конвертировать его в vmware
скрипт перезапускается и проверяет наличие промежуточных файлов. Он также использует pv и qemu-img-p, чтобы показать прогресс каждого шага.
в моей среде 2 x Ubuntu 12.04 LTS шаги взял:
- 3 часа, чтобы получить дамп диска 47 Гбайт раздела 60 Гбайт
- 20 минут, чтобы распаковать в 60 Гбайт DD файл
- 45 минут для создания файла vmware
#!/bin/bash # get a dd disk dump and convert it to vmware # see http://stackoverflow.com/questions/454899/how-to-convert-flat-raw-disk-image-to-vmdk-for-virtualbox-or-vmplayer # Author: wf 2014-10-1919 # # get a dd dump from the given host's given disk and create a compressed # image at the given target # # 1: host e.g. somehost.somedomain # 2: disk e.g. sda # 3: target e.g. image.gz # # http://unix.stackexchange.com/questions/132797/how-to-use-ssh-to-make-a-dd-copy-of-disk-a-from-host-b-and-save-on-disk-b getdump() { local l_host="" local l_disk="" local l_target="" echo "getting disk dump of $l_disk from $l_host" ssh $l_host sudo fdisk -l | egrep "^/dev/$l_disk" if [ $? -ne 0 ] then echo "device $l_disk does not exist on host $l_host" 1>&2 exit 1 else if [ ! -f $l_target ] then ssh $l_host "sudo dd if=/dev/$disk bs=1M | gzip -1 -" | pv | dd of=$l_target else echo "$l_target already exists" fi fi } # # optionally install command from package if it is not available yet # 1: command # 2: package # opt_install() { l_command="" l_package="" echo "checking that $l_command from package $l_package is installed ..." which $l_command if [ $? -ne 0 ] then echo "installing $l_package to make $l_command available ..." sudo apt-get install $l_package fi } # # convert the given image to vmware # 1: the dd dump image # 2: the vmware image file to convert to # vmware_convert() { local l_ddimage="" local l_vmwareimage="" echo "converting dd image $l_image to vmware $l_vmwareimage" # convert to VMware disk format showing progess # see http://manpages.ubuntu.com/manpages/precise/man1/qemu-img.1.html qemu-img convert -p -O vmdk "$l_ddimage" "$l_vmwareimage" } # # show usage # usage() { echo "usage: host device" echo " host: the host to get the disk dump from e.g. frodo.lotr.org" echo " you need ssh and sudo privileges on that host" echo " echo " device: the disk to dump from e.g. sda" echo "" echo " examples: echo " frodo.lotr.org sda" echo " gandalf.lotr.org sdb" echo "" echo " the needed packages pv and qemu-utils will be installed if not available" echo " you need local sudo rights for this to work" exit 1 } # check arguments if [ $# -lt 2 ] then usage fi # get the command line parameters host="" disk="" # calculate the names of the image files ts=`date "+%Y-%m-%d"` # prefix of all images # .gz the zipped dd # .dd the disk dump file # .vmware - the vmware disk file image="${host}_${disk}_image_$ts" echo " $host/$disk -> $image" # first check/install necessary packages opt_install qemu-img qemu-utils opt_install pv pv # check if dd files was already loaded # we don't want to start this tedious process twice if avoidable if [ ! -f $image.gz ] then getdump $host $disk $image.gz else echo "$image.gz already downloaded" fi # check if the dd file was already uncompressed # we don't want to start this tedious process twice if avoidable if [ ! -f $image.dd ] then echo "uncompressing $image.gz" zcat $image.gz | pv -cN zcat > $image.dd else echo "image $image.dd already uncompressed" fi # check if the vmdk file was already converted # we don't want to start this tedious process twice if avoidable if [ ! -f $image.vmdk ] then vmware_convert $image.dd $image.vmdk else echo "vmware image $image.vmdk already converted" fi
Comments