È possibile convertire macchine virtuali in ambienti fisici?


78

È possibile convertire un file .vdi in un .iso che può essere masterizzato su un cd o dvd e renderlo come un programma di installazione. Oppure è possibile convertire macchine virtuali in ambienti fisici?


1
Questa risposta su AskUbuntu.com probabilmente si applica a molti ambienti in esecuzione su macchine host Linux: askubuntu.com/a/32506/31592
blong

Risposte:


64

Sì e no.

È possibile convertire un VDI in un'immagine del disco con lo strumento VBoxManage . Questo comando clona un'immagine del disco virtuale registrata in un altro file di immagine. Se vuoi convertire il tuo disco virtuale in un altro formato, questo è lo strumento VirtualBox ufficiale per usare [*].

VBoxManage clonehd file.vdi output.img --format RAW
  • Se stai utilizzando un VDI dinamico e disponi di una versione precedente di VirtualBox, clonehd potrebbe non funzionare correttamente. Lo strumento di comandi interni di VBoxManage include converttoraw , che può convertire un VDI dinamico in un'immagine di disco non elaborata ( sorgente ) [+].

VBoxManage internalcommands converttoraw file.vdi output.img

Ma ... quel file IMG di output non è un'immagine ISO e il sistema operativo installato non sarà configurato per essere eseguito da un CD / DVD avviabile. È possibile "masterizzare" (scrivere) l'IMG su un disco rigido e potrebbe avviarsi su hardware nudo (ad es. Non in una macchina virtuale). Ma potrebbe non esserlo, perché il sistema operativo installato su quell'IMG si aspetta di vedere l'hardware virtuale fornito da VirtualBox e lo stai avviando su hardware reale che non si aspetta.

Alcune versioni di Windows non gestiscono bene questa situazione; alcune distribuzioni Linux fanno. A volte è possibile configurare un sistema operativo (prima o poi) per migrarlo da un ambiente all'altro in questo modo, ma i passaggi specifici dipendono completamente dal sistema operativo da migrare.


Su Windows, potrebbe essere necessario specificare il percorso completo del programma:

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

Aggiungi C: \ Programmi \ Sun \ VirtualBox al PERCORSO per utilizzare la versione breve.


[*] Sto assumendo il "--format RAW" opzione di convertire in un'immagine disco standard, come se avessi usato il dd comando su un hard disk fisico. Ma francamente, non ho trovato alcuna documentazione a supporto di questo, quindi tieni presente che potrebbe non essere corretto.

[+] Ho appena testato entrambi i comandi in VirtualBox 3.1.2. Entrambi i file di output sono identici secondo md5sum , ma non ho testato completamente i file di output.

Vedi anche il tutorial "Tutto sui VDI" nei forum di VirtualBox.


3
E le dimensioni del VDI? È importante? Diciamo che la dimensione VDI è di 20 GB e la dimensione effettiva dell'HDD è di 200 GB ... Cosa accadrebbe?
Pwnna,

Quel primo metodo "clonehd" sembra incredibilmente lento. Ma il secondo ha funzionato a meraviglia.
Matt H,

1
Inoltre, se riesci a ottenere un sistema operativo Windows all'avvio, nella maggior parte dei casi dovrai riattivarlo.
Kimmax,

E se tu fossi sysprep /generalizeprima l'installazione virtuale? Ciò preparerebbe sicuramente l'installazione da installare su un nuovo hardware (o hardware fisico in questo caso)
Robula

1
@Pwnna Stai copiando un img di un disco rigido (non solo una partizione ma un'intera mappa delle partizioni con le partizioni). L'ho fatto in passato e ricordo di aver visto ciò che questa risposta descrive, spazio inutilizzato / non partizionato alla fine: serverfault.com/questions/268889/…
sudo

21

Se il file vdi contiene partizioni e si desidera estrarne solo una, utilizzare quanto segue:

In primo luogo, come detto in precedenza quack quixote, converti il ​​file vdi in un file di immagine grezzo:

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

Quindi imposta un dispositivo loop per l'immagine:

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

Usa kpartx per creare dispositivi per ogni partizione nel file raw:

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

Scopri quali dispositivi abbiamo ora. In questo esempio, esiste un solo dispositivo in quanto esiste solo una partizione nell'immagine non elaborata:

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

Ora montalo per verificare che tutto funzioni correttamente:

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

Utilizzare dd per copiare il contenuto della partizione in un'altra partizione di destinazione:

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

Al termine, rimuovere nuovamente i mapping dei dispositivi:

# kpartx -d file.raw

È possibile con Windows?
Ehsan,

13

La risposta è decisamente affermativa, nel caso in cui il sistema host e guest sia Linux. È fatto con i pacchetti qemue TKLPatch. È possibile utilizzare sia file VDI che VMDK.

Leggi di più:


3
+1 "definito" con l'avvertenza ".. fintanto che il tuo ospite è Linux" . e la loro (tua?) soluzione si basa su alcuni strumenti TurnKey Linux. ma la procedura sembra corretta. (benvenuto in Super User!)
Quack Quixote,

5

Ho provato il dalla risposta accettata , ma senza molto successo.VBoxManage clonehd file.vdi output.img --format RAW

Ciò che ha funzionato per me con una macchina virtuale Windows 8.1 su un host Windows 7 è questo:

  1. Crea una macchina Windows 8.1 in VirtualBox, installa e usa come faresti normalmente con una VM.
  2. Converti il ​​disco rigido Virtual Box .vdi in Windows VHD conVBoxManage clonehd source.vdi target.vhd --format vhd
  3. Montare il disco rigido virtuale nel computer Windows host come unità (è possibile montare un disco rigido virtuale nel gestore disco in Gestione computer.
  4. Clonare il disco rigido virtuale (montato come unità) su un altro nuovo disco rigido (nel mio caso un laptop USB collegato HD) DriveImage XML o uno strumento di clonazione del disco simile. Ora hai praticamente clonato il disco rigido virtuale .vdi su bare metal.
  5. Installa il nuovo disco rigido in una macchina. (nel mio caso scambiare l'HDD del laptop)
  6. Inserisci un USB / CD di installazione di Windows 8.1, avvia da esso, scegli Opzioni avanzate e Riparazione automatica. La riparazione automatica renderà avviabile il nuovo disco rigido.
  7. Avviare dal nuovo disco rigido con Windows 8.1 clonato ed eseguire Windows Update. Questo scaricherà i driver per l'hardware del tuo computer che non erano noti quando hai eseguito Windows in VirtualBox. Dovrai installare manualmente i driver mancanti.
  8. Disinstallare VirtualBox Guest Additions. Opzionalmente installa VirtualBox in modo che il tuo Windows 8.1 bare metal possa essere un host VirtualBox.

1
Da @sum: puoi provare BootICE per sostituire il sesto passaggio e assicurarti di installare l'MBR corretto.
fixer1234

Grazie. BootICE è più affidabile in alcuni wat rispetto all'installazione di Windows 8.1? Il passaggio 6 che ho descritto potrebbe rovinare l'MBR?
Jan H,

1
Questo è stato pubblicato come risposta da un nuovo utente (credo che superuser.com/users/523958/sum ). Sarebbe stato cancellato perché non si qualificava come una risposta, quindi ho copiato il post e l'ho salvato come commento in modo da non perderlo. Personalmente non ne ho familiarità.
Fixer 1234

3

Faccio questo processo in modo molto veloce, con solo due linee di comando in Linux:

#VBoxManage comandi interni converttoraw your_disk_virtual.vmdk your_disk_virtual.img

O

#VBoxManage comandi interni converttoraw your_disk_virtual.vdi your_disk_virtual.img

# mv your_disk_virtual.img your_disk_virtual.iso

Il mio articolo completo: http://www.previsioni.com.br/jailsonjan/?p=389


Il .img in questo caso sarebbe avviabile?
Pumphouse,

Penso che nessuno. Ho visto una risposta simile da parte dell'utente 0-rep, che sembrava facile, tuttavia, si è rivelato inutile.
T.Todua,

0

Utilizzare il seguente comando per convertire:

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

Ecco l'output:

0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Clone hard disk created in format 'VMDK'. UUID: 7f297ac6-95eb-4814-9237-1acfd6be976c
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.