Chapitre 9. Compilation du noyau de Linux
La compilation du noyau est une spécificité des systèmes libres, qui n'est possible que parce que l'on dispose des sources du noyau. Cependant, même pour certains Unix commerciaux, il est possible d'effectuer une édition de lien, les modules du noyau étant fournis sous la forme de fichiers objets. La compilation ou l'édition de lien du noyau est une opération technique qui peut surprendre un habitué des systèmes fermés que sont par exemple Windows 95 ou OS/2. Cependant, elle permet d'obtenir un noyau très petit, optimisé pour la machine sur laquelle il tourne, et donc à la fois économe en mémoire et performant. Il est donc recommandé d'effectuer cette compilation : pourquoi conserver un monstre capable de gérer des périphériques qui ne sont pas et ne seront jamais installé sur votre système ?
La compilation du noyau de Linux nécessite de disposer des dernières sources du noyau (version 2.4.4. au 28/04/2001) et d'un compilateur. Il est évident que le compilateur idéal est le compilateur GNU C/C++ GCC. On utilisera une version 2.7.2. ou supérieure de GCC. On prendra garde au fait que les versions de GCC supérieures à 2.95. ne peuvent pas être utilisées pour compiler les noyaux de version 2.2.10. ou moins. En effet, les compilateurs récents utilisent des optimisations qui sont incompatibles avec certaines constructions utilisées par ces noyaux (en réalité, ces constructions sont fausses, mais ne posent de problèmes qu'avec les compilateurs récents). Je supposerai dans la suite de ce document que vous disposez de la dernière version du noyau, à savoir la version 2.4.4.
La compilation du noyau n'est pas très difficile, cependant, elle nécessite de répondre correctement aux questions de configuration. Les erreurs peuvent être multiples, et seront fatales. Il est donc fortement conseillé de disposer d'une disquette de démarrage afin de réparer le système en cas d'erreur. Par ailleurs, il faut toujours conserver le dernier noyau utilisable en sauvegarde dans le répertoire /boot/. Il faut également ajouter une entrée spécifiant ce noyau dans le programme de démarrage (lilo), afin de pouvoir sélectionner l'ancien noyau en cas d'erreur. Ces opérations seront également décrites en détail plus loin.
La compilation du noyau se passe en quatre étapes :
installation des fichiers sources ;
réponse aux questions de configuration ;
compilation proprement dite ;
installation du nouveau noyau.
Installation des sources de Linux
Les sources du noyau peuvent être trouvées sur le site kernel.org. Il est possible de récupérer les sources complètes, sous la forme d'une archive comprimée d'environ 17 Mo. Toutefois, si l'on dispose déjà d'une version complète des fichiers sources, il est envisageable de ne télécharger que les patches.
Il est recommandé d'installer les sources du noyau dans un répertoire /usr/src/linux<version>/ et d'éditer un lien symbolique vers ce répertoire sous le nom /usr/src/linux/. Cela permet de conserver plusieurs jeux de sources de versions différentes, et de travailler sur la version courante sous /usr/src/linux/. Les commandes suivantes permettront d'extraire les sources dans le répertoire dédié au sources de Linux. Elles supposent qu'il existe déjà un lien symbolique /usr/src/linux/ vers le répertoire des fichiers sources actuels de Linux :
Si l'on dispose déjà d'une version complète des fichiers sources, et que l'on désire appliquer un patch, il faut décomprimer le fichier de patch avec la commande suivante :
gunzip fichier.gzoù fichier.gz représente le fichier de patch comprimé (en supposant qu'il ait été comprimé à l'aide de gzip). L'application du patch se fait de la manière suivante :patch -p0 < fichierCette commande doit être lancée à partir du répertoire /usr/src/. Elle suppose que les fichiers sources de Linux pourront être trouvées dans le répertoire ./linux/. Dans cette ligne de commande, fichier représente le nom du fichier de patch précédemment décomprimé, et l'option -p0 indique au programme patch d'utiliser les noms de répertoires relatifs au répertoire courant (à savoir ./linux/). Si les sources sont installées dans un autre répertoire, il faudra modifier l'option -px passée en paramètre au programme patch. Consultez la page de manuel patch pour plus de détails sur cette option.
Il est recommandé de télécharger au moins une fois les sources complètes du noyau, et de ne pas utiliser les sources fournies avec la distribution que vous utilisez. En effet, certaines distributions modifient les sources et on ne peut donc pas leur appliquer les patches standards.