V03 - KVM, QEMU, libvirt et virt-manager

Objectif

Utiliser l’hyperviseur natif de Linux (le plus performant sur Pop!_OS/Arch) avec l’interface graphique virt-manager et la commande virsh. C’est ce que tu utilises pour ta VM Windows + SSMS.


1. Qui fait quoi ?

flowchart TB
  VM["virt-manager (graphique) / virsh (ligne de commande)"] --> LV["libvirt (libvirtd)<br/>gestion des VM, réseaux, stockages"]
  LV --> Q["QEMU<br/>émule le matériel (disque, carte réseau…)"]
  Q --> K["KVM (module du noyau Linux)<br/>exécute le CPU de la VM à vitesse native"]
  K --> HW["Processeur avec VT-x / AMD-V"]
ComposantRôle
KVMModule du noyau : la virtualisation accélérée par le processeur
QEMUÉmule les périphériques de la VM
libvirtCouche de gestion (fichiers XML de VM, réseaux virtuels, pools de stockage)
virt-managerInterface graphique
virshCommande de libvirt

2. Installation

# Pop!_OS / Ubuntu
sudo apt install virt-manager qemu-system-x86 libvirt-daemon-system libvirt-clients bridge-utils ovmf swtpm
# Arch
sudo pacman -S virt-manager qemu-full libvirt dnsmasq edk2-ovmf swtpm
 
sudo systemctl enable --now libvirtd
sudo usermod -aG libvirt "$USER"          # puis déconnexion / reconnexion
virsh -c qemu:///system net-start default  # réseau NAT par défaut (192.168.122.0/24)
virsh -c qemu:///system net-autostart default

Vérifier : virt-host-validate (tout doit être PASS pour QEMU).

3. Créer une VM

Fichier → Nouvelle machine virtuelle → Média d’installation local (ISO) → RAM/CPU → disque (format qcow2, dans /var/lib/libvirt/images/) → cocher Personnaliser la configuration avant l’installation si besoin :

  • Windows 11 : Micrologiciel = UEFI avec Secure Boot (OVMF_CODE_4M.secboot), Ajouter un matériel → TPM (CRB, 2.0, émulé).
  • Performances : bus disque VirtIO et carte réseau virtio (pour Windows : charger les pilotes de l’ISO virtio-win pendant l’installation, et installer l’agent QEMU guest agent + SPICE guest tools).

4. Réseaux libvirt

RéseauComportement
default (NAT)192.168.122.0/24, DHCP, l’hôte est 192.168.122.1, les VM et l’hôte se voient
IsoléComme « réseau interne » de VirtualBox (labo pfSense/AD)
Pont (br0)La VM est sur le réseau physique (créer un pont avec NetworkManager)

Créer un réseau isolé : Édition → Détails de la connexion → Réseaux virtuels → + → mode Isolé, sans DHCP si un pfSense ou un serveur Windows fera le DHCP.

5. virsh : l’essentiel

export LIBVIRT_DEFAULT_URI=qemu:///system     # (à mettre dans ~/.bashrc)
virsh list --all                       # VM et état
virsh start win11                      # démarrer
virsh shutdown win11                   # extinction propre (ACPI)
virsh destroy win11                    # extinction forcée (débrancher la prise)
virsh autostart debian-web             # démarrer avec l'hôte
virsh snapshot-create-as win11 propre "Après installation"
virsh snapshot-list win11
virsh snapshot-revert win11 propre
virsh domifaddr debian-web             # IP de la VM (réseau NAT)
virsh net-dhcp-leases default          # toutes les IP distribuées
virsh dumpxml win11 > win11.xml        # sauvegarder la définition
virsh console debian-web               # console série (Ctrl+] pour sortir)

6. Comparaison avec VirtualBox

VirtualBoxKVM / virt-manager
Performances sous LinuxBonnesMeilleures (natif)
FacilitéTrès simpleSimple, quelques notions en plus
Windows/macOS comme hôte✅❌ (Linux uniquement)
Utilisé en entrepriseLaboProxmox, OpenStack, clouds
Cohabitation⚠️ Pas en même temps que KVM

Voir aussi