Compiler son noyau Linux

En fin d'année de ma Licence ASRALL, j'ai besoin d'un kernel avec un module qui vient de faire son apparition depuis peu, il se nomme OrangeFS. Ce dernier doit être utilisé par un post client pour qu'il puisse se connecter à un cluster de stockage de donnée grâce un nouveau système de fichier PVFS2.

Ci-dessous, je vous montre comment y parvenir à nos fin sachant que les étapes sont identique si l'on souhaite utiliser un autre module.

Prévoyez au moins ~+10Go d'espace disque et au moins une machine avec 4 coeurs. En moyenne 4 coeurs c'est ~+2h de compilation, 8 coeurs pour ~- 1h.

De la bonne lecture : Kernel Handbook

Pré-requis

Voici les paquets que nous auront besoin :

apt-get install git fakeroot build-essential ncurses-dev xz-utils libssl-dev bc liblz4-tool kernel-package libncurses5-dev dialog

On télécharge le code source d'un kernel stable :

git clone http://git.kernel.org:/pub/scm/linux/kernel/git/stable/linux-stable.git
cd linux-stable/

On copie le fichier de configuration du noyau de notre propre système. Pour m'a part j'utilise celle de base que propose Debian 8.7 :

cp /boot/config-3.16.0-4-amd64 .config

Configuration

On compile un menu de configuration qui nous permettre d’afficher des options à sélectionner :

make menuconfig

Voici à quoi ressemble l'interface et rendons-nous dans “File Systems” puis “Miscellaneous filesystems” :

Sélectionnez le module. la désignation <M> doit apparaître comme ci-dessus. Sauvegardez enfin vos modifications avec le bouton < Save > dans le menu du bas.

Il nous reste plus qu'a compiler :

make -j$(nproc) bindeb-pkg

Après un bon moment d'attente, vous devez avoir quelque chose du genre dans le dossier supérieur :

ls -lah ../
total 369M
drwxrwxrwx 1 root root 4,0K févr. 16 14:34 .
drwxrwxrwx 1 root root 4,0K mars   1 15:53 ..
-rwxrwxrwx 1 root root 877K févr. 16 14:32 linux-firmware-image-4.9.9_4.9.9-2_amd64.deb
-rwxrwxrwx 1 root root  11M févr. 16 14:32 linux-headers-4.9.9_4.9.9-2_amd64.deb
-rwxrwxrwx 1 root root  30M févr. 16 14:32 linux-image-4.9.9_4.9.9-2_amd64.deb
-rwxrwxrwx 1 root root 327M févr. 16 14:33 linux-image-4.9.9-dbg_4.9.9-2_amd64.deb
-rwxrwxrwx 1 root root 853K févr. 16 14:33 linux-libc-dev_4.9.9-2_amd64.deb

installons la nouvelle image du noyau :

dpkg -i ../linux-image-4.9.9_4.9.9-2_amd64.deb

Il reste plus qu’a redémarrer la machine!

S'il y a besoin de retrouver un peu de place sur le système :

make-kpkg clean

Activer le module

Il nous reste encore quelque commandes pour activer le module Orangefs. Par défaut, au démarrage de la machie, le module ne sera pas chargé car le système pense qu'il n'en a pas besoin c'est pourquoi il vous faudra modifier le fichier fstab comme ceci par exemple :

echo "tcp://orangefs2:3334/orangefs /mnt pvfs2 defaults,noauto 0 0" >> /etc/fstab

Sinon, on peut l'activer manuellement comme ceci :

modprobe -a orangefs

Pour terminer ce tutoriel, je vous laisse un lien permettant d'en savoir plus sur l'installation de OrangeFS

Désactiver un module

On souhaite par exemple bloquer le module permettant les intéractons système avec la carte graphique nvidia, il suffit alors de modifier le fichier suivant :

nano /etc/modprobe.d/blacklist.conf 
modules
blacklist nouveau

Puis d'appliquer la modification ainsi :

update-initramfs -u