connectiva penguin bsd logo

Configurer / compiler le noyau

REMARQUE : cette méthode ne s'applique qu'aux noyaux 2.6. Pour les noyaux plus anciens, je vous renvoie vers votre moteur de recherche préféré ;o).


La configuration / compilation du noyau est souvant quelquechose qui inquiète les débutants. C'est effectivement assez long si on décide de regarder en détail tous les modules, et la compilation elle-même peut durer longtemps (compter environs 45 minutes pour compiler un noyau 2.6.15.4 (38 Mo compressé) sur un portable Pentium 4 3,2 GHz avec 512 Mo de RAM). Mais là, c'est l'ordinateur qui fait tout le boulot. En réalité, ça n'est pas très compliqué et surtout, c'est sans aucun risque, puisque l'ancien noyau n'a pas besoin d'être supprimé. Il suffit donc de redémarrer sur ce dernier pour que tout refonctionne ! On peut donc se lancer sans apréhension, mais avec un peu de temps devant soit, dans la compilation de son noyau.

La compilation du noyau peut se résumer en 4 étapes :

1. récupération des sources

2. configuration du noyau

3. compilation

4. mise à jour du programme d'amoiçage (LILO ou GRUB)



1/ récupération des sources

Si vous voulez juste modifier la configuration de votre noyau actuel, passez à l'étape 2.

Si vous voulez compiler un nouveau noyau, il faut télécharger les sources sur l'un de ces sites : www.kernel.org, ftp.kernel.org, www.fr.kernel.org, ftp.fr.kernel.org, (il en existe bien sûr d'autres, mais ce sont les principaux). Par exemple, le noyau 2.6.15.4 se trouve dans le répertoire v2.6 et se nome linux-2.6.15.4.tar.bz2.

Il faut ensuite copier le source dans /usr/src.

# mv linux-2.6.15.4.tar.bz2 /usr/src

Puis le décompresser et désarchiver :

# tar jxvf linux-2.6.15.4.bz2

On obtient alors un nouveau répertoire dont le nom correspond à la version de notre nouveau noyau (donc /usr/src/linux-2.6.15.4 pour notre exemple).

2/ configuration du noyau

Avant d'aller plus loin, il faut installer les sources du noyau qui s'appellent kernel-headers, linux-kernel-headers ou kernel-source, selon les distributions.

On se déplace maintenant dans notre nouveau répertoire :

# cd linux-2.6.15.4

A cette étape, on va choisir ce qu'on va charger dans son futur noyau. C'est là qu'on va pouvoir ajouter/supprimer des pilotes ou des fonctionnalités à son linux. Par exemple, c'est ici qu'on va charger les pilotes de sa carte réseau ou de sa carte son, ou alors qu'on va decider si notre linux pourra lire et écrire sur des partitions FAT. Plus on va ajouter de choses, plus notre système sera riche, mais plus il sera lourd et long à démarrer.

Une fonction intéressante des noyaux linux depuis la version 2 je crois, est qu'on peut charger un pilote sous forme de module. C'est à dire, qu'il ne sera pas intégré au noyau, mais il pourra être chargé ou déchargé quand le besoin s'en fait sentir. Ca permet d'avoir un noyau plus léger, tout en évitant d'avoir à recompiler à chaque fois qu'on change une carte dans son pc. Mais tout ne peut pas se mettre en module. D'une manière générale, le mieux est de mettre les choses essentielles directement dans le noyau (support ide et scsi par exemple), ce qui peu ou risque de servir en module (support des modems, des cartes reseau, etc), et de ne pas mettre tout ce qui a très peu de chance de vous servir.

Il existe plusieurs possibilités pour éditer le fichier de configuration :

make config screenshot make menuconfig screenshot
make config - franchement laborieux ! make menuconfig - nettement mieux
make xconfig screenshot make gconfig screenshot
make xconfig - c'est-y pas magnifique ça ? make gconfig - trop top !

S'il existe un ancien fichier de configuration, on peut aussi taper make oldconfig.

Si vous compilez votre noyau pour la première fois, le mieux est de récupérer le fichier de config actuel, et simplement modifier les points qui vous intéressent. Car si on part d'un fichier vierge, on risque de ne jamais pouvoir booter sur notre nouveau noyau, à moins de vraiment s'y connaitre. Pour récupérer l'ancien fichier de config, ça peut varier d'une distribution à l'autre. Normalement, il faut aller dans le répertoire /boot et repérer le ou les fichiers qui commencent par config-2.6. Dans mon cas, ce fichier se nome config-2.6.12.10-686. On va alors remplacer notre fichier de config actuel par celui-ci avec les commandes suivantes :

# ls -a /boot                         <== pour voir les fichiers dans /boot tout en restant dans notre répertoire de travail
# cp /boot/config-2.6.12.10-686 ./             <== copie le fichier dans le répertoire de travail
# rm .config                         <== supprime l'ancien fichier de config
# mv config-2.6.12.10-686 .config             <== renome le fichier pour qu'il soit pris en compte

Maintenant, il ne reste plus qu'à éditer ce nouveau fichier avec make xconfig ou la commande de votre choix, et d'apporter les modifications voulues. Une fois terminé, on va pouvoir passer à la compilation.

3/ compilation

Cette partie dure longtemps, mais c'est l'ordinateur qui fait tout. On a fait le plus dur. Pour vous donner un ordre d'idée, il m'a fallu un peu moins de 45 minutes pour compiler un noyau 2.6.15.4 (38 Mo compressé) sur un portable Pentium 4 3,2 GHz avec 512 Mo de RAM.

On a cinq commandes à taper dans l'ordre :

La dernière commande ne fait pas partie de la compilation elle-même, mais elle est nécessaire pour pouvoir redémarrer le système. Ici, on va créer un fichier /boot/initrd.img-2.6.15.4 qui est une sorte de RAM initiale qui va se charger en RAM au démarrage de linux. Certaines distributions n'utilisent pas ce fichier. Pour savoir si vous avez besoin ou pas de faire cette étape, il suffit de regarder dans le fichier de config de votre gestionnaire de démarrage ; vous observez les lignes correspondant à votre ancien noyau, et si vous avez une ligne qui contient initrd, alors c'est nécessaire. Sinon, passez à l'étape suivante.

4/ mise à jour du programme d'amorçage (LILO ou GRUB)

Pour LILO, il suffit d'éditer le fichier /etc/lilo.conf, de rajouter la partie correspondant au nouveau noyau, et de valider le tout en exécutant /sbin/lilo. Je ne rentrerais pas dans les détails, car c'est assez intuitif, et il existe de nombreuses aides pour configurer lilo. Par exemple ici.

Pour GRUB, il suffit de rajouter la section sur le nouveau noyau dans /boot/grub/menu.lst. Plus d'infos .

Et voilà, c'est terminé. Vous n'avez plus à rebooter le pc pour tester votre nouveau noyau. Et si ça ne fonctionne pas, pas d'inquiétude, il suffit de rebooter sur l'ancien noyau et votre système repart !

Plus d'infos

Cet article tente de résumer clairement et rapidement les étapes de la compilation du noyau. Je ne suis volontairement pas rentré dans les détails. Si vous avez besoin de plus d'informations, je vous conseille les sites suivants :

Valid XHTML 1.1

logo firefox logo ubuntu logo debian logo mandriva logo gimp