Le plus simple est d'utiliser les commandes d'import/export qui se chargeront de créer les archives contenant tous les fichiers nécessaires pour que l'opération puisse se faire automatiquement.
Cette procédure a été établie suite à une migration du système hôte. Les VMs n'avaient pas été exportées. Après migration du système hôte et réinstallation de la nouvelle version de Virtualbox, les machines virtuelles préexistantes n'apparaissaient plus dans la GUI, ni via la commande
$ vboxmanage list vms
Depuis la GUI, menu Machine option Ajouter… On parcours ensuite le système de fichier pour fournir le fichier MaVM.xml ou MaVM.vbox selon la version de Virtualbox avec laquelle la VM fut créée.
ou via la commande vboxmanage
$ vboxmanage registervm /data/virtualbox/VMs/xubuntu/xubuntu.xml
Cette procédure se déroule sans accrocs à la condition que les chemins n'aient pas évolués. Dans le cas contraire certaines erreurs peuvent se produire, elles sont détaillées ci dessous.
L'enregistrement échoue car controleur virtuel référence un fichier disque inaccessible. Avant d'ajouter de la VM, on peut éditer le fichier XML pour supprimer les balises référençant le disque manquant. On supprime les informations encadrées parles balises AttachedDevice
<StorageController> <AttachedDevice>...</AttachedDevice> </StorageController>
Une fois la VM enregistrée, via la GUI il suffit de rajouter un disque au controleur virtuel en spécifiant un fichier disque pré-existant.
Autre erreur rencontrée lors de l'enregistrement d'une VM, le message affiché:
VBoxManage: error: A differencing image of snapshot {770bbbe3-40ef-42ff-a3e5-63842881d2fe} could not be found. Could not find an open hard disk with UUID {8d445433-f0a6-4e33-969f-ff214a26d7b8} VBoxManage: error: Details: code NS_ERROR_FAILURE (0x80004005), component SnapshotMachine, interface IMachine, callee nsISupports VBoxManage: error: Context: "OpenMachine(Bstr(a->argv[0]).raw(), machine.asOutParam())" at line 88 of file VBoxManageMisc.cpp
Le Snapshot doit utiliser une fichier disque image introuvable
$ vboxmanage showhdinfo /data/virtualbox/v-store/xubuntu.vdi
Relancer la commande d'enregistrement de la VM une fois le ficheir disuqe déclaré:
$ vboxmanage registervm /
La VMs refuse de s 'exécuter. Le fichier XML qui a servit lors de l'enregistrement de la VM à créé un fichier disque actuellement non disponible (il a pu être déplacé). Même si on a détaché le fichier disque de la VM via la GUI (dans la configuration de la VM, le disque n'est plus lié au controleur virtuel), il existe encore dans le gestionnaire de médias:
Via la GUI, menu Fichier → Gestionnaire de médias…. Dans l'onglet Disques durs supprimer le disque virtuel en erreur (boutons Libérer puis supprimer ou directement Supprimer. Puis retourner dans la configuration de la VM, et attacher un fichier disque préexistant au controleur.
Les mêmes opérations sont faisable en ligne de commande, on liste ici les fichiers disques:
$ vboxmanage list hdds ... UUID: ea29a9d6-35bb-4dc5-a770-ea5b57f1b9a6 Parent UUID: base State: inaccessible Type: normal (base) Location: /data/v-store/gw-ecole.vdi Storage format: VDI Capacity: 0 MBytes ...
Le disque qui nous intéresse est en effet inaccessible (sont chemin ayant été modifié), on va supprimer l'enregistrement du gestionnaire de média:
$ vboxmanage closemedium disk --delete ea29a9d6-35bb-4dc5-a770-ea5b57f1b9a6
L'utilisation de la commande showhdinfo avec le path complet sur le fichier disque créera automatiquement une entrée dans le gestionnaire de média:
$ vboxmanage showhdinfo /data/virtualbox/v-store/gw-ecole.vdi
Maintenant que le fichier disque correct existe dans le gestionnaire de média il peut etre attaché au controleur virtuel de la VM:
$ vboxmanage storageattach gw-ecole --storagectl "SATA" --port 0 --device 0 --type hdd --medium /data/virtualbox/v-store/gw-ecole.vdi
On démarre la VM dans la jubilation et l'allégresse:
$ vboxmanaga startvm gw-ecole