Est-il possible de convertir des machines virtuelles en environnements physiques?

78

Il est possible de convertir un fichier .vdi en un .iso qui peut être gravé sur un cd ou un dvd et en faire un installateur. Ou est-il possible de convertir des machines virtuelles en environnements physiques?

Ancheta de Wern
la source
1
Cette réponse sur AskUbuntu.com s'applique probablement à de nombreux environnements exécutés sur des machines hôtes Linux: askubuntu.com/a/32506/31592
blong

Réponses:

64

Oui et non.

Vous pouvez convertir un VDI en une image disque avec l' outil VBoxManage . Cette commande clone une image de disque virtuel enregistrée dans un autre fichier image. Si vous souhaitez convertir votre disque virtuel dans un autre format, il s'agit de l'outil officiel VirtualBox à utiliser [*].

VBoxManage clonehd file.vdi output.img --format RAW
  • Si vous utilisez un VDI dynamique et que vous avez une version plus ancienne de VirtualBox, clonehd peut ne pas fonctionner correctement. L' outil internalcommands de VBoxManage inclut converttoraw , qui peut convertir un VDI dynamique en une image disque brute ( source ) [+].

VBoxManage internalcommands converttoraw file.vdi output.img

Mais ... ce fichier IMG de sortie n'est pas une image ISO et le système d'exploitation installé ne sera pas configuré pour s'exécuter à partir d'un CD / DVD amorçable. Vous pouvez "graver" (écrire) l'IMG sur un disque dur et ce dernier peut démarrer sur du matériel nu (par exemple, pas sur une machine virtuelle). Mais ce n’est peut-être pas le cas, car le système d’exploitation installé sur cet IMG s’attend à voir le matériel virtuel fourni par VirtualBox, et vous le démarrez sur du matériel réel qu’il n’attend pas.

Certaines versions de Windows ne gèrent pas bien cette situation; certaines distributions Linux le font. Il est parfois possible de configurer un système d'exploitation (avant ou après) pour le migrer d'un environnement à l'autre, mais des étapes spécifiques dépendent entièrement du système d'exploitation migré.


Sous Windows, vous devrez peut-être spécifier le chemin complet du programme:

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

Ajoutez C: \ Program Files \ Sun \ VirtualBox à votre PATH pour utiliser la version courte.


[*] Je suppose que l' option "--format RAW" sera convertie en une image disque standard, comme si vous aviez utilisé la commande dd sur un disque dur physique. Mais franchement, je n’ai trouvé aucune documentation qui le sauvegarde, alors sachez que cela peut ne pas être correct.

[+] Je viens de tester les deux commandes sous VirtualBox 3.1.2. Les deux fichiers de sortie sont identiques en fonction de md5sum , mais je n'ai pas complètement testé les fichiers de sortie.

Voir aussi le tutoriel "Tout sur les VDI" sur les forums de VirtualBox.

Quack Quack
la source
3
Qu'en est-il de la taille du VDI? Est-ce important? Disons que la taille du VDI est de 20 Go et que la taille du disque dur est de 200 Go ... Que se passerait-il?
Pwnna
Cette première méthode "clonehd" semble terriblement lente. Mais le second a fonctionné un régal.
Matt H
1
Notez également que si vous parvenez à démarrer un système d’exploitation Windows, vous devrez le réactiver dans la plupart des cas.
Kimmax
Et si vous étiez à sysprep /generalizel'installation virtuelle d'abord? Cela préparerait sûrement l'installation à être installée sur du nouveau matériel (ou du matériel physique dans ce cas)
Robula
1
@Pwnna Vous copiez une image d'un disque dur (pas simplement une partition, mais une carte de partition entière avec des partitions). Je l'ai déjà fait par le passé et je me souviens avoir vu ce que cette réponse décrit, espace inutilisé / non partitionné à la fin: serverfault.com/questions/268889/…
sudo
21

Si votre fichier vdi contient des partitions et que vous souhaitez en extraire une, utilisez les éléments suivants:

Tout d’abord, comme l’a dit quack quixote précédemment, convertissez le fichier vdi en un fichier image brut:

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

Ensuite, configurez un périphérique de boucle pour l’image:

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

Utilisez kpartx pour créer des périphériques pour chaque partition du fichier brut:

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

Voir quels appareils nous avons maintenant. Dans cet exemple, il n'y a qu'un seul périphérique car il n'y a qu'une seule partition dans l'image brute:

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

Maintenant montez-le pour vérifier que tout fonctionne correctement:

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

Utilisez dd pour copier le contenu de la partition sur une autre partition cible:

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

Une fois que vous avez terminé, supprimez à nouveau les mappages de périphériques:

# kpartx -d file.raw
dmoebius
la source
Est-ce possible avec Windows?
Ehsan
13

La réponse est oui, au cas où votre système hôte et votre système invité est Linux. C'est fait avec les paquets qemuet TKLPatch. Vous pouvez utiliser les fichiers VDI ou VMDK.

Lire la suite:

Alon Swartz
la source
3
+1 "défini" avec la mise en garde ".. tant que votre invité est linux" . et leur (votre?) solution repose sur des outils Linux TurnKey. mais la procédure semble bonne. (Bienvenue sur Super User!)
Quack Quichotte
5

J'ai essayé le VBoxManage clonehd file.vdi output.img --format RAWde la réponse acceptée mais sans grand succès.

Voici ce qui a fonctionné pour moi avec une machine virtuelle Windows 8.1 sur un hôte Windows 7:

  1. Créez une machine Windows 8.1 dans VirtualBox, installez-la et utilisez-la comme vous le feriez normalement avec une machine virtuelle.
  2. Convertissez le disque dur Virtual Box .vdi en Windows VHD avecVBoxManage clonehd source.vdi target.vhd --format vhd
  3. Montez le disque dur virtuel sur la machine Windows hôte en tant que lecteur (vous pouvez monter un disque dur virtuel dans le gestionnaire de disques de Computer Management.
  4. Clonez le disque dur virtuel (monté en tant que lecteur) sur un autre nouveau disque dur (un disque dur portable relié à l'USB dans mon cas) DriveImage XML ou un outil de clonage de disque similaire. Vous avez maintenant essentiellement cloné le disque dur virtuel .vdi en mode nu.
  5. Installez le nouveau disque dur sur une machine. (dans mon cas, échangez le disque dur du portable)
  6. Insérez une installation USB / CD Windows 8.1, démarrez à partir de celle-ci, choisissez Options avancées et Réparation automatique. La réparation automatique rendra le nouveau disque dur amorçable.
  7. Démarrez à partir du nouveau disque dur avec Windows 8.1 cloné et exécutez Windows Update. Cela téléchargera des pilotes pour le matériel de votre ordinateur qui n'étaient pas connus lorsque vous avez exécuté Windows dans VirtualBox. Vous devrez installer manuellement les pilotes manquants, le cas échéant.
  8. Désinstallez les ajouts d'invité VirtualBox. Installez éventuellement VirtualBox de sorte que Windows 8.1 nu puisse être un hôte VirtualBox.
Jan H
la source
1
De @sum: Vous pouvez essayer BootICE pour remplacer la 6ème étape et assurez-vous d'installer le bon MBR.
Fix1234
Merci. BootICE est-il plus fiable dans certaines versions que l’installation de Windows 8.1? Est-ce que l'étape 6 que j'ai décrite pourrait éventuellement gâcher le MBR?
Jan H
1
Cela a été posté comme une réponse par un nouvel utilisateur (je crois superuser.com/users/523958/sum ). Il allait être supprimé car il ne pouvait pas être considéré comme une réponse. J'ai donc copié le message et je l'ai enregistré sous forme de commentaire afin qu'il ne soit pas perdu. Je ne le connais pas personnellement.
Fix1234
3

Je fais ce processus très rapidement, avec seulement deux lignes de commande sous Linux:

#Commandes internes VBoxManage converttoraw your_disk_virtual.vmdk your_disk_virtual.img

OU

#VBoxManage internalcommands converttoraw your_disk_virtual.vdi votre_disk_virtual.img

# mv your_disk_virtual.img your_disk_virtual.iso

Mon article complet: http://www.previsioni.com.br/jailsonjan/?p=389

JailsonJan
la source
Est-ce que le .img dans ce cas serait bootable?
Pumphouse
Je pense que non. J'ai vu une réponse similaire de la part d'un utilisateur 0 représentant, qui semblait simple, mais qui s'est révélée inutile.
T.Todua
0

Utilisez la commande suivante pour convertir:

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

Voici la sortie:

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