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"]
| Composant | Rôle |
|---|---|
| KVM | Module du noyau : la virtualisation accélérée par le processeur |
| QEMU | Émule les périphériques de la VM |
| libvirt | Couche de gestion (fichiers XML de VM, réseaux virtuels, pools de stockage) |
| virt-manager | Interface graphique |
| virsh | Commande 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 defaultVé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-winpendant l’installation, et installer l’agent QEMU guest agent + SPICE guest tools).
4. Réseaux libvirt
| Réseau | Comportement |
|---|---|
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
| VirtualBox | KVM / virt-manager | |
|---|---|---|
| Performances sous Linux | Bonnes | Meilleures (natif) |
| Facilité | Très simple | Simple, quelques notions en plus |
| Windows/macOS comme hôte | ✅ | ❌ (Linux uniquement) |
| Utilisé en entreprise | Labo | Proxmox, OpenStack, clouds |
| Cohabitation | ⚠️ Pas en même temps que KVM |