14 octobre 2007

KVM, console série et GNU screen

Tags : ,

posté dans Configuration |

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.

Article posté on Dimanche, 14 octobre 2007 à 5:23 dans Configuration. Vous pouvez suivre les commentaires sur cet article via un feed RSS 2.0. Vous pouvez laisser un commentaire. Le Ping n'est actuellement pas autorisé.

Laisser un commentaire

*
Pour prouver que vous n'êtes pas un bot, recopiez le code ci-dessous
Anti-Spam Image