Можно ли конвертировать виртуальные машины в физические среды?

134868
Wern Ancheta

Есть возможность конвертировать .vdi файл в .iso, который можно записать на CD или DVD и сделать его как установщик. Или возможно ли преобразовать виртуальные машины в физические среды?

74
Этот ответ на AskUbuntu.com, вероятно, относится ко многим средам, работающим на хост-компьютерах Linux: http://askubuntu.com/a/32506/31592 blong 11 лет назад 1

6 ответов на вопрос

60
quack quixote

И да и нет.

Вы можете преобразовать VDI в образ диска с помощью инструмента VBoxManage . Эта команда клонирует зарегистрированный образ виртуального диска в другой файл образа. Если вы хотите конвертировать ваш виртуальный диск в другой формат, это официальный инструмент VirtualBox для использования [*].

VBoxManage clonehd file.vdi output.img --format RAW 
  • Если вы используете динамический VDI и у вас более старая версия VirtualBox, clonehd может работать неправильно. Инструмент внутренних команд VBoxManage включает converttoraw, который может конвертировать динамический VDI в необработанный образ диска ( источник ) [+].

VBoxManage internalcommands converttoraw file.vdi output.img 

Но ... этот выходной файл IMG не является образом ISO, и установленная ОС не будет настроена для запуска с загрузочного CD / DVD. Вы можете «записать» (записать) IMG на жесткий диск, и он может загружаться на голом оборудовании (например, не на виртуальной машине). Но это может и не произойти, потому что ОС, установленная на этом IMG, ожидает увидеть виртуальное оборудование, которое предоставляет VirtualBox, а вы загружаете его на реальном оборудовании, которого оно не ожидает.

Некоторые версии Windows плохо справляются с этой ситуацией; некоторые дистрибутивы Linux делают. Иногда можно настроить ОС (до или после) для ее миграции из одной среды в другую, как это, но конкретные шаги полностью зависят от переносимой ОС.


В Windows вам может потребоваться указать полный путь к программе:

"C:\Program Files\Sun\VirtualBox\VBoxManage.exe" [...] 

Добавьте C: \ Program Files \ Sun \ VirtualBox в PATH, чтобы использовать короткую версию.


[*] Я предполагаю, что опция «--format RAW» преобразует в стандартный образ диска, как если бы вы использовали команду dd на физическом жестком диске. Но, честно говоря, я не нашел никаких документов, подтверждающих это, так что имейте в виду, что это может быть неправильно.

[+] Я только что проверил обе команды в VirtualBox 3.1.2. Согласно md5sum оба выходных файла идентичны, но я не полностью протестировал выходные файлы.

Смотрите также учебник "Все о VDI" на форумах VirtualBox.

Как насчет размера VDI? Это имеет значение? Допустим, размер VDI составляет 20 ГБ, а фактически размер жесткого диска составляет 200 ГБ ... Что произойдет? Pwnna 12 лет назад 3
Этот первый метод "clonehd" кажется ужасно медленным. Но второй работал угощение. Matt H 11 лет назад 0
Также обратите внимание, что если вам удастся загрузить Windows OS для загрузки, вам придется активировать ее в большинстве случаев. Kimmax 8 лет назад 1
Что, если вы сначала `sysprep / generalize` виртуальной установки? Это наверняка подготовит установку для установки на новое оборудование (или физическое оборудование в данном случае) Robula 7 лет назад 0
@Pwnna Вы копируете img жесткого диска (не просто раздел, а целую карту разделов с разделами). Я делал это в прошлом и помню, что этот ответ описывает, неиспользуемый / неразделенный пробел в конце: https://serverfault.com/questions/268889/is-it-possible-to-restore-disk-image- к-а-разнокалиберных-жесткий диск sudo 6 лет назад 1
19
dmoebius

If your vdi file contains partitions and you want to extract only one of them use the following:

First, as quack quixote said before, convert the vdi file to a raw image file:

# VBoxManage clonehd file.vdi file.raw --format RAW 

Then set up a loop device for the image:

# loopdev=$(losetup --show -r -f file.raw) 

Use kpartx to create devices for each partition in the raw file:

# apt-get install kpartx # kpartx -a $loopdev 

See which devices we have now. In this example, there's only one device as there's only one partition in the raw image:

# ls /dev/mapper/loop* /dev/mapper/loop0p1 

Now mount it to verify that all works properly:

# mkdir /mnt/part1 # mount /dev/mapper/loop0p1 /mnt/part1 # ls /mnt/part1 # umount /mnt/part1 

Use dd to copy the partition contents to a another target partition:

# dd if=/dev/mapper/loop0p1 of=/dev/sda2 bs=1M 

After you're done remove the device mappings again:

# kpartx -d file.raw 
Это возможно с Windows? Ehsan 7 лет назад 0
12
Alon Swartz

Ответ однозначен: да, если ваш хост и гостевая система Linux. Это сделано с пакетами qemuи TKLPatch. Вы можете использовать файлы VDI или VMDK.

Прочитайте больше:

+1 * "определенно" * с оговоркой * ".. пока ваш гость - linux" *. и их (ваше?) решение опирается на некоторые инструменты TurnKey Linux. но процедура выглядит здоровой. (добро пожаловать в Super User!) quack quixote 14 лет назад 3
5
Jan H

I tried the VBoxManage clonehd file.vdi output.img --format RAW from the accepted answer but without much success.

What worked for me with a Windows 8.1 virtual machine on a Windows 7 host is this:

  1. Make a Windows 8.1 machine in VirtualBox, install and use is as you would normally do with a VM.
  2. Convert the Virtual Box .vdi hard disk to Windows VHD with VBoxManage clonehd source.vdi target.vhd --format vhd
  3. Mount the VHD in the host Windows machine as a drive (you can mount a VHD in the disk manager in Computer Management.
  4. Clone the VHD (mounted as a drive) to a another new hard disk (a USB attached laptop HD in my case) DriveImage XML or a similar disk cloning tool. You now basically have cloned the virtual hard disk .vdi to bare metal.
  5. Install the new hard disk in a machine. (in my case swap the laptop HDD)
  6. Insert a Windows 8.1 install USB/CD, boot from it, choose Advanced Options and Automatic Repair. The automatic repair will make the new hard disk bootable.
  7. Boot from the new hard disk with the cloned Windows 8.1 and run Windows Update. This will download drivers for your computer's hardware which were not know when you ran Windows in VirtualBox. You will have to install missing drivers manually if any.
  8. Uninstall VirtualBox Guest Additions. Optionally install VirtualBox so that your bare metal Windows 8.1 can be a VirtualBox host.
От @sum: Вы можете попробовать [BootICE] (http://www.pendriveapps.com/bootice-partition-flash-drive-edit-boot-sector/) заменить 6-й шаг и обязательно установить правильную MBR. fixer1234 8 лет назад 1
Благодарю. Является ли BootICE более надежным в некоторых случаях, чем установка Windows 8.1? Будет ли шаг 6, который я описал, возможно испортить MBR? Jan H 8 лет назад 0
Это было опубликовано в качестве ответа нового пользователя (я думаю, что http://superuser.com/users/523958/sum). Его собирались удалить, потому что он не квалифицировался как ответ, поэтому я скопировал сообщение и сохранил его как комментарий, чтобы он не был потерян. Я лично не знаком с этим. fixer1234 8 лет назад 1
3
JailsonJan

Я делаю этот процесс очень быстро, с помощью двух командных строк в Linux:

#Внутренние команды VBoxManage converttoraw your_disk_virtual.vmdk your_disk_virtual.img

ИЛИ ЖЕ

#Внутренние команды VBoxManage converttoraw your_disk_virtual.vdi your_disk_virtual.img

# mv your_disk_virtual.img your_disk_virtual.iso

Моя полная статья: http://www.previsioni.com.br/jailsonjan/?p=389

Будет ли .img в этом случае загрузочным? Pumphouse 8 лет назад 0
Я думаю нет. Я видел аналогичный ответ от пользователя 0-rep, который казался простым, но оказался бесполезным. T.Todua 7 лет назад 0
0
Anupam

Используйте следующую команду для преобразования:

VBoxManage clonehd CactiEZ-disk1.vmdk output.iso --format VMDK 

Вот вывод:

0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100% Clone hard disk created in format 'VMDK'. UUID: 7f297ac6-95eb-4814-9237-1acfd6be976c 

Похожие вопросы