
L'outil incus-migrate importe une machine existante (une VM d'un autre hyperviseur, un disque, ou même un serveur physique) dans Incus, sous forme d'instance. Il fonctionne en mode interactif : on lui indique le serveur Incus cible, la source à importer et quelques options, et il fait le reste. Ce guide déroule la procédure, les formats acceptés et le piège UEFI/NVRAM qui empêche souvent la VM importée de démarrer. Pour qui migre depuis VMware, Proxmox ou un serveur physique.
Ce que vous allez apprendre
Section intitulée « Ce que vous allez apprendre »- Récupérer et lancer
incus-migrate. - Le déroulé interactif de l'import.
- Les formats de disque acceptés.
- Le piège UEFI qui empêche le boot, et son contournement.
Prérequis
Section intitulée « Prérequis »- Un serveur Incus cible dont l'API est exposée sur le réseau (
core.https_address). rsyncinstallé sur la machine source.- Un token d'accès au serveur Incus (
incus config trust add) ou un certificat.
Récupérer l'outil
Section intitulée « Récupérer l'outil »Sur un système installé depuis les dépôts Zabbly, incus-migrate est fourni par le paquet incus-extra (le même qui contient lxd-to-incus) :
sudo apt install incus-extrawhich incus-migrate # /usr/bin/incus-migrateÀ défaut, c'est aussi un binaire autonome publié dans les assets des releases Incus, pratique sur une machine source qui n'a pas le dépôt :
wget https://github.com/lxc/incus/releases/download/<version>/bin.linux.incus-migrate.x86_64chmod u+x bin.linux.incus-migrate.x86_64sudo ./bin.linux.incus-migrate.x86_64Le déroulé interactif
Section intitulée « Le déroulé interactif »L'outil pose une série de questions ; il n'y a pas de longue ligne de commande à mémoriser.
-
Cible locale ou distante : « The local Incus server is the target ». Répondre no pour importer vers un serveur Incus distant, puis fournir son URL et valider l'empreinte du certificat.
-
Authentification : trois choix, dont le token (généré avec
incus config trust add). L'outil affiche ensuite le nom et la version du serveur distant. Le mécanisme du token de confiance est détaillé dans le guide Accès distant et UI. -
Type : conteneur, machine virtuelle, VM depuis un
.ova, ou volume personnalisé. -
Cible dans le cluster : si la cible est un cluster, une question supplémentaire demande s'il faut viser un nœud précis (sinon placement automatique).
-
Nom et source : le nom de l'instance, puis le chemin du rootfs (conteneur) ou du disque / image bootable (VM), et d'éventuels montages additionnels.
-
UEFI Secure Boot (VM uniquement) : la question « Does the VM support UEFI Secure Boot? » positionne
security.securebootsur l'instance créée. -
Overrides (optionnels) : profils, pool de stockage, taille, réseau, disques, avant de lancer avec « Begin the migration ».
Voici la fin réelle d'un import de conteneur vers un cluster Incus 7.0 (source : le / d'une machine, cible : le cluster) :
Remote server: Hostname: node1 Version: 7.0.0
Instance to be created: Name: imported-box Project: default Type: container Source: /
Additional overrides can be applied at this stage:1) Begin the migration with the above configuration...Please pick one of the options above [default=1]:Transferring instance: imported-box: 1.08GB (35.90MB/s)Instance imported-box successfully createdLe transfert se fait par rsync (d'où le prérequis). L'instance est ensuite créée, arrêtée, prête à démarrer. Sur un cluster, elle est placée automatiquement (ici sur node3) sauf si vous avez ciblé un nœud :
+--------------+---------+-----------+----------+| NAME | STATE | TYPE | LOCATION |+--------------+---------+-----------+----------+| imported-box | STOPPED | CONTAINER | node3 |+--------------+---------+-----------+----------+Les formats acceptés
Section intitulée « Les formats acceptés »Pour une VM, incus-migrate consomme directement les formats courants : raw, qcow2 (support direct depuis Incus 6.6), ova et vmdk. Pas de conversion manuelle à prévoir pour ces formats.
Pour une image issue de VMware ou VirtualBox, un pré-traitement avec virt-v2v est souvent nécessaire pour injecter les pilotes virtio (sinon le disque n'est pas détecté au boot) :
virt-v2v -i disk source.vmdk -o local -of raw --block-driver virtio-scsiLe piège UEFI/NVRAM
Section intitulée « Le piège UEFI/NVRAM »C'est la galère classique : la VM importée ne démarre pas, écran noir ou shell UEFI.
Autre point de vigilance : sans les pilotes virtio dans l'image (VMware/VirtualBox), le disque n'est pas vu au démarrage, d'où le passage par virt-v2v.
À retenir
Section intitulée « À retenir »incus-migrateimporte une VM ou une machine physique dans Incus, en mode interactif ; il vit dans le paquetincus-extra(ou en binaire autonome).- Répondre no à « local server is the target » pour viser un serveur distant ; sur un cluster, placement auto sauf nœud ciblé.
- Prérequis : API exposée (
core.https_address),rsyncsur la source, un token d'accès (incus config trust add). - Formats directs : raw, qcow2, ova, vmdk (qcow2 depuis Incus 6.6).
- Piège UEFI : la config de boot est dans la NVRAM, pas le disque : préparez un fallback avec
grub-install --removable. - Images VMware/VirtualBox : injectez les pilotes virtio avec
virt-v2v.
FAQ : questions fréquentes sur incus-migrate
Section intitulée « FAQ : questions fréquentes sur incus-migrate »L'outil incus-migrate
chmod u+x bin.linux.incus-migrate.x86_64
sudo ./bin.linux.incus-migrate.x86_64
Ce binaire autonome (dans les releases Incus) fonctionne en interactif : il demande le serveur cible, l'auth (token), le type, le disque source, le support UEFI, puis des overrides.Prérequis : l'API Incus exposée (core.https_address) et rsync sur la machine source.raw, qcow2, ova, vmdk
incus-migrate accepte directement raw, qcow2 (depuis Incus 6.6), ova et vmdk, sans conversion manuelle.Pour une image VMware ou VirtualBox, un pré-traitement avec virt-v2v est souvent requis pour injecter les pilotes virtio :virt-v2v -i disk source.vmdk -o local -of raw --block-driver virtio-scsi
Sans ces pilotes, le disque n'est pas détecté au démarrage.Le piège UEFI/NVRAM
La config de boot UEFI vit dans la NVRAM de la machine d'origine, pas dans l'image disque. Convertir le disque ne restaure donc pas l'entrée de boot (cas typique VirtualBox → Incus).La parade, avant la migration, crée un chemin de démarrage de secours standard :grub-install /dev/sdX --removable
Cela écrit \EFI\BOOT\bootx64.efi, que le firmware trouve toujours.virt-v2v puis incus-migrate
Les images VMware/VirtualBox manquent souvent des pilotes virtio attendus par Incus. Préparez l'image :virt-v2v -i disk source.vmdk -o local -of raw --block-driver virtio-scsi
Puis importez avec incus-migrate. Anticipez aussi le piège UEFI (config de boot en NVRAM) avec grub-install --removable sur la source avant migration.