Tu as un serveur sous Linux avec KVM installé. Pas d’interface graphique, pas de cockpit, pas de Proxmox. Juste du SSH, un terminal, et une envie simple : créer rapidement une VM propre et légère, sans te perdre dans les menus.
Bonne nouvelle, c’est exactement ce que permet virt-install
.
C’est un outil pas très bavard, un peu verbeux parfois, mais diablement efficace quand on a compris la logique.
Voici comment créer une VM minimaliste, sans clics, sans fioritures, en 2025.
Prérequis : avoir un hôte KVM prêt à l’emploi
Avant de te lancer, il faut :
- Un noyau Linux avec support KVM (vérifie avec
lsmod | grep kvm
) - Les outils installés :
sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients virtinst bridge-utils
Sur RHEL / CentOS / Rocky / AlmaLinux :
sudo dnf install qemu-kvm libvirt virt-install bridge-utils
Vérifie que libvirtd
tourne :
sudo systemctl status libvirtd
Et que ton utilisateur fait partie du groupe libvirt
:
sudo usermod -aG libvirt $USER
newgrp libvirt
1. Télécharger une ISO minimaliste
Tu peux utiliser une image Debian ou Alpine pour faire quelque chose de léger. Exemple :
wget https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-12.6.0-amd64-netinst.iso -O debian.iso
Ou une ISO Alpine :
wget https://dl-cdn.alpinelinux.org/alpine/v3.19/releases/x86_64/alpine-standard-3.19.1-x86_64.iso -O alpine.iso
Place-la dans /var/lib/libvirt/images/
ou un dossier lisible par libvirt
.
2. Créer un disque pour la VM
qemu-img create -f qcow2 /var/lib/libvirt/images/minivm.qcow2 8G
Un disque de 8 Go suffit pour un OS de base (voire 1 ou 2 Go pour Alpine).
3. Créer la VM avec virt-install
Voici la commande complète :
virt-install \
--name minivm \
--ram 1024 \
--vcpus 1 \
--disk path=/var/lib/libvirt/images/minivm.qcow2,format=qcow2 \
--cdrom /var/lib/libvirt/images/debian.iso \
--os-variant debian12 \
--network network=default \
--graphics none \
--console pty,target_type=serial \
--boot cdrom
Explication rapide :
--graphics none
désactive l’interface graphique--console pty
permet d’avoir un terminal série pour l’install--network network=default
utilise le NAT de libvirt par défaut--os-variant
aide à configurer le matériel virtuel de façon optimisée
Tu peux adapter --ram
et --vcpus
selon tes besoins.
4. Installer l’OS via la console
Tu vas voir quelque chose comme :
Starting install...
Connected to domain minivm
Escape character is ^]
Et là, l’installateur Debian (ou Alpine) s’ouvre dans ton terminal.
Oui, c’est old school. Mais ça marche très bien.
Si tu perds la session ou veux y revenir plus tard :
virsh console minivm
(Tu sors de la console avec Ctrl+]
)
5. Accéder à la VM et la gérer
Quelques commandes utiles :
- Lister les VM :
virsh list --all
- Démarrer / arrêter / redémarrer :
virsh start minivm
virsh shutdown minivm
virsh reboot minivm
- Connexion console :
virsh console minivm
- Afficher les infos réseau :
virsh domifaddr minivm
- Supprimer la VM proprement :
virsh destroy minivm
virsh undefine minivm --remove-all-storage
6. Et si je veux automatiser ça ?
Tu peux très bien enchaîner ça dans un script Bash, voire en Ansible avec le module community.libvirt.virt
.
Exemple minimal de script :
#!/bin/bash
NAME=minivm
ISO=/var/lib/libvirt/images/debian.iso
DISK=/var/lib/libvirt/images/$NAME.qcow2
qemu-img create -f qcow2 $DISK 8G
virt-install \
--name $NAME \
--ram 1024 \
--vcpus 1 \
--disk path=$DISK,format=qcow2 \
--cdrom $ISO \
--os-variant debian12 \
--network network=default \
--graphics none \
--console pty,target_type=serial \
--boot cdrom
Bonus : pour Alpine Linux (plus extrême)
Alpine démarre hyper vite, consomme quasiment rien, et peut être installé en 2 minutes.
Tu peux réduire la RAM à 256 Mo, voire moins :
virt-install \
--name alpinevm \
--ram 256 \
--vcpus 1 \
--disk path=/var/lib/libvirt/images/alpine.qcow2,size=2 \
--cdrom /var/lib/libvirt/images/alpine.iso \
--os-variant generic \
--network network=default \
--graphics none \
--console pty,target_type=serial