KVM : la première machine

Tout étant prêt nous allons pouvoir lancer notre première machine. Comme je l'ai expliqué au début de cet article j'ai récupéré une image de disque VMWARE que j'ai convertie en image adaptée à KVM (format QCOW2) par la commande miracle : 
qemu-img convert shinken-vm-0.4.vmdk -O qcow2 shinken-vm-0.4.kvm 
Il s'agit donc d'une "machine pré-fabriquée" où tout est déjà installé, un prochain article détaillera la construction d'une nouvelle machine. 
Une fois le disque disponible on va s'occuper des paramètres nécessaires à KVM :

  • Un disque on peut installer de "-hda" à "-hdd" et "-cdrom"
  • De la RAM (-m ...M)
  • Un nom ( -name ....)
  • Un clavier français !
  • Le lancement en "démon" ou pas (-daemonize)
  • Une carte réseau avec son adresse MAC, couplée à notre tap0
  • Le fonctionnement du disque en normal ou "snapshot" qui empêche toute modification du disque utilisé (ça peut servir !).

Lancez l'interface "TAP0" avant de lancer la MV. Le script suivant pourra vous permettre de démarrer comme moi une machine minimum avec un seul disque, mais un clavier français et le réseau :

#!/bin/bash 
HDA=/RAIDHOME/soft/tmp/shinken-vm-0.4/shinken-vm-0.4.kvm 
NOM=kvmtest 
RAM=256M 
# clavier FR 
OPTION=' -k fr '  
# demoniser 
DEMON=' ' 
DEMON=' -daemonize ' 
# pas de snapshot 
SNAPSHOT=' -snapshot ' 
SNAPSHOT=' ' 
RESEAU=' -net nic,macaddr=00:1d:92:ab:3f:78 -m 256 -net tap ' 
RESEAU=${RESEAU}' ifname=tap0,script=no,downscript=no ' 
kvm ${DEMON} ${SNAPSHOT} -hda ${HDA} -boot c -name ${NOM} -m ${RAM} ${OPTION} ${RESEAU}

Et cela doit démarrer sans aucun problème, Ah, j'ai failli oublier, pour "sortir" de l'écran de votre machine KVM : Ctrl+Alt (à garder appuyé), puis aller cliquer sur la barre d'une autre fenêtre. Soyez patients, quelque fois cela "foire" un peu et il faut "titiller" légèrement la souris ! 
Il vous faudra reconfigurer la carte réseau de votre nouveau système afin que la carte fournie (Adresse MAC) soit reconnue au boot. Un petit tour dans "/etc/udev/rules.d" est très instructif. Supprimer les "cochonneries" dans le fichier "70-persistent-net.rules" (sur une distribution Debian, mais les autres n'ont pas l'air très différentes de ce coté) et modifier la ligne "eth0" en y indiquant votre "adresse MAC".


# This file was automatically generated by the /lib/udev/write_net_rules 
# program, run by the persistent-net-generator.rules rules file. 
# 
# You can modify it, as long as you keep each rule on a single 
# line, and change only the value of the NAME= key. 
# PCI device 0x10ec:0x8139 (8139cp) 
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:1d:92:ab:3f:88", 
ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

Attention tout est sur une seule ligne ! 

Un autre petit tour dans /etc/network/interfaces pour vérifier que eth0 est bien en DHCP, si vous n'avez pas de serveur DHCP utilisez une adresse fixe à déclarer dans votre service DHCP : 
# The primary network interface 
allow-hotplug eth0 
iface eth0 inet dhcp 

Et pour moi c'est OK, si vous n'avez pas de DHCP : 
allow-hotplug eth0 
iface eth0 inet static 
    address   192.168.1.AAA 
    netmask   255.255.255.0 
    network   192.168.1.0 
    gateway   192.168.1.XXX 
    broadcast 192.168.1.255 

Un petit coup de "ifdown eth0" suivi d'un "ifup eth0" devrait activer votre réseau et vous montrer que la liaison est OK :

sudo netstat -rn 
Table de routage IP du noyau 
Destination Passerelle    Genmask         Indic   MSS Fenêtre irtt Iface 
192.168.1.0 0.0.0.0       255.255.255.0   U         0 0          0 eth0 
0.0.0.0     192.168.1.XXX 0.0.0.0         UG        0 0          0 eth0 

ping -c1 www.google.fr 
PING www.l.google.com (74.125.230.80) 56(84) bytes of data. 
64 bytes from 74.125.230.80: icmp_req=1 ttl=54 time=135 ms 
--- www.l.google.com ping statistics --- 
1 packets transmitted, 1 received, 0% packet loss, time 0ms 
rtt min/avg/max/mdev = 135.909/135.909/135.909/0.000 ms

Ca marche vraiment ! 

KVM mais c'est très simple !