Activation de la virtualisation via recompilation du noyau Linux sous DEBIAN au sein de l'infrastructure d'hébergement OVH

Objectif

Nativement, le noyau utilisé par l'hébergeur OVH impose une restriction des modules qui empêchent l'utilisation de systèmes virtualisés tels VirtualBox. Dans le cadre de tests de sécurité, d'installation d'outils, de PoC, etc.. l'installation d'environnement de test et d'essais virtualisés sont souvent nécessaires!

Par la procédure proposée ci-contre, nous allons recompiler le noyau Linux DEBIAN afin d'activer les modules requis pour activer les systèmes de Virtualisation tels VirtualBox. Ce système permet de constituer des serveurs de test virtuels donc facilement évolutifs hébergés au sein d'OVH, terminé les limitations natives du noyau!

 

Etapes

Obtention des outils et fichiers requis

Compilation du nouveau noyau

Modification de l'ordonnancement du Grub

Vérification

 

Obtention des outils et fichiers

Installations des outils make et build-essential

 

Vérifions donc bien la présence de l'outil make et build-essential

# apt-get install build-essential make libncurses5-dev lzma initramfs-tools

 

Vérification de la version du noyau en cours:

# uname -r

On note ce résultat pour valider la bonne prise en compte en fin de procédure

 

Téléchargement des sources et du fichier de configuration à partir du site: http://www.kernel.org/pub/linux/kernel/

Nous ce tuto nous utiliserons la version 3.2.13, à jour début 2013.

# cd /usr/src/

# wget http://www.kernel.org/pub/linux/kernel/v3.x/linux-3.2.13.tar.gz

# tar xfvz linux-3.2.13.tar.gz

 

Récupération du fichier config correspondant au noyau choisi, la liste des configs est présente sur le site : ftp://ftp.ovh.net/made-in-ovh/bzImage/

# wget ftp://ftp.ovh.net/made-in-ovh/bzImage/3.2.2/3.2-config-xxxx-std-ipv6-64

# mv 3.2-config-xxxx-std-ipv6-64 linux-3.2.13/.config

 

Ajout de modules en e déplaçant dans le fichier des sources de Linux et faire "make menuconfig"

# cd linux-3.2.13

# make menuconfig

 

Ajouter les modules requis, en l'occurence se déplacer sur « Enable loadable module support » et activer l'option en cliquant sur la barre espace.

b2ap3_thumbnail_gg.png

Pour quitter la configuration, il suffit de faire Exit puis de choisir Yes lorsqu'il est demandé de confirmer la sauvegarde de la nouvelle configuration.

 

Compilation du nouveau noyau

# make

# make install

# make modules_install

# ls /lib/modules/3.2.13-xxxx-std-ipv6-64/

Vous devriez obtenir la liste des fichiers suivants:

build modules.alias modules.builtin modules.dep modules.devname modules.softdep modules.symbols.bin

kernel modules.alias.bin modules.builtin.bin modules.dep.bin modules.order modules.symbols source

 

On va maintenant créer le nouvel initrd

# mkinitramfs -k -o /boot/initrd.img-3.2.13-xxxx-std-ipv6-64 3.2.13-xxxx-std-ipv6-64

L'argument « 3.2.13-xxxx-std-ipv6-64" correspond à l'information sur le numéro de version dans le repertoire /lib/modules/<valeur>/

 

# ls /boot/ | grep 3.2.13

Vous devriez obtenir la liste suivante des fichiers:

config-3.2.13-xxxx-std-ipv6-64

initrd.img-3.2.13-xxxx-std-ipv6-64

System.map-3.2.13-xxxx-std-ipv6-64

vmlinuz-3.2.13-xxxx-std-ipv6-64

 

Modification de l'ordonnancement du Grub

Grub est configuré pour mettre en priorité les noyaux spécifiques à OVH, que l'on peut visualiser ci-contre

# ls /etc/grub.d

On l'on obtient:

00_header 05_debian_theme 06_OVHkernel 10_linux 20_linux_xen 30_os-prober 40_custom 41_custom README

 

Pour changer l'ordre des noyaux et mettre vos propres noyaux en première position, il suffit de renommer le fichier « 06_OVHkernel »

# mv /etc/grub.d/06_OVHkernel /etc/grub.d/11_OVHkernel

 

Mise à jour du Grub

# update-grub2

La génération du grub doit vous fournir les informations suivantes:

Generating grub.cfg ...

Found linux image: /boot/vmlinuz-3.2.13-xxxx-std-ipv6-64

Found initrd image: /boot/initrd.img-3.2.13-xxxx-std-ipv6-64

Warning: update-grub_lib is deprecated, use grub-mkconfig_lib instead

Found linux image: /boot/bzImage-3.2.13-xxxx-grs-ipv6-64

done…

 

Vérification du bon fonctionnement

Redémarrage du serveur

# reboot

 

Vérification do noyau: (on peut visualiser le changement par rapport à la version constatée avant changement du Grub)

# uname -r

Qui nous indique la version du noyau en cours:

3.2.13-xxxx-std-ipv6-64

 

# dmesg | grep 3.2.13

Et de manière plus explicite:

Linux version 3.2.13-xxxx-std-ipv6-64 (root@***.com) (gcc version 4.4.5 (Debian 4.4.5-8) ) #1 SMP

Command line: BOOT_IMAGE=/boot/vmlinuz-3.2.13-xxxx-std-ipv6-64 root=/dev/sda1 ro quiet

Kernel command line: BOOT_IMAGE=/boot/vmlinuz-3.2.13-xxxx-std-ipv6-64 root=/dev/sda1 ro quiet