Aller au contenu
Virtualisation medium

Installer KVM/libvirt sur Linux

15 min de lecture

Logo KVM

Vous voulez créer des machines virtuelles sur votre serveur Linux ? Ce guide vous accompagne pour installer KVM/libvirt en 15 minutes. À la fin, vous aurez un hôte de virtualisation fonctionnel, prêt à créer vos premières VMs.

Si vous êtes pressé et sur une distribution standard (Ubuntu/Debian ou RHEL/Rocky) :

Ubuntu/Debian
# 1. Vérifier le CPU
egrep -c '(vmx|svm)' /proc/cpuinfo # Doit être > 0
# 2. Installer
sudo apt install -y qemu-kvm libvirt-daemon-system libvirt-clients virtinst
# 3. Activer
sudo systemctl enable --now libvirtd
# 4. Permissions
sudo usermod -aG libvirt,kvm $USER && newgrp libvirt
# 5. Tester
virt-host-validate && virsh -c qemu:///system list --all
RHEL/Rocky/Fedora
# 1. Vérifier le CPU
egrep -c '(vmx|svm)' /proc/cpuinfo # Doit être > 0
# 2. Installer
sudo dnf install -y @virtualization
# 3. Activer
sudo systemctl enable --now libvirtd
# 4. Permissions
sudo usermod -aG libvirt $USER && newgrp libvirt
# 5. Tester
virt-host-validate && virsh -c qemu:///system list --all
  • Vérifier que votre CPU supporte la virtualisation
  • Installer les paquets nécessaires selon votre distribution
  • Configurer les permissions pour gérer les VMs sans sudo
  • Valider l’installation avec les commandes de diagnostic
  • Un serveur ou PC avec un processeur Intel VT-x ou AMD-V
  • Un système Linux (Debian/Ubuntu ou RHEL/Rocky/Fedora)
  • Accès root ou sudo

La virtualisation KVM nécessite un processeur avec les extensions Intel VT-x ou AMD-V. Sans ce support matériel, vos VMs fonctionneront en émulation pure (très lent).

Fenêtre de terminal
# Compter le nombre de cœurs avec support virtualisation
egrep -c '(vmx|svm)' /proc/cpuinfo

Résultat attendu : un nombre supérieur à 0.

RésultatSignification
0Pas de support ou désactivé dans le BIOS
4, 8, 16Support activé (nombre = cœurs logiques)
Fenêtre de terminal
# Intel ou AMD ?
grep -E 'vmx|svm' /proc/cpuinfo | head -1
ExtensionFabricantModule kernel
vmxIntelkvm_intel
svmAMDkvm_amd

L’installation diffère selon votre distribution. Sélectionnez l’onglet correspondant :

Fenêtre de terminal
sudo apt update && sudo apt upgrade -y
Fenêtre de terminal
sudo apt install -y \
qemu-kvm \
libvirt-daemon-system \
libvirt-clients \
virtinst \
virt-manager

Détail des paquets :

PaquetRôle
qemu-kvmQEMU avec accélération KVM
libvirt-daemon-systemDaemon libvirtd + configuration système
libvirt-clientsOutils CLI (virsh)
virtinstOutil virt-install pour créer des VMs
virt-managerInterface graphique (optionnel sur serveur)

Sur Ubuntu, un utilitaire dédié vérifie la configuration :

Fenêtre de terminal
sudo apt install -y cpu-checker
kvm-ok

Résultat attendu :

INFO: /dev/kvm exists
KVM acceleration can be used

Le daemon libvirt doit être démarré et activé au boot.

  1. Activer et démarrer le service

    Fenêtre de terminal
    sudo systemctl enable --now libvirtd
  2. Vérifier le statut

    Fenêtre de terminal
    sudo systemctl status libvirtd

    Résultat attendu : Active: active (running)

  3. Vérifier la socket

    Fenêtre de terminal
    ls -la /run/libvirt/libvirt-sock

    Ce fichier socket permet la communication avec libvirt.

Par défaut, seul root peut gérer les VMs. Pour éviter d’utiliser sudo à chaque commande, ajoutez votre utilisateur aux groupes appropriés.

Fenêtre de terminal
# Ajouter l'utilisateur aux groupes libvirt et kvm
sudo usermod -aG libvirt $USER
sudo usermod -aG kvm $USER
Fenêtre de terminal
groups $USER

Résultat attendu : ... libvirt kvm ...

Résumé : libvirt a deux modes — system (serveurs) et session (desktop). Si virsh net-list est vide sans sudo, vous êtes probablement connecté à session au lieu de system.

Solution rapide (recommandée pour serveurs) :

Fenêtre de terminal
# Ajouter dans ~/.bashrc ou ~/.zshrc
export LIBVIRT_DEFAULT_URI="qemu:///system"
source ~/.bashrc

Vérification :

Fenêtre de terminal
virsh uri
# Doit afficher : qemu:///system

Plusieurs commandes permettent de confirmer que tout fonctionne.

Fenêtre de terminal
# Si LIBVIRT_DEFAULT_URI est configuré :
virsh list --all
# Sinon, précisez l'URI :
virsh -c qemu:///system list --all

Résultat attendu (installation fraîche) :

Id Name State
--------------------

Une liste vide est normale — vous n’avez pas encore créé de VM.

Fenêtre de terminal
virsh net-list --all

Résultat attendu :

Name State Autostart Persistent
--------------------------------------------
default active yes yes

Si le réseau default n’est pas actif (State = inactive) :

Fenêtre de terminal
virsh net-start default
virsh net-autostart default

Test 3 : Vérifier (et créer) le pool de stockage

Section intitulée « Test 3 : Vérifier (et créer) le pool de stockage »

Le pool default peut exister ou non selon votre distribution et méthode d’installation.

Fenêtre de terminal
virsh pool-list --all

Si le pool existe déjà (virt-manager l’a peut-être créé) :

Name State Autostart
-------------------------------
default active yes

Si le pool est absent (fréquent sur installation minimale) :

Créer le pool default :

Fenêtre de terminal
# Définir le pool (pointe vers /var/lib/libvirt/images/)
virsh pool-define-as default dir --target /var/lib/libvirt/images
# Créer le répertoire si nécessaire
sudo mkdir -p /var/lib/libvirt/images
# Démarrer et activer au boot
virsh pool-start default
virsh pool-autostart default

Vérification :

Fenêtre de terminal
virsh pool-list --all

Résultat attendu :

Name State Autostart
-------------------------------
default active yes

Le pool default pointe vers /var/lib/libvirt/images/.

Fenêtre de terminal
virt-host-validate

Exemple de résultat :

QEMU: Checking for hardware virtualization : PASS
QEMU: Checking if device /dev/kvm exists : PASS
QEMU: Checking if device /dev/kvm is accessible : PASS
QEMU: Checking if device /dev/vhost-net exists : PASS
QEMU: Checking if device /dev/net/tun exists : PASS
QEMU: Checking for cgroup 'memory' controller support : PASS
QEMU: Checking for device assignment IOMMU support : WARN (...)
QEMU: Checking for secure guest support : WARN (...)
CheminContenu
/etc/libvirt/Configuration libvirt
/etc/libvirt/qemu/Définitions XML des VMs
/var/lib/libvirt/images/Disques virtuels (pool default)
/run/libvirt/libvirt-sockSocket de communication
/var/log/libvirt/qemu/Logs des VMs
ErreurCause probableSolution
Permission denied sur socketGroupe libvirt non actifSe déconnecter/reconnecter ou newgrp libvirt
/dev/kvm n’existe pasVirtualisation désactivéeActiver VT-x/AMD-V dans le BIOS, puis modprobe kvm kvm_intel
virsh net-list videConnecté à qemu:///sessionUtiliser virsh -c qemu:///system ou configurer LIBVIRT_DEFAULT_URI
libvirtd inactif / n’existe pasService non démarré ou démons modulairessystemctl enable --now libvirtd ou activer les sockets modulaires
  1. Vérifier le CPU avec egrep -c '(vmx|svm)' /proc/cpuinfo — doit être > 0

  2. Installer les paquets : qemu-kvm, libvirt-daemon-system, virtinst (Debian) ou @virtualization (RHEL)

  3. Activer libvirt : systemctl enable --now libvirtd (ou sockets modulaires sur distros récentes)

  4. Configurer les permissions : usermod -aG libvirt,kvm $USER puis se reconnecter

  5. Valider avec virt-host-validate/dev/kvm doit être PASS

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracing. Aujourd'hui, ce site ne couvre même pas mes frais d'hébergement, d'électricité, de matériel, de logiciels, mais surtout de cafés.

Un soutien régulier, même symbolique, m'aide à garder ces ressources gratuites et à continuer de produire des guides de qualité. Merci pour votre appui.