On a toujours besoin de tester ses configurations sur une machine qui n’est pas en prod, il y a encore peu, je testais tout sur du matériel de récupération que j’accumulais chez moi. Mais il arrive un moment dans la vie où il faut se débarasser de tout ce vieux matériel (une petite amie, un déménagement, ou je ne sais quoi
). Bref, des machines ça prend de la place, et j’essaie désormais d’en avoir le moins possible.
Pour notre plus grand bonheur, Intel et AMD ont implémenté dans les derniers processeurs des technologies de virtualisation ! On voit alors fleurir sur le net, de multiples applications opensource (ou pas) utilisant ces technologies, comme par exemple, KVM, Xen.
J’ai choisi d’utiliser KVM et non Xen, en effet, ce dernier n’est pas compatible avec les dernières versions du kernel linux, ce qui est un peu génant pour moi, en effet, ma carte mère n’est pas pleinement supportée avec un 2.6.18.
On commence d’abord par installer kvm et son module kernel, sous debian, pour les autres je vous laisse chercher :
1 2 3 4 | # apt-get install kvm # module-assistant # modprobe kvm # modprobe kvm-intel ( ou kvm-amd ) |
N’oubliez pas de vérifier que votre processeur est compatible avec la virtualisation, et que cette option est activée dans le BIOS
Il devient alors assez simple de créer une machine virtuelle. On créer tout d’abord le fichier qui va la contenir :
1 | $ kvm-img create file.qcow2 -f qcow2 5G |
Ceci créera une image de 5 gigas. Vous souhaitez alors installer une debian (par exemple) sur ce disque virtuel, il suffira de donner en paramètre l’image iso du CD de cette façon :
1 2 | $ kvm -m 512 -cdrom debian-40r3-i386-businesscard.iso \ -boot d -hda file.qcow2 |
Vous procédez alors à une installation classique d’une debian
Tout ça est bien joli, ou presque, mais vous ne pouvez pas accéder à votre machine virtuelle depuis le réseau, et inversement, ce qui n’est pas réellement pratique si vous souhaitez vous servir de votre machine virtuelle comme serveur.
En supposant qu’il y ait un serveur dhcp sur le réseau, nous allons configurer votre machine en tant que bridge, pour qu’elle puisse faire circuler le réseau vers les VMs.
1 | # apt-get install bridge-utils uml-utilities |
Il vous faut alors modifier votre configuration réseau dans /etc/network/interfaces:
1 2 | auto lo eth0 iface lo inet loopback |
commentez cette ligne:
1 2 3 4 5 6 7 8 9 10 11 12 | #iface eth0 inet dhcp auto br0 iface br0 inet dhcp bridge_ports eth0 bridge_stp off bridge_maxwait 5 </code ATTENTION: vos VMs vont communiquer sur le réseau physique avec une adresse MAC virtuelle ! Celà peut ne pas fonctionner si vos switchs restreignent les adresses MAC. On relance ensuite le réseau de cette façon : <code> /etc/init.d/networking restart |
Si plus rien ne marche, c’est que vous devez adapter le fichier interfaces en fonction de votre réseau
Nous allons ensuite configurer le script de démarrage de kvm, de façon à ce qu’il associe le tunnel que nous allons créer en le lançant, avec le bridge, pour celà il faut juste modifier le fichier /etc/kvm/kvm-ifup:
1 2 3 4 5 6 7 | #!/bin/sh switch=$(ip route ls | awk '/^default / { for(i=0;i<NF;i++) { if ($(i) == "dev") print $(i+1) }}') sudo /sbin/ifconfig $1 0.0.0.0 up sudo /usr/sbin/brctl addif ${switch} $1 exit 0 |
vous pouvez ensuite lancer votre VM de cette façon :
1 2 | kvm -m 512 -net nic,vlan=0 \ -net tap,vlan=0,ifname=`sudo tunctl -b -u $USER` file.qcow2 |
Lorsque vous l’aurez quitté, je vous conseille de supprimer les interfaces tap que tuncl a créé, à coup de :
1 | $ sudo tunectl -d tap0 |