La compilation du noyau Linux

Par Pierre CASTELLA le 8 Mai 2002

Qu'est ce que le noyau ?

Le noyau Linux est à l'origine l'oeuvre de Linus Tolvard, qui a commencé son développement en 1991 pour utiliser au mieux les possibilités des nouveaux processeurs INTEL 386.

Les fonctionnalités et le nombre de développeurs de celui à considérablement augmenté au fils du temps.

Son rôle

Un noyau est une couche logicielle fournissant une interface harmonisée pour accéder au hardware, c'est à dire par exemple, que quelque soit la carte réseau installée dans votre machine, les programmes qui devront se servir du réseau feront toujours appel aux mêmes routines, c'est le noyau qui se chargera d'acheminer ces appels vers le matériel en respectant les spécificités de chacune des cartes.

Les modules

Certaines fonctionnalités du noyau ne sont pas utilisées de manières permanentes, il est dans ce cas intéressant de pouvoir enlever les ``portions de code'' qui gèrent ces fonctionnalités du noyau lui même et de les ``charger'' seulement qu'en cas de besoin, cela permet d'économiser de la place mémoire en réduisant l'espace utilisé par le noyau.

C'est le rôle des modules, chacun d'eux à en charge une fonctionnalité, qui peut être mise ou enlevée de celui ci très facilement.

Pourquoi recompiler son noyau ?

La plupart des distributions s'installent en utilisant des noyaux gérant une grande quantité de hardware, pour cela elle utilisent de gros noyaux contenant beaucoup d'options et de modules, il est alors intéressant d'enlever certains drivers ou fonctionnalités jamais utilisés, voir les mettre en modules (exemple l'utilisation du RAID, les drivers pour du matériel anciens et/ou exotique), ou au contraire en rajouter d'autres non inclus par défaut dans la distribution utilisée, et obtenir ainsi le noyau qui convient le mieux à l'utilisation que l'on veut en faire.

La compilation

La compilation du noyau GNU/Linux n'est pas quelque chose de très difficile à réaliser, mais il convient une fois de plus de respecter certaines règles de bases.

Les sources

Récupération et installation

Un bon endroit pour récupérer les sources d'un noyau GNU/Linux est le serveur ftp prévu à cet effet : ftp.kernel.org, beaucoup d'autres sites miroirs existent et peuvent donc être utilisés, mais assurez vous quand même que l'on peut faire confiance au serveur sur lequel vous comptez récupérer l'archive des sources que vous allez utilisez, les signatures md5 ou PGP sont toujours fournies, vous pouvez les vérifiées et les comparées avec celles de sites plus officiels.

Les sources des différents logiciels que vous compilez (y compris le noyau) s'installent sous /usr/src/, mais ce n'est pas une obligation, vous pouvez choisir un autre emplacement, s'est possible mais vraiment pas recommandé.

Habituellement les sources que vous récupérez sont au format tgz (tar.gz) ou tar.bz2, placer dans le répertoire ou vous comptez extraire l'archive (/usr/src/) et lancez la commande :

tar -xvzf monDeLArchive.tgz ou tar.gz

tar -xvjf monDeLArchive.tar.bz2

Un sous répertoire nommé linux, contenant les sources du noyau, va être crée dans le répertoire ou vous avez lancé la commande.

Vous pouvez jetez un oeil à sa structure, son contenu, et bien sûr regarder le contenu des fichiers sources.

Les patches

Patcher une révision du noyau

L'archive des sources du noyau est assez volumineuse (même compressée), il est intéressant quand l'on souhaite faire une mise à jour des sources de son noyau vers une nouvelle version, de pouvoir récupérer seulement les différences entre les 2 versions.

C'est là qu'interviennent les patch. Un patch contient la liste des différences entre 2 réversions successives du kernel. Attention donc si vous voulez upgrader votre noyau de plus d'une révision, il vous faut récupérer tout les patches nécessaires.

Les patches sont aussi disponibles sur ftp.kernel.org.

Pour installer un patch ou des patches du noyau, copier le(s) fichier(s) de patch, dans le sous répertoire ``scripts'' dans le répertoire de vos sources, et lancez le script patch-kernel, et laissez le faire.

Installer un patch additionnel

Dans ce document le patch pris en exemple sera le patch kernel international, les explications sont disponibles sur www.kerneli.org, ce patch permet de protéger ses données confidentielles, grâce à des routines cryptographiques.

Pour utiliser ces routines, récupérez les patches :

Pour les installer ces patches (après les avoir décompressés), placez vous dans le répertoire de vos source et lancez la commande :

patch -Np1 -i nomDuPatch (Faites le pour les 2 patches)

Avant de commencer

Une fois que vous avez décompressé vos sources et installé vos patches, placez dans le répertoire de vos sources, et lancez la commande :

make mrproper
Celle ci en plus de faire le ménage complet (elle effaceffaceace toutes traces d'une ancienne compilation), vérifie la conformité de l'arborescence des sources.

Choix des options

Le choix des options à inclure dans le noyau est l'étape la plus complexes du processus de compilation, c'est rare que l'on arrive à un bon résultat au premier coup, il faut souvent plusieurs essais avant d'arriver au résultat souhaité.

Il existe 3 interfaces pour vous aider à configurer votre noyau, pour cela placez vous dans le répertoire linux et tapez une des commandes suivantes :

A vous de choisir selon vos goûts, mais quelques astuces sont quand même à connaître, pour éviter les erreurs bêtes du style :

Compilation

Une fois les options choisies et enregistrées (dans le fichier par défaut .config toujours dans le répertoire linux), lancez les commande suivantes :

Installation d'un nouveau noyau

D'abord le plus simple installons les modules à l'aide de la commande :

make modules_install

Ensuite, il faut copier le nouveau noyau et son fichier System.map dans le répertoire boot. Pour faire cela 2 choses sont à respecter :

N'effacez pas un ancien noyau qui marche, au risque de vous retrouver sans noyau pour booter votre système.

Par convention le noyau est copié dans boot sous le nom : wmlinuz-x.y.z (x=version du noyau, y=sous-version, z=numéro de révision), et le fichier System.map est copié sous le System.map-x.y.z (exemple pour un noyau version 2.4.18 on obtient un fichier vmlinuz-2.4.18 et un fichier System.map-2.4.18).

Ces 2 fichiers se trouvent sous (dans le cas d'un noyau compilé pour une architecture i386):

Dans tous les cas après avoir fait ceci, pensez à créer une nouvelle entrée pour ce noyau dans votre fichier lilo.conf et relancez la commande lilo, ou modifier votre fichier /boot/grub/menu.lst (pas besoin dans ce cas de relancer grub).

Tout est prêt pour un redémarrage.

Le redémarrage

Passage de paramètres au noyau

Que vous utilisiez grub ou lilo, il est possible de passer des paramètres au noyau, il en existe même beaucoup, les plus utilisés sont :

Pour se faire, à l'invite de lilo, tapez le nom du noyau que vous voulez utilisez suivis de la liste des paramètres. Avec grub, positionnez vous sur la ligne du noyau que vous voulez lancez, appuyez sur la touche 'e', ajoutez vos paramètres sur la ligne, tapez 'entrée' quand vous aurez finis, puis 'b' pour bootez.

Utilisation des modules

Sous GNU/Debian Linux, utilisez l'utilitaire modconf, pour installer les modules dont vous avez besoin, sous les autres distributions faites man modprobe.

Utilisation des serpents (crypto patch kernel international)

About this document ...

La compilation du noyau Linux

This document was generated using the LaTeX2HTML translator Version 2K.1beta (1.48)

Copyright © 1993, 1994, 1995, 1996, Nikos Drakos, Computer Based Learning Unit, University of Leeds.
Copyright © 1997, 1998, 1999, Ross Moore, Mathematics Department, Macquarie University, Sydney.

The command line arguments were:
latex2html LaConfNoyo.tex -split 0

The translation was initiated by Pierre CASTELLA on 2002-05-16


next_inactive up previous
Pierre CASTELLA 2002-05-16
Driver de la clé USB