Outils pour utilisateurs

Outils du site


sysadmin:linux:virtualisation:kvm:creer_une_vm_avec_virt-install

Créer une VM avec virt-install

La CLI virt-install est un assistant de création de machine Virtuelle. Elle peut être lancée en mode interactif ou invoquée via un ensemble d'options décrivant la VM à créer.

:TODO: bureau distant avec spice

Installation de virt-install

sudo apt-get install virtinst libosinfo-bin

A propos des modes d'exécution

virt-install communique avec le service libvirtd et peut être invoquée en spécifiant le mode d'exécution souhaité via l'option --connect :

  • --connect qemu://session : exécution en espace utilisateur avec les droits limités de l'utilisateur ;
  • --connect qemu://system : exécution avec un utilisateur système libvirt-qemu et des droits étendus.
Pour que l'utilisateur puisse interagir en mode system avec les différents outils virt-install, virsh etc, il doit faire parti des groupes libvirt et libvirt-qemu.

Et vice-versa, selon les options utilisées lors de la création d'une VM en mode system, l'utilisateur système libvirt-qemu devra pouvoir accéder aux fichiers disques et aux ISO utilisés lors de la création de la VM pouvant se trouver dans les dossiers de l'utilisateur.

Ci-dessous un exemple de retour d'erreur lors d'une tentative de création de VM dans un dossier utilisateur sur lequel l'hyperviseur n'a pas les droits appropriés :

WARNING  il se peut que /home/yoann/KVM/install_files/debian-12.5.0-amd64-netinst.iso ne soit pas accessible à l’hyperviseur. Vous devrez fournir à l’utilisateur « libvirt-qemu » des permissions de recherche pour les répertoires suivants : ['/home/yoann', '/home/yoann/KVM', '/home/yoann/KVM/install_files']

Début d’installation…
ERROR    Cannot access storage file '/home/yoann/KVM/debian12/vda' (as uid:64055, gid:104): Permission non accordée

Plusieurs solutions sont possibles via les droits d'accès classiques ou les ACL mais il faudra permettre à l'utilisateur système libvirt-qemu d'accéder aux ressources nécessaires à la création de la VM.

Pour ajouter l'utilisateur courant au groupe :

sudo adduser $( id -un ) libvirt-qemu

Ensuite on peut changer le groupe principal de l'utilisateur courant et créer les dossier :

newgrp libvirt-qemu
 
mkdir -p ~/KVM/maVM

Pour définir un processeur de type pentium sur le système invité :

 

Exemple de création d'une VM

Plusieurs modes d'installation sont possibles, ici on a choisit de télécharger un ISO et d'installer la VM à partir de celui-ci. virt-install peut créer le fichier disque et le réseau, ici nous choisissons de les créer en amont.

lister les réseaux disponibles:

virsh net-list
 Name      State    Autostart   Persistent
--------------------------------------------
 default   active   yes         yes
 
# Afficher les caractéristiques du réseau "default"
virsh net-info default
Name:           default
UUID:           af20a5ca-db45-4b5e-a2ee-e50ad4c79264
Active:         yes
Persistent:     yes
Autostart:      yes
Bridge:         virbr0

Ici il existe un réseau par défaut, le nom du pont est virbr0, on l'utilisera pour notre VM.

Plusieurs formats sont disponibles pour le fichier disque de la VM. On utilise qcow2, il sera provisionné à l'usage.

# Positionne le groupe libvirt-qemu comme groupe principal de l'utilisateur courant
newgrp libvirt-qemu
 
mkdir -p ~/KVM/debian11
cd ~/KVM/debian11
qemu-img create -f qcow2 vda 5G
L'utilisateur libvirt-qemu doit avoir accès en lecture/écriture sur le dossier contenant l'image disque.

Créons à présent la VM avec virt-install:

virt-install \
 -n debian11-amd64 \
 --description "Debian 11 codename bullseye" \
 --os-type=Linux \
 --os-variant=debian9 \
 --ram=1024 \
 --vcpus=2 \
 --disk format=qcow2,path=/home/yoann/KVM/debian11/vda \
 --vnc \
 --cdrom /home/yoann/KVM/inst_medias/debian-11.6.0-amd64-netinst.iso \
 --network bridge:virbr0

L'utilisation de l'option --os-variant est fortement recommandée. Elle prépositionne un ensemble d'options permettant d'optimiser la VM. Les valeurs possibles de --os-variant peuvent être obtenues par la commande osinfo-query os

Si la commande osinfo-query n'est pas disponible, on peut également invoquer :
virt-install --osinfo list

Cet exemple succinct donne les éléments de base de la syntaxe de virt-install. Des notes plus détaillées sont disponibles :

A propos d' osinfo-query

La commande osinfo-query s'installe via le paquet libosinfo-bin :

apt install -y libosinfo-bin

:TODO_DOCUPDATE:

La commmande osinfo-query s'appuie sur un ensemble de fichiers XML présent dans /usr/share/osinfo/os/. Ils peuvent être mis à jour.

A propos des processeurs

On peut spécifier un modèle de processeur pour le système invité via l'option --cpu. La liste des processeurs et des fonctionnalités associées est définie dans des fichiers XML sous /usr/share/libvirt/cpu_map/ :

Par exemple le fichier /usr/share/libvirt/cpu_map/x86_pentium.xml ;

<cpus>
  <model name='pentium'>
    <decode host='on' guest='on'/>
    <feature name='cx8'/>
    <feature name='de'/>
    <feature name='fpu'/>
    <feature name='mce'/>
    <feature name='mmx'/>
    <feature name='msr'/>
    <feature name='pse'/>
    <feature name='tsc'/>
    <feature name='vme'/>
  </model>
</cpus>

Dépannages

Lors des premières tentatives de création de VM en espace utilisateur, la connexion de la VM en mode bridge provoquait systématiquement une erreur : confère note failed-to-parse-default-acl-file

Références

sysadmin/linux/virtualisation/kvm/creer_une_vm_avec_virt-install.txt · Dernière modification : 2026/06/18 18:50 de yoann