KVM : script d'init ancien

Pour utiliser KVM comme j'en avais envie il fallait que ces machines puissent démarrer lors de la séquence de boot de la machine hôte. Or, a priori, le lancement demande un écran ! Heureusement l'option --nographic est là. 
La machine virtuelle est destinée à contenir une instance de Shinken (analogue au célèbre Nagios mais avec une architecture bien plus souple et évoluée), vu qu'il y a peu de machines et services à surveiller une puissance importante n'est pas nécessaire. 
Le script de lancement devient alors :

#!/bin/bash 
HDA=/dev/mapper/VG00-SHINKEN_SYS
NOM=kvm-shinken
RAM=420M
# clavier FR
OPTION=' -k fr '   
OPTION=$OPTION' -nographic '
DEMON=' -daemonize '
# appel script de creation de l'interface "tap"
./qemu-ifup br0 tap1
RESEAU=' -net nic,macaddr=00:16:3e:90:03:01 -net tap, \ ifname=tap1,script=no,downscript=no '
kvm $DEMON -hda $HDA -boot c -name $NOM -m $RAM $OPTION $RESEAU 
Ce script permet de lancer ma machine virtuelle sans ouvrir d'écran.
Nouvelle version (2016) du script tenant compte des évolutions de Linux et Qemu/kvm (virtio par exemple), (l'option "nographic" n'existe plus ?) :
#!/bin/bash

HDA=/dev/mapper/VG00-COM--WEB 
# On "perfectionne le disque (partition LVM) 
DISK=' -drive file='$HDA',if=virtio,format=raw ' 
# On "précise" les paramètres QEMU 
EXEC='qemu-system-x86_64 -cpu host -enable-kvm -machine type=pc,accel=kvm:tcg -mem-path /hugepages '

NOM=toto 
RAM=1280M 
# clavier FR et un processeur 
OPTION=' -k fr -smp 1 '  

# Appel du script de création de l'interface réseau 
./bin/qemu-ifup br1 tap2

# Paramétrage réseau 
RESEAU=' -net nic,macaddr=00:16:3e:31:31:01,model=virtio -net tap,ifname=tap2,script=no,downscript=no '

# On lance en background avec l'oprion -nographic 
$EXEC $DEMON $SNAPSHOT -boot c $DISK -name $NOM -m $RAM $OPTION $RESEAU -nographic &

Cette dernière version de script tourne parfaitement sur "Jessie" et "unstable".

Pour l'arrêt le meilleur système est d'exécuter un "init 0" ... Pour réaliser cette opération il suffit de se connecter en ssh et de lancer un simple "init 0". Ce petit miracle s'obtient sans trop de problèmes en générant et partageant une clef SSH. Je ne développerais pas la manière de l'obtenir ici car la recette se trouve très facilement sur Internet.
Mais tout ceci ne permet pas de lancer et de stopper automatiquement et de manière commode la machine virtuelle depuis un script d'init un peu classique.
Un script d'init complet et "classique", compatible avec les autres, peut être celui-ci :
#!/bin/bash 
### BEGIN INIT INFO
# Provides:       shinken
# Required-Start: $network $remote_fs $syslog $time cron
# Default-Stop:  0 1 2 3 6  
# Default-Start:   5
# Required-Stop:
# Description:    shinken through KVM 
### END INIT INFO
 
FCMD=/tmp/FCMD
case "$1" in
start)
echo 'cd /etc/kvm' >$FCMD
echo './script-noscreen '  >>$FCMD
# Lancement différé pour ne pas surcharger le démarrage de l'hote
cat $FCMD | at now +2 minutes 
RETVAL=$?
rm $FCMD
;;
stop)
ssh -i /root/.ssh/la_belle_clef root@machine 'init 0 '
RETVAL=$?
# on laisse à la MV le temps de stopper
echo $0' sleeping 20 sec'
sleep 20
;;
reload|status)
echo 'Not implemented'
RETVAL=$?
;;
*)
echo $"Usage: $0 {start|stop|restart|reload|status}"
RETVAL=1
esac
exit $RETVAL
Et cela marche fort bien !