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