Est-ce indispensable ?
Pour une distribution comme la Mandriva, la compilation du noyau (kernel) n’est absolument pas indispensable pour une utilisation ordinaire.
Sur la Debian Woody, la section Configurer les modules des pilotes peut rendre l’opération de compilation (ou plutôt recompilation puisque le programme d’installation en effectue une) moins indispensable.
Néanmoins, pour des soucis de performance, l’opération reste conseillé.
Utiliser un noyau précompilé ?
Pour des raisons de périphériques, j’ai dû utiliser des noyaux recompilés. Debian étant de mieux en mieux, surtout depuis Etch, l’utilisation de noyau précompilé est désormais la norme (les drivers nvidia ou ndiswrapper se construisent aisément avec module-assistant)
Initialisation de la compilation
Il est inutile de passer des paramètres matériels différents de ceux que vous possédez. Cela peut s’avérer fatal.
Pour pouvoir compiler le noyau, encore faut-il avoir installé les sources de ce dernier.
Tout se fait dans un terminal (ou en mode texte) en mode super-utilisateur (su + mot de passe root) :
Les sources
Installer le paquet kernel-package qui contient les outils (commandes) nécessaires pour compiler un noyau.
Installer la source du noyau, choisir le paquet correspondant au noyau que vous voulez compiler (ex. kernel-source-2.4.18), il peut être utile d’avoir également le paquet contennant la documentation correspondante (ex. kernel-doc-2.4.18).
Ce qui donne en terme de commande :
apt-get install kernel-source-2.4.18 kernel-doc-2.4.18 kernel-package
: pour les noyaux 2.6 : c’est linux-source et linux-header
Les paquets auraient pu être installé en mode graphique avec synaptic
Répertoire /usr/src/
Aller dans le répertoire /usr/src : cd /usr/src.
C’est dans ce répertoire que va se faire la suite : on y trouve l’archive des sources du noyau (ex. kernel-source-2.4.18.tar.bz2)
D’abord, décompresser l’archive :
tar xjf kernel-source-2.4.18.tar.bz2
Puis aller dans le répertoire des sources : cd /kernel-source-2.4.18
Modification du makefile
Avec un éditeur (pourquoi pas avec nano, comme cela on reste dans le terminal), modifier le Makefile à la quatrième ligne (extraversion) et uniquement celle-ci. Vous mettez ce que vous voulez (ici -mjk pour mon joli kernel
)
Comme vous êtes déjà dans le répertoire des sources, tapez simplement : nano Makefile
Le tiret permet d’avoir un nom de noyau plus "propre", plus "debian", plus "..." : 2.6.25-mjk, si vous ne le mettez pas vous aurez : 2.6.25mjk.
Compilation
Voici les commandes pour faire une compilation en mode texte (tout dans un terminal).
make menuconfig
Paramètres de compilation d’un noyau de la famille 2.4.x
Installation d’un noyau 2.6.x
Dans ces articles, les commandes pour paramétrer graphiquement un noyau y sont expliqués.
Lorsque c’est terminé, sauvegardez votre travail en appuyant sur Save and exit .
Mise en place du nouveau noyau
Création du noyau
Nettoyage et vérification des dépendances :
make-kpkg clean
Compilation du noyau à proprement parler :
Si vous avez modifié le Makefile :
make-kpkg kernel-image
Sinon :
make-kpkg --revision=custom.1.0 kernel-image
[1]
Si vous avez coché des options ’m’ dans les paramètres du noyau, vous devez construire les modules (quand vous cochez ’Y’, les modules sont compilés directement avec le noyau) :
make-kpkg modules-image
Installation du noyau
Si vous n’avez pas modifié le Makefile, il vous faudra faire une étape supplémentaire :
Avant d’installer, il faut archiver les anciens modules du noyau (sinon le processus s’arrêtera jusqu’à ce que vous le fassiez) :
mv /lib/modules/2.4.18 /lib/modules/2.4.18.save (ou 2.4.18.old ou ce que vous voulez).
Ensuite, installer le nouveau noyau :
dpkg -i ../kernel-image-2.4.18_custom.1.0_i386.deb
L’avantage d’une compilation Debian sur une compilation ordinaire, c’est que GRUB (ou LILO) sera mis automatiquement à jour avec votre nouveau noyau.
Création du initrd
Depuis quelques temps (kernel 2.6.22 ??? je ne sais plus 0 :-) ), il faut ajouter un initrd pour votre noyau : sinon vous aurez un KERNEL PANIC !!! et des sueurs froides au redémarrage.
C’est expliqué ici : Debian : Créer un initrd.img pour votre kernel
Fin de compilation
C’est le moment de vérité : quittez et relancez l’ordinateur. Si votre noyau ne fonctionne pas, pas de panique, vous avez toujours l’ancien noyau accessible par GRUB (ou LILO) (sauf si vous avez modifié votre fichier /boot/grub/menu.lst ou /etc/lilo.conf : ce que je vous déconseille de faire)...
Votre première compilation n’est pas parfaite ? ce n’est pas grave, vous pouvez la modifier en relançant le processus.
Avantage : les options déjà choisies seront remises par défaut (on ne recommence pas de zéro).
Pour ma part, j’ai fait quatre compilations avant d’avoir un système qui fonctionne correctement (notamment lors de mes recherches pour installer le graveur...).
Je sais pertinemment que je pourrais encore améliorer cela avec une meilleure connaissance des divers paramètres du noyau. Mais bon, tout fonctionne correctement...
Retirer un ancien noyau
Si vous voulez retirer l’image de l’ancien noyau, utilisez Synaptic et retirez le paquet comme vous pouvez le faire pour un autre programme. C’est plus fiable et cela mettra à jour GRUB automatiquement.
C’est aussi possible en ligne de commande : apt-get remove linux-image-2.6.XX
: vous devez avoir au moins un noyau actif pour utiliser votre ordinateur.
Astuce d’un internaute de 2004
"Salut la belle jaune, Bon site et bon article, et une petite astuce en plus :Si tu ouvre le makefile tu trouves a la quatrième ligne un intitulé que tu remplies avec "ser" par exemple ce qui te donneras un noyau du genre 2.4.20-ser apres la compile. C cool car les modules dans /lib/modules seront automatiquement dans un fichier 2.4.20-ser et donc aucun risque d’effacer les anciens (on ne sait jamais
De plus n’oublies pas ton fichier systemap dans le /boot ça accélère la bécane.
Juste pour le fun."
Befluid

