Sous debian 9, j’ai besoin de copier l’ensemble des fichiers d’un disque sur un autre disque, et de rendre ce nouveau disque démarrable. Je précise qu’il s’agit de disques virtuels (VirtualBox, extensions .vdi/.vdmk).
La commande dd
n’est pas possible dans mon cas car le nouveau disque est plus petit que l’ancien. En effet, j’ai créé bêtement un disque dynamique de 400 GB sur l’ancienne VM et je souhaite réduire ce disque à 100 GB sur la nouvelle machine.
J’ai essayé de longues heures de passer par les options de vboxmanage
, mais aucune ne fonctionne convenablement.
Je me suis donc résolu à faire un backup complet des fichiers de la VM1 sur la VM2, puis de rendre la VM2 démarrable.
J’ai été surpris de constater que la documentation en ligne à ce sujet (en tout cas en anglais) est plutôt lacunaire. Après moults essais, je pense être parvenu à mes fins, mais je souhaiterais avoir l’avis d’utilisateurs plus avertis afin de comprendre si je fais tout juste et si je n’ai rien oublié au passage.
Voici le déroulement de la copie point par point
1. Création d’une nouvelle machine virtuelle (VM2) dans VirtualBox
Je n’installe rien, je me contente de créer une nouvelle machine avec un disque dur dynamique de 100 GB.
2. Copie de la VM1 sur le disque de la VM2
Dans VirtualBox, j’ajoute le disque de la VM1 dans les settings de la VM2. J’ajoute également un ISO Ubuntu en Live CD/DVD (pas d’ISO debian live sous la main).
Je lance la VM2 qui démarre avec l’ISO d’Ubuntu.
Une fois le live CD Ubuntu démarré, je lance Gparted, je crée une table de partition MSDOS sur le disque vierge de la VM2, dans laquelle je crée une partition ext4 et une partition SWAP.
Je monte les deux volumes, et je copie le disque de la VM1 sur la VM2 avec la commande suivante:
sudo rsync -aAXx /chemin_d_accès_a_la_VM1 /chemin_d_accès_a_la_VM2
Une fois que c’est fait, j’éteinds la machine.
3. Rendre la nouvelle machine démarrable
Je relance la VM2, toujours avec le live os Ubuntu, mais SANS le disque de la VM1
Il faut maintenant installer grub et mettre à jour le fichier /etc/fstab dans la VM2 pour la rendre démarrable. Commandes:
sudo mount /dev/sda1 /mnt
sudo mount --bind /dev /mnt/dev
sudo mount --bind /sys /mnt/sys
sudo mount --bind /proc /mnt/proc
sudo chroot /mnt
Une fois “chrooté”, j’installe grub:
grub-install /dev/sda
update-grub
Puis je remplace les anciens UUID de la VM1 dans /etc/fstab par les nouveaux UUID de la VM2:
blkid
nano /etc/fstab
Je vérifie que les UUID dans /boot/grub/grub.cfg sont corrects
cat /boot/grub/grub.cfg
Si tout est correct, je redémarre la machine, cette fois sans le live cd.
Cela fonctionne, mais la machine patine pendant une trentaine de secondes au démarrage avec le message:
Begin: Waiting for suspend/resume device ...
Begin: Running /scripts/local-block ... done.
Pour éviter cela, il faut encore mettre à jour l’UUID du nouveau SWAP:
nano /etc/initramfs-tools/conf.d/resume
update-initramfs -u
Voilà! Apparemment, tout fonctionne… Mais je voudrais être sûr que j’ai bien fait tout juste, étant donné que je n’ai trouvé aucun tutoriel complet expliquant la marche à suivre de A à Z.