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, 16...Support 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 tracking. Un soutien, même symbolique, m'aide à couvrir l'hébergement et à garder ces ressources gratuites. Merci pour votre appui.

Le formulaire ne s'affiche pas ? Ouvrir Ko-fi dans un onglet.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn