Le problème s'est manifesté lors d'un transfert de VM (export/import) entre deux hôtes/hyperviseurs.
La VM (avec un BIOS EFI) a été créée sur un hyperviseur A
# version sur l'hyperviseur A
virsh version
On a souhaité déplacer la VM de l'hyperviseur A vers l'hyperviseur B
# version sur l'hyperviseur B
virsh version
Compiled against library: libvirt 10.0.0
Using library: libvirt 10.0.0
Using API: QEMU 10.0.0
Running hypervisor: QEMU 8.2.2
Les fichiers (disque et nvram) ont été copiés sur l'hyperviseur B mais lors de la tentative de création du domaine (VM), le message d'erreur suivant est affiché :
error: Failed to define domain from deb13.xml error: operation failed: Unable to find 'efi' firmware that is compatible with the current configuration
Lister des capacités des VM de type Q35 sur l'hyperviseur B
virsh domcapabilities --machine q35 --xpath /domainCapabilities/os
<os supported="yes"> <enum name="firmware"> <value>efi</value> </enum> <loader supported="yes"> <value>/usr/share/OVMF/OVMF_CODE_4M.ms.fd</value> <value>/usr/share/OVMF/OVMF_CODE_4M.secboot.fd</value> <value>/usr/share/ovmf/OVMF.amdsev.fd</value> <value>/usr/share/OVMF/OVMF_CODE_4M.fd</value> <enum name="type"> <value>rom</value> <value>pflash</value> </enum> <enum name="readonly"> <value>yes</value> <value>no</value> </enum> <enum name="secure"> <value>yes</value> <value>no</value> </enum> </loader> </os>
Le dump XML produit pour la VM sur l'hyperviseur A contient :
<os firmware='efi'> <type arch='x86_64' machine='pc-q35'>hvm</type> <firmware> <feature enabled='yes' name='enrolled-keys'/> <feature enabled='yes' name='secure-boot'/> </firmware> <loader readonly='yes' secure='yes' type='pflash' format='raw'>/usr/share/OVMF/OVMF_CODE_4M.ms.fd</loader> <nvram template='/usr/share/OVMF/OVMF_VARS_4M.ms.fd' templateFormat='raw' format='raw'>/home/yoann/KVM/deb13/deb13_VARS.fd</nvram> <boot dev='hd'/> </os>
On utilise bien les fonctionnalités secure-boot mais le
Ne pas utiliser le fichier nvram exporté. Recréer un fichier nvram à partir de celui disponible sur le nouvel hôte/hyperviseur :
cp /usr/share/OVMF/OVMF_VARS_4M.ms.fd deb13_VARS.fd