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


78

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


1
Этот ответ на AskUbuntu.com , вероятно , относится к большому количеству сред , работающих на хостах Linux: askubuntu.com/a/32506/31592
Blong

Ответы:


64

И да и нет.

Вы можете преобразовать 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.


3
Как насчет размера VDI? Это имеет значение? Допустим, размер VDI составляет 20 ГБ, а фактически размер жесткого диска составляет 200 ГБ ... Что произойдет?
Pwnna

Этот первый метод "clonehd" кажется ужасно медленным. Но второй работал угощение.
Мэтт Х

1
Также обратите внимание, что если вам удастся загрузить Windows OS для загрузки, вам придется активировать ее в большинстве случаев.
Kimmax

Что делать, если вы были sysprep /generalizeв виртуальной установке в первую очередь? Это наверняка подготовит установку для установки на новое оборудование (или физическое оборудование в данном случае)
Robula

1
@Pwnna Вы копируете img жесткого диска (не просто раздел, а целую карту разделов с разделами). Я делал это в прошлом и помню, что этот ответ описывает, неиспользованное / нераспределенное пространство в конце: serverfault.com/questions/268889/…
sudo

21

Если ваш vdi-файл содержит разделы и вы хотите извлечь только один из них, используйте следующее:

Во-первых, как уже говорилось ранее, преобразуйте файл vdi в файл необработанного изображения:

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

Затем настройте петлевое устройство для изображения:

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

Используйте kpartx для создания устройств для каждого раздела в необработанном файле:

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

Посмотрите, какие устройства у нас сейчас. В этом примере есть только одно устройство, поскольку в исходном образе есть только один раздел:

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

Теперь смонтируйте его, чтобы убедиться, что все работает правильно:

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

Используйте dd для копирования содержимого раздела в другой целевой раздел:

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

После того, как вы закончите, удалите сопоставления устройства снова:

# kpartx -d file.raw

Это возможно с Windows?
Эхсан

13

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

Читать далее:


3
+1 "определенно" с оговоркой ".. поскольку ваш гость - linux" . и их (ваше?) решение опирается на некоторые инструменты TurnKey Linux. но процедура выглядит здоровой. (добро пожаловать в Супер Пользователя!)
кряква-кихот

5

Я попробовал VBoxManage clonehd file.vdi output.img --format RAWиз принятого ответа, но без особого успеха.

Что работало для меня с виртуальной машиной Windows 8.1 на хосте Windows 7, так это:

  1. Создайте компьютер под управлением Windows 8.1 в VirtualBox, установите и используйте его так же, как это обычно делается с виртуальной машиной.
  2. Преобразование жесткого диска Virtual Box .vdi в Windows VHD сVBoxManage clonehd source.vdi target.vhd --format vhd
  3. Смонтируйте виртуальный жесткий диск на хост-компьютере Windows как диск (вы можете подключить виртуальный жесткий диск в диспетчере дисков в разделе «Управление компьютером»).
  4. Клонируйте виртуальный жесткий диск (смонтированный в качестве накопителя) на другой новый жесткий диск (в моем случае это USB-ноутбук с жестким диском HD) DriveImage XML или аналогичное средство клонирования дисков. Теперь вы в основном клонировали виртуальный жесткий диск .vdi на голое железо.
  5. Установите новый жесткий диск в машину. (в моем случае поменяйте местами жесткий диск ноутбука)
  6. Вставьте установочный USB / CD с Windows 8.1, загрузитесь с него, выберите «Дополнительные параметры» и «Автоматическое восстановление». Автоматическое восстановление сделает новый жесткий диск загрузочным.
  7. Загрузитесь с нового жесткого диска с клонированной Windows 8.1 и запустите Центр обновления Windows. Это позволит загрузить драйверы для оборудования вашего компьютера, которые не были известны при запуске Windows в VirtualBox. Вам нужно будет установить отсутствующие драйверы вручную, если таковые имеются.
  8. Удалить VirtualBox Гостевые дополнения. При желании установите VirtualBox, чтобы ваша Windows 8.1 с железом могла быть хостом VirtualBox.

1
От @sum: вы можете попробовать BootICE заменить 6-й шаг и обязательно установить правильную MBR.
fixer1234

Благодарю. Является ли BootICE более надежным в некоторых случаях, чем установка Windows 8.1? Будет ли шаг 6, который я описал, возможно испортить MBR?
Янв

1
Это было опубликовано как ответ нового пользователя (я считаю, superuser.com/users/523958/sum ). Его собирались удалить, потому что он не квалифицировался как ответ, поэтому я скопировал сообщение и сохранил его как комментарий, чтобы он не был потерян. Я лично не знаком с этим.
fixer1234 25.11.15

3

Я делаю этот процесс очень быстро, с двумя строчками команды в 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 в этом случае загрузочным?
Насосная

Я думаю нет. Я видел аналогичный ответ от пользователя 0-rep, который казался простым, но оказался бесполезным.
Т.Тодуа

0

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

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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.