Чи можливо перетворити віртуальні машини у фізичні середовища?


78

Можна перетворити .vdi файл у .iso, який можна записати на CD або 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 включає в себе convertoraw , який може перетворити динамічний 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 ГБ ... Що буде?
Паунна

Цей перший метод "клонінг" здається дивовижно повільним. Але другий спрацював частування.
Метт H

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

Що робити, якщо ви спочатку були sysprep /generalizeу віртуальній установці? Це неодмінно підготує установку до встановлення на нове обладнання (або фізичне обладнання в даному випадку)
Robula

1
@Pwnna Ви копіюєте імідж із жорсткого диска (не лише розділу, а всієї карти розділу з розділами). Я робив це в минулому , і пам'ятаю , що описує цей відповідь, невикористаний / нерозмічену в кінці: 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?
Ehsan

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, встановіть та використовуйте так, як це було б звичайно з VM.
  2. Перетворення в Virtual Box .vdi жорсткого диска в Windows , віртуальний жорсткий диск зVBoxManage clonehd source.vdi target.vhd --format vhd
  3. Встановіть VHD на хост-машині Windows як накопичувач (можна встановити VHD в диспетчері дисків у програмі «Управління комп'ютером»
  4. Клоніруйте VHD (встановлений як накопичувач) на інший новий жорсткий диск (у моєму випадку прикріплений 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?
січень H

1
Це було опубліковано як відповідь нового користувача (я вважаю, superuser.com/users/523958/sum ). Його буде видалено, оскільки він не вважається відповіддю, тому я скопіював публікацію та зберег її як коментар, щоб вона не була втрачена. Я особисто не знайомий з цим.
fixer1234

3

Я роблю цей процес дуже швидко, маючи лише два рядки команди в Linux:

#VBoxManage intercommands converttoraw your_disk_virtual.vmdk your_disk_virtual.img

АБО

#VBoxManage intercommands 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

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

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.