===== Compiler son noyau Linux =====
En fin d'année de ma Licence [[http://asrall.fr|ASRALL]], j'ai besoin d'un kernel avec un module qui vient de faire son apparition depuis peu, il se nomme [[https://en.wikipedia.org/wiki/OrangeFS|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 [[https://en.wikipedia.org/wiki/Parallel_Virtual_File_System|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 : [[https://kernel-handbook.alioth.debian.org|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**" :
{{ :wiki:creer-concevoir-kernel-noyau-linux-menu.png?nolink&900 | }}
Sélectionnez le module. la désignation **** 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 [[wiki:apprendre-utiliser-orangefs|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
blacklist nouveau
Puis d'appliquer la modification ainsi :
update-initramfs -u