Créer un clone de machine VirtualBox qui ne provoque pas la réactivation de Windows après l'installation

La plupart des guides pour l’installation de Windows sur VirtualBox pour servir de modèle pour des travaux Windows rapides vous disent de prendre quelques mesures pour préparer la machine virtuelle avant l’installation de Windows (le meilleur guide que j’ai trouvé : grahamrhay.wordpress.com ; un autre guide assez bon : www.windowstablettv.com). Malheureusement, je n’ai pas lu ces guides avant d’installer et d’activer Windows sur la VM que je voulais utiliser comme modèle.

Je veux savoir comment cloner ma VM déjà active de manière à ne pas nécessiter de réactivation de Windows.

En regardant le fichier de définition de la VM modèle (le fichier VBOX ou XML de la VM), le noeud /VirtualBox/Machine/Hardware (identifiant XPath) n’a pas d’attribut uuid. Mais si j’essaie d’utiliser VBoxManage modifyvm <uuid|name> --hardwareuuid <uuid> pour définir un nouvel UUID pour la VM modèle, alors la VM modèle perd son statut d’activation ! (Heureusement, j’avais fait une sauvegarde du modèle.) Donc, pour atteindre mon objectif, je ne peux pas simplement suivre ces guides en faisant comme si je n’avais pas encore installé Windows.

Heureusement, j’ai remarqué quelque chose à propos de toutes mes machines virtuelles que je n’avais pas préparées comme ces guides l’avaient décrit.

J’ai exécuté VBoxManage showvminfo <uuid|name> et j’ai remarqué que la valeur UUID correspondait à la valeur Hardware UUID, ce qui m’a amené à supposer que si une définition de VM n’a pas d’attribut uuid dans le noeud /VirtualBox/Machine/Hardware, alors la VM utiliserait la valeur “Machine UUID” comme valeur “Hardware UUID”. Donc, pour ma VM modèle, elle avait bien un “Hardware UUID” que je pouvais utiliser ; je devais juste trouver comment le transférer aux clones que je ferais.

Pour garantir le transfert de l’UUID, vous pouvez adopter l’une des deux approches :

  • Vous pouvez modifier directement le fichier de définition de la VM modèle. Le “Hardware UUID” ne sera transféré aux clones que si /VirtualBox/Machine/Hardware possède l’attribut uuid. Donc, copiez l’attribut uuid de /VirtualBox/Machine et ajoutez-le à l’attribut uuid de /VirtualBox/Machine/Hardware. Vous voudrez probablement réinitialiser la base de données des machines VirtualBox après cela, en fermant/tuant tout processus VirtualBox en cours d’exécution. (VBoxSVC persiste parfois sous Windows ; vous devrez peut-être le tuer depuis le Gestionnaire des tâches.)

  • Vous pouvez cloner votre modèle et créer une nouvelle VM modèle, puis utiliser VBoxManage modifyvm <uuid|name> --hardwareuuid <uuid> pour définir le “Hardware UUID” du nouveau modèle vers le “Machine UUID”/“Hardware UUID” du modèle original. Je dis que vous devez cloner la VM pour créer une nouvelle VM modèle car si vous essayez de définir le “Hardware UUID” avec cette commande sur le modèle original, cela n’ajoutera pas l’attribut uuid au noeud /VirtualBox/Machine/Hardware, puisqu’il peut encore l’impliciter depuis le “Machine UUID”, et donc ne copiera pas cette valeur vers les clones créés.