KVM, console série et GNU screen
Le gros avantage cosmétique de Xen est son manager. Il permet de créer des machines virtuelles et d'attacher et détacher une console. KVM/QEMU utilise SDL pour créer une fenêtre présentant la console graphique. Il est également possible d'utiliser une connexion VNC. Mais tout cela n'est pas suffisant pour obtenir quelque chose de souple comme la commande xm de Xen.
Voici comment palier à cela avec un peu de configuration de base et GNU Screen...
La commande kvm dispose d'une option -nographic permettant de désactiver l'affichage graphique et de rediriger la console série du système guest (pas vraiment guest puisque c'est KVM) sur la console d'où à été lancé la commande. Côté kvm c'est donc tout simple. Reste à dire au système guest d'utiliser la console série exactement comme pour une configuration classique utilisant un TTY série.
Dans le système guest on commence par configurer Grub en ajoutant en début du fichier menu.lst :
serial --unit=0 --speed=9600 --word=8 --parity =no --stop=1 terminal --timeout=10 --dumb serial console
Bref, on utilise la console série en 9600 8N1. Toujours dans ce fichier, on ajoute les arguments pour le noyau sur la ligne kernel qui va bien :
console=tty0 console=ttyS0,9600n8
Grub, au prochain boot affichera ses informations sur la console série (attention, c'est moche, pas de beau menu coloré). Idem pour le noyau. Maintenant configurons le système lui-même pour permettre l'utilisation d'une console. Ceci est l'affaire de getty et se configure naturellement dans /etc/inittab :
T0:123:respawn:/sbin/getty -L ttyS0 9600 vt100
Cette ligne est normalement commentée et utilisée pour les runlevel 2 et 3 (second champ). On décommente et on précise un runlevel en plus (123 donc).
Dernier point, on s'assure que ttyS0 est bien un terminal considéré comme sûr :
% cat /etc/securetty | grep ttyS0 ttyS0
Parfait. Il ne reste plus qu'à stop le système guest et le relancer dans un screen :
% screen kvm -hda disk.cow -m 512 -net nic -net tap,ifname=tap10 -nographic
Et voilà. Total bonheur.
PS : Attention ! Configurer screen ou votre PS1 de manière à clairement différencier le guest de l'hôte. Lacher un reboot ou un init 0 dans la mauvaise console arrive très très facilement.