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.
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