Chapitre 1. Installer un nouveau noyau à la sauce Debian

Table des matières
1. Description
2. Pré-requis
3. Installer
4. Préparer la compilation du noyau
5. Compiler son premier noyau à la sauce Debian
5.1. Choisir les options de son noyau
5.2. Lancer la compilation
5.3. Installer le noyau
5.4. Vérifier la configuration de Lilo
6. Aller plus loin avec son noyau
6.1. Présentation
6.2. Ajouter des modules externes à son noyau
6.3. Patcher son noyau
7. Désinstaller

Tableau 1-1. Evolution de cet article

DateAjout(s) / Modification(s)
20 décembre 2003Version initiale issue de la fusion entre l'article de Patrice Vestel et d'Arnaud Fontaine et mon propre article.
25 janvier 2004Mise à jour pour les noyaux 2.6.x.
1er mars 2004Relecture.

1. Description

Le noyau d'un système d'exploitation est le centre du système, la partie la plus importante. C'est de lui que dépendent les performances, la stabilité, la rapidité, la sécurité, tout le fonctionnement. Il sert à gérer l'accès à la mémoire, à gérer les fichiers, les applications, les droits d'accès, etc...

Comme tous les systèmes, Linux a un noyau. Mais il a la particularité d'être très performant (d'où l'excellente stabilité de Linux), d'être recompilable (on peut mettre à jour son noyau en le recompilant, ce qui évite d'avoir à réinstaller tout le système), et d'être fourni avec son code source, ce qui permet un développement beaucoup plus rapide, et efficace. Tout le monde a accès au code source du noyau de Linux, et peut, s'il le désire, le modifier pour l'améliorer ou corriger les bugs qu'il rencontre.

Une distribution Debian GNU/Linux possède de nombreux avantages en termes de configuration et d'outils d'administration. Pour l'installation du noyau Linux il existe des paquets très utiles qui vont vous permettre d'installer votre noyau très rapidement.

AvertissementLa compilation d'un nouveau noyau peut rendre votre système non-amorçable !
 

Non ce n'est pas une blague ! La compilation d'un nouveau noyau sur votre système peut, si elle est mal employée rendre votre système inutilisable. Si vous ne comprenez pas une partie de cet article je vous déconseille vivement de continuer. Vous pouvez toujours m'écrire si une partie de cet article n'est pas très clair.

2. Pré-requis

2.1. Pré-requis théorique

Vous devez bien connaître le type de matériel que vous possédez sur votre machine pour déterminer les options de configuration à utiliser avec votre futur noyau.

Pour découvrir les options de configuration du noyau et pour savoir lequelles activer, consulter l'annexe Options du noyau

3. Installer

On va commencer par télécharger les sources du dernier noyau :

# apt-get install kernel-source-2.6.4

Ensuite on installe les outils de configuration propre à votre Debian GNU/Linux :

# apt-get install build-essential kernel-package fakeroot

4. Préparer la compilation du noyau

Une fois les paquets installés il va falloir décompresser les sources de votre futur noyau. Il est conseillé de déléguer les tâches de configuration du noyau à un utilisateur. Pour cela, l'utilisateur doit appartenir au groupe src. Pour ajouter par exemple l'utilisateur cedric cedric au groupe src :

# adduser cedric src

Ensuite il faut décompresser les sources de votre noyau. On va décompresser les sources du noyau dans le répertoire de l'utilisateur et non dans le répertoire /usr/src comme trop de personnes à tendance à le faire. C'est Linus Torwarld lui meme qui recommende de traiter les sources du noyau dans le répertoire de l'utilisateur !

$ mkdir ~/src
$ cd /usr/src
$ tar xfvj kernel-source-2.6.4.tar.bz2 --directory ~/src

On ajoute enfin le lien symbolique linux qui pointe vers le répertoire de vos sources. Ainsi suivant la version de nos sources on sait qu'elles se trouveront toujours dans le répertoire ~/src/linux :

$ cd ~/src
$ ln -s kernel-source-2.6.4 linux

5. Compiler son premier noyau à la sauce Debian

5.1. Choisir les options de son noyau

Avant de passer à la compilation proprement dite de votre noyau vous allez dans un premier temps devoir choisir les options que vous allez y inclure. C'est un peu un choix à la carte. Vous ne prennez que ce dont vous avez besoin.

5.1.1. En dur ou en module ?

Les options du noyau peuvent s'intégrer de deux manières différentes.

  • Soit directement à ce dernier : on dit alors que l'on met l'option en dur.

  • Elles peuvent également être compilées séparement de ce dernier : on dit alors que l'on met l'option module.

Les options en modules permettent donc d'alléger votre noyau. Il faut savoir que plus un noyau a une taille importante et plus les performances du système vont diminuer.

Mais alors pourquoi ne pas mettre toutes les options du noyau en modules ? Et bien à causes de plusieurs raisons simples comprendre :

  • Certaines options n'existent qu'en dur.

  • Certaines options doivent figurer obligatoirement en dur si l'on veut que le système puisse fonctionner.

    Prenons un exemple simple. Supposons que votre Debian GNU/Linux fonctionne sur un système de fichier Ext3. Vous allez devoir inclure dans la configuration de votre noyau ce système de fichier. Si vous mettez le système de fichier en module, le noyau ne pourra pas charger ce module pour la simple et bonne raison que le module se trouve sur votre partition et qu'il ne sait pas la lire.

    Il faut donc faire très attention lors du choix de ces options de bien mettre celles qui sont vitales en dur.

5.1.2. Menuconfig : un programme simple pour configurer son noyau

Il existe plusieurs interface pour configurer votre noyau, je vais utiliser un interface console très austère mais très pratique. Pour lancer cette interface vous devez vous placer dans le répertoire qui contient les sources de votre futur noyau :

$ cd ~/src/linux
make menuconfig

Les autres interfaces possibles sont :

make config
make oldconfig
make gconfig
make xconfig

En voici une description sommaire :

  • L'interface config est une interface en ligne de commande.

  • L'interface oldconfig est une interface en ligne de commande qui conserve les choix présents dans votre fichier de configuration. Cette option est utile si vous souhaitez compiler un nouveau noyau et que vous ne voulez connaitre que les nouvelles options qui y sont apparus.

  • L'interface xconfig est une interface graphique simple pour l'envrionnement XWindow.

  • L'interface gconfig est une interface graphique améliorée pour l'environeement XWindow utilisation la bibliothèque graphique Gtk.

Une fois l'interface menuconfig lancée, vous pouvez naviguer au sein des menus à l'aide des touches de direction de votre clavier Vous vous apercevrez très rapidement qu'il y a beaucoup de choix possibles. On noteral que l'architecture des menus des noyaux 2.6.x a été revue. C'est beaucoup mieux organisées et l'on s'y retrouve donc plus facilement.

N'oubliez pas de consulter l'annexe : Options du noyau pour connaitre les options a activer si vous n'etes pas encore familier avec la centaines d'options mise à votre disposition.

Une fois la configuration de votre noyau terminée, n'oublier pas de sauvegarder la configuration de votre noyau

AstuceFichier de configuration de votre noyau
 

Le fichier de configuration de votre noyau se nomme .config. La configuration du noyau étant une opération longue et fastidieuse, je vous recommande vivement de copier ce fichier dans un autre répertoire pour éviter de devoir tout recommencer du début si par mégarde vous détruisiez le répertoire ~/src/linux.

5.2. Lancer la compilation

Maintenant que votre noyau a été configuré, tout est prêt pour construire le paquet Debian qui va vous permettre d'installer le noyau et ses modules. Voici la procédure :

$ cd ~/src/linux
$ fakeroot make-kpkg clean
$ fakeroot make-kpkg --append-to-version=-test001 kernel_image

La commande fakeroot permet de simuler l'environnement root au programme make-kpkg pour que ce dernier puisse générer les paquets de votre futur noyau. Cela à l'avantage d'éviter de faire la compilation en tant que root.

Le cible clean passée à la commande make-kpkg permet de nettoyer l'arborescence des sources de votre noyau. Il faut le faire à chaque nouvelle compilation !

5.2.1. --append-to-version

Le paramètre --append-to-version permet d'ajouter un numéro de version à votre noyau. Cela s'avère très utile si vous souhaitez utiliser en même temps plusieurs version d'un même noyau. Il faut savoir que lors de l'installation d'un noyau sur votre système, un répertoire portant le nom de votre noyau est créé en /lib/modules. Si vous installez un nouveau de même version, il va écraser ce répertoire. Ceest pas très pratique car si notre nouveau noyau s'avère défectueux, il n'y a plus aucun moyen de revenir en arrière. A moins bien entendu d'avoir un noyau d'une version différente installé sur sa machine.

Pour remédier à cela, on ajoute à la version de notre noyau une extension.

Important

Ce paramètre n'accepte que les chiffres (0-9), les caractères minuscules (a-z), plus << + >>, moins << - >> et le point << . >>

AstuceLisibilité et nom du noyau
 

Pour une meilleur lisibilité je vous conseilled'ajouter un tiret << - >> au début de la version de votre noyau, comme je l'ai fait dans mon exemple.

Je vous conseille également de donner un nom significatif à votre noyau. Une bonne idée est de rajouter la date au format jjmmaaaa par exemple. Ce qui donnera des versions de noyau de la forme 2.6.4-02092003

5.2.2. --revision

On peut également spécifier un autre paramètre. Le paramètre --revision. Il sert à dpkg.

Lorsque vous avez deux numéros de même version dont un est déja installé, il va vérifier que le nouveau noyau à un numéro de révision supérieur avant de l'installer. Je ne trouve pas d'utilité à ce paramètre. Je l'ai mis ici pour être complet dans mon explication, mais je ne vous conseille pas de l'utiliser pour la suite car cela peut-être une source inutile de conflit entre vos paquets.

Important

Ce paramètre n'accepte que les chiffres (0-9), les caractères minuscules(a-z), les signes plus << + >>, moins << - >> et le point << . >>

5.3. Installer le noyau

Une fois la compilation de votre noyau terminée, vous obtiendez un paquet Debian (.deb) dans le répertoire ~/src. Ce fichier est au format : kernel-image-<kernel-version><--append-to-version>_<--revision>_<architecture>.deb

Dans notre exemple le nom de ce paquet est : kernel-image-2.6.4-test001_10.00.Custom_i386.deb

Pour l'installer :

# dpkg -i kernel-image-2.6.4-test001_10.00.Custom_i386.deb

dpkg vous pose alors plusieurs questions :

  • Would you like to create a boot floppy now? : Répondez No

  • Install a boot block using the existing /etc/lilo.conf? : Répondez No

  • Wipe out your old LILO configuration and make a new one? : Répondez No

Si tout c'est bien passé dpkg ne devrait pas vous retourner de message d'erreur. Un nouveau répertoire a été créé dans /lib/modules qui porte le nom de votre nouveau noyau. Dans notre exemple c'est le répertoire 2.6.4-test001

5.4. Vérifier la configuration de Lilo

Maintenant que votre noyau est fraichement installé, vous devez impérativement modifier le fichier de configuration de votre gestionnaire d'amorçage.

Dans ce guide de l'utilisateur j'utilise LILO. Si c'est également votre cas, éditez le fichier /etc/lilo.conf et ajouter à la fin de ce dernier les lignes suivantes :

Vous allez donc rajouter un nouveau bloc dans le fichier de configuration de Lilo pour prendre en compte de nouveau noyau

Pour cela, rajouter a la fin de votre fichier /etc/lilo.conf les lignes suivantes :

image=/boot/vmlinuz-2.6.4-test001
        label=2.6.4-test001
        read-only

  • Le paramètre image spécifie l'emplacement de l'image de votre nouveau noyau.

  • Le paramètre label contient la description de votre noyau qui est affiché dans LILO .

    Attention, la taille de ce paramètre est limitée !

ImportantNote concernant la modification du fichier de configuration de LILO
 

Lors de l'installation de votre noyau sur votre Debian GNU/Linux dpkg vous a proposé de modifier le fichier de configuration de LILO. Je vous ai demandé de répondre No à cette question. En effet, il faut savoir que si vous aviez accepté ce choix, dpkg n'aurait pas réelement crée une nouvelle section dans le fichier de configuration de LILO comme nous venons de le faire.

dpkg aurait simplement fait une copie de lien symbolique /vmlinuz (qui pointe initialement vers le noyau d'installation de votre Debian GNU/Linux) en /vmilnuz.old. Puis il aurait fait un nouveau lien symbolique /vmlinuz qui aurait pointé vers votre nouveau noyau en modifiant ce qu'il faut dans le fichier /etc/lilo.conf pour pouvoir accéder à votre noyau de base.

C'est pratique lorsque l'on installe un seul noyau. Mais si l'on en installe plusieurs, on perd lors de l'amorçage du système le choix des autres noyaux.

Après avoir enregistré les modifications, n'oubliez pas de mettre à jour LILO :

# lilo -v

Il ne vous reste plus qu'à redémarrer votre machine et tester votre nouveau noyau.

# reboot

6. Aller plus loin avec son noyau

6.1. Présentation

make-kpkg est un programme très puissant qui vous permet de faire beaucoup de chose lors de la compilation de votre noyau. Vous pouvez ainsi créer des paquets Debian pour installer sur votre noyau certains modules, comme par exemple les drivers Nvidia qui ne sont pas encore inclus dans le noyau ou encore patcher ce dernier pour lui ajouter de nouvelles options de configuration telle que l'utilisation d'image graphique au démarrage.

Pour l'ajout de patches, vous devez installer un paquetage supplémentaire :

#apt-get install kernel-package

6.2. Ajouter des modules externes à son noyau

6.2.1. Présentation

Le paramètre --added_modules indique à make-kpkg de générer des paquets Debian pour l'installation de modules installer séparement du noyau.

Important

Attention : ces modules doivent être issus de paquets Debian.

Ce paramètre peut prendre plusieurs modules séparés par une virgule << , >>. Les noms des modules que vous pouvez ajouter sont ceux qui correspondent aux noms des répertoires présents dans /usr/src/modules.

6.2.2. Module : nvidia

Si vous êtes posseseur d'une carte graphique à base de chipset Nvidia GeForce vous pouvez compiler le driver de cette carte lors de la compilation de votre noyau.

Vous devez télécharger le paquet nvidia-kernel-source :

# apt-get install nvidia-kernel-source

Une fois les paquets téléchargés, vous devez comme d'habitude les décompresser. Ces derniers s'installeront dans le répertoire /usr/src/modules :

$ cd /usr/src
tar xfvz nvidia-kernel-src.tar.gz
tar xfvz nvifia-glx-src.tar.gz

Il ne vous reste plus qu'à ajouter lors de la compilation de votre noyau le paramètre :

--added_modules=nvidia-kernel

Reportez vous à l'article Installer les pilotes Nvidia pour le serveur X pour terminer l'installation de votre carte graphique.

6.2.3. Module : alsa (noyaux 2.4.x uniquement)

Si vous utiliser l'architecture ALSA pour votre carte son, et un noyau de la série des 2.4.x vous devez télécharger le paquet alsa-source :

# apt-get install alsa-source

Une fois le paquet téléchargé, vous devez le décompresser :

$ cd /usr/src
tar xfvz alsa-source.tar.gz

Il ne vous reste plus qu'à ajouter lors de la compilation de votre noyau le paramètre :

--added_modules=alsa-driver

Reportez vous à l'article Installer une carte son à l'aide des pilotes ALSA pour terminer l'installation de votre carte son.

6.3. Patcher son noyau

6.3.1. Présentation

Le paramètre --added_patches indique à make-kpkg d'inclure des patches à votre noyau.

Important

Attention : ces modules doivent être issus de paquets Debian.

Ce paramètre peut prendre plusieurs patches séparés par une virgule << , >>. Les noms des patches que vous pouvez ajouter sont ceux qui correspondent aux noms des répertoires présents dans /usr/src/kernel-patches/all/apply.

Lorsque vous patcher votre noyau, les nouvelles options de configuration disponibles sont automatiquement affichées et l'on vous demande si vous souhaitez les inclure à votre noyau.

6.3.2. Patch : debianlogo

Le patch debianlogo vous permet de remplacer le pingouin que vous trouvez au démarrage de votre Debian GNU/Linux par un beau logo aux couleurs de Debian.

Pour cela vous devez télécharger le paquet kernel-patch-debianlogo :

# apt-get install kernel-patch-debianlogo

Il ne vous reste plus qu'à ajouter lors de la compilation de votre noyau le paramètre :

--added_patches=debianlogo

6.3.3. Patches : preempt et lowlatency (noyaux 2.4.x uniquement)

Les patches preempt et lowlatency vous permettent de donner plus de réactivité à votre station de travail qui utilise un noyau de la série 2.4.x. Les noyaux 2.6.x intégrent nativement cette option.

Enfin il ne faut pas utiliser ces patches si votre Debian GNU/Linux est utilisé en tant que serveur.

Vous devez télécharger les paquets kernel-patch-2.4-preempt et kernel-patch-2.4-lowlatency :

# apt-get install kernel-patch-2.4-preempt kernel-patch-2.4-lowlatency 

Il ne vous reste plus qu'à ajouter lors de la compilation de votre noyau le paramètre :

--added_patches=preempt,lowlatency

7. Désinstaller

Vous pouvez supprimer aussi facilement que vous venez de l'installer le noyau que vous venez de configurez. Cependant, il ne faut pas que ce soit le noyau qui est en cours d'exécution car vous allez rendre votre système instable.

Pour supprimer le noyau que je viens d'installer :

# apt-get remove --purge kernel-image-2.6.4-test001

AstuceRetrouvez le nom du paquet de son noyau
 

On remarquera qu'il ne faut pas spécifier le nom du paquet Debian que l'on a utilisé lors de l'installation, mais qu'il faut respecter le format kernel-image-<kernel-version>