4. Mise en œuvre de KVM

4.1. Identification des extensions matérielles du processeur

Comme on l'a vu dans la Section 3, « Choix d'une solution de virtualisation », cette solution de virtualisation ne peut être utilisée qu'avec un processeur possédant les extensions matérielles nécessaires.

Voici un exemple d'identification sur un processeur Intel du type : Intel(R) Core(TM)2 Duo CPU E6750 @ 2.66GHz.

$ egrep '(vmx|svm)' /proc/cpuinfo
flags   : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov
pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm
constant_tsc arch_perfmon pebs bts rep_good pni monitor ds_cpl
vmx smx est tm2 ssse3 cx16 xtpr lahf_lm

4.2. Sélection des options du noyau Linux

Pour exploiter les extensions matérielles du processeur, il faut sélectionner les modules du noyau Linux à utiliser.

Pour construire un paquet Debian de noyau Linux avec les options ci-dessus, on passe par les étapes rituelles suivantes.

$ cd /usr/src 1
$ wget http://www.eu.kernel.org/pub/linux/kernel/v2.6/linux-2.6.25.3.tar.bz2
$ tar xf linux-2.6.25.3.tar.bz2
$ ln -s linux-2.6.25.3 linux
$ cd linux
$ cp /boot/config-2.6.25.2 .config 2
$ make menuconfig 3
$ make-kpkg --rootcmd fakeroot --initrd kernel_image 4

1

Si l'utilisateur normal fait partie du groupe système src, il a les droits suffisants pour construire un paquet de noyau Linux. C'est la raison pour laquelle l'invite utilisateur (prompt) est le caractère '$' pour toutes les opérations suivantes.

2

Avant d'accéder aux menus de configuration des fonctions du noyau Linux, il est préférable de travailler à partir d'une configuration existante et fonctionnelle. On recopie donc la configuration de la version précédente du noyau. Normalement, c'est celle du noyau en cours d'exécution.

3

Accès aux menus de configuration. Voir la copie d'écran ci-dessus.

4

Les outils fakeroot et make-kpkg servent respectivement à utiliser une «fausse» arborescence racine à partir des droits d'un utilisateur normal et à construire le paquet de noyau après avoir compilé la partie monolithique et les modules.

L'installation du nouveau noyau doit se faire avec les droits super utilisateur.

# dpkg -i linux-image-2.6.25.3_2.6.25.3-10.00.Custom_amd64.deb
Sélection du paquet linux-image-2.6.25.3 précédemment désélectionné.
(Lecture de la base de données... 249991 fichiers et répertoires déjà installés.)
Dépaquetage de linux-image-2.6.25.3 \
(à partir de linux-image-2.6.25.3_2.6.25.3-10.00.Custom_amd64.deb) ...
Done.
Paramétrage de linux-image-2.6.25.3 (2.6.25.3-10.00.Custom) ...
Running depmod.
Finding valid ramdisk creators.
Using mkinitramfs-kpkg to build the ramdisk.
Running postinst hook script update-grub.
Searching for GRUB installation directory ... found: /boot/grub
Searching for default file ... found: /boot/grub/default
Testing for an existing GRUB menu.lst file ... found: /boot/grub/menu.lst
Searching for splash image ... none found, skipping ...
Found kernel: //vmlinuz-2.6.25.3
Found kernel: //vmlinuz-2.6.25.2
Updating /boot/grub/menu.lst ... done

Une fois le nouveau noyau installé et le système réinitialisé, on peut valider le chargement des modules si les scripts d'initialisation assurent cette fonction. Par exemple, la distribution Debian GNU/Linux fournit un paquet kvm qui contient un script assurant le chargement du module approprié au démarrage du système hôte.

$ lsmod |grep kvm
kvm_intel              38016  3
kvm                   214257  1 kvm_intel

On constate que les modules sont effectivement chargés en mémoire à l'aide d'un script que l'on peut identifier.

$ dpkg -L qemu-kvm | grep init.d/
/etc/init.d/qemu-kvm

Si toutefois, le chargement ne se fait pas automatiquement, on peut procéder au chargement manuel des modules de virtualisation KVM et valider l'accès aux fonctions matérielles du processeur.

# uname -ar
Linux typhoon 2.6.25.3 #1 SMP PREEMPT Sat May 10 18:23:31 CEST 2008 x86_64 GNU/Linux
# modprobe -v kvm-intel
insmod /lib/modules/2.6.25.3/kernel/arch/x86/kvm/kvm.ko
insmod /lib/modules/2.6.25.3/kernel/arch/x86/kvm/kvm-intel.ko

Maintenant que les fonctions de virtualisation KVM sont en place, on peut passer à la création d'une instance de système d'exploitation. Voir la Section 6, « Création d'une machine virtuelle avec KVM ».