KVM : pré-requis, installation

Pour les tests de shinken 0.4 j'ai récupéré une image qu format VMWARE et, au lieu de la transformer en image XEN j'ai voulu tester au passage la virtualisation avec KVM. 

Première opération : compiler KVM dans le noyau Linux (ici le kernel 2.6.37.rc8), et ça marche encore pour les noyaux 3.X et 4.X. 
Lancer le "make menuconfig" : 
┌────────────────────────────────────────────────────────────────────────┐ │   
│ │              General setup  --->                                     │ │   
│ │          [*] Enable loadable module support  --->                    │ │   
│ │          -*- Enable the block layer  --->                            │ │   
│ │              Processor type and features  --->                       │ │   
│ │              Power management and ACPI options  --->                 │ │   
│ │              Bus options (PCI etc.)  --->                            │ │   
│ │              Executable file formats / Emulations  --->              │ │   
│ │          [*] Networking support  --->                                │ │   
│ │              Device Drivers  --->                                    │ │   
│ │              Firmware Drivers  --->                                  │ │   
│ │              File systems  --->                                      │ │   
│ │              Kernel hacking  --->                                    │ │   
│ │              Security options  --->                                  │ │   
│ │          -*- Cryptographic API  --->                                 │ │   
│ │          [*] Virtualization  --->                                    │ │   
│ │              Library routines  --->                                  │ │   
│ └──────────v(+)────────────────────────────────────────────────────────┘ │    

Cocher la case "Virtualization" et aller dans le détail et sélectionner le type de processeur (ici c'est AMD) : ┌────────────────────────────────────────────────────────────────────────┐ │   
│ │          --- Virtualization                                          │ │   
│ │          <M>   Kernel-based Virtual Machine (KVM) support            │ │   
│ │          <M>     KVM for Intel processors support                    │ │    
│ │          < >     KVM for AMD processors support                      │ │    
│ │          <M>   Host kernel accelerator for virtio net (EXPERIMENTAL) │ │    
│ │          <M>   PCI driver for virtio devices (EXPERIMENTAL)          │ │    
│ │          <M>   Virtio balloon driver (EXPERIMENTAL)                  │ │    
│ │                                                                      | |    
| ├──────────────────────────────────────────────────────────────────────┤ | 

Cocher les cases correspondant à votre type de processeur (AMD/INTEL), et les trois dernières aussi. Puis compilation, installation, reboot et c'est OK ! 
Il faut ensuite installer :

  • qemu-kvm
  • uml_utilities
  • bridge-utils

Pour pouvoir lancer des machines virtuelles et leur fournir un accès au réseau. 
apt-get pour moi, yum pour d'autres ... 

Deuxième opération : création d'un "bridge". 
Le bridge peut être installé en permanence, le réseau fonctionne très bien pour la machine principale si un bridge est déclaré. Sur un système Debian il faut modifier le fichier "/etc/network/interfaces" comme suit : 
Avant : 
auto eth0 
iface eth0 inet static 
    address    192.168.1.XXX 
    netmask    255.255.255.0 
    network    192.168.1.0 
    gateway    192.168.1.xxx 
    broadcast  192.168.1.255 
Après : 
auto br0 
iface br0 inet static 
      address   192.168.1.XXX 
      netmask   255.255.255.0 
      network   192.168.1.0 
      broadcast 192.168.1.255 
      gateway   192.168.1.xxx 
      bridge_ports eth0 
      bridge_maxwait    1 

Ensuite rebooter la machine pour vérifier si tout est OK, et tester : 
sudo ifconfig br0 
br0       Link encap:Ethernet  HWaddr 00:1b:2f:bf:11:c7  
          inet addr:192.168.1.XXX  Bcast:192.168.1.255  Mask:255.255.255.0 
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1 
          RX packets:53550 errors:0 dropped:0 overruns:0 frame:0 
          TX packets:85015 errors:0 dropped:0 overruns:0 carrier:0 
          collisions:0 txqueuelen:0 
          RX bytes:54066193 (51.5 MiB)  TX bytes:17172164 (16.3 MiB) 

Tout est alors prêt sur le système hôte pour lancer notre première machine virtuelle KVM ... dès que la partie réseau sera au point coté KVM.