{{tag>software virtualisation kvm qemu linux vm}}
====== 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 :
* [[sysadmin:linux:virtualisation:kvm:installation_invite:creation_vm_debian_12|Création d'une VM Debian 12]]
===== 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'' ;
===== Transmettre des options à QEMU =====
Pour définir des variables d'environnement ou spécifier des options directement à QEMU, utiliser la syntaxe :
virt-install --connect qemu:///session \
...
--qemu-commandline=env=PIPEWIRE_RUNTIME_DIR='/run/user/1000' \
--qemu-commandline="-display default,show-cursor=off" \
...
===== 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 [[software:applications:qemu:depannage:failed-to-parse-default-acl-file]]
===== Références =====
* https://unix.stackexchange.com/questions/309788/how-to-create-a-vm-from-scratch-with-virsh
* https://www.thegeekstuff.com/2014/10/linux-kvm-create-guest-vm/
* [[https://askubuntu.com/questions/1070500/why-doesnt-osinfo-query-os-detect-ubuntu-18-04|Usages de la commande osinfo-query (askubuntu.com) (en)]]