Annexe E. La méthode Debian pour compiler un noyau

Table des matières
1. Créer le package contenant le noyau sur la machine de compilation
1.1. Installer les outils nécessaires
1.2. Créer le package
2. Installer le package sur la machine cible

Comme expliqué au début du chapitre Compiler le noyau, il existe deux méthodes pour compiler un noyau Linux. La méthode exposée ci-dessous est la méthode spécifique à la distribution Debian. Cette méthode s'avère plus pratique que la méthode générique quand on veut compiler un noyau pour une machine peu puissante qui n'a pas besoin de modules du noyau dont les sources ne sont pas intégrées dans le noyau officiel. En effet, la méthode Debian pour compiler un noyau consiste à créer un package Debian contenant le noyau et ses modules, puis à installer ce package avec dpkg ; on peut alors facilement compiler le noyau sur une machine puissante tourant sous Debian, transférer le package Debian généré sur la machine peu puissante et l'installer sur cette dernière.

L'exemple ci-dessous illustre la compilation d'un noyau sans modules externes (i.e. sans modules du noyau non intégrés dans les sources du noyau officiel) sur une machine puissante, appelée machine de compilation, et l'installation du noyau sur une machine peu puissante, appelée machine cible.

1. Créer le package contenant le noyau sur la machine de compilation

1.1. Installer les outils nécessaires

Deux packages supplémentaires sont requis sur la machine de compilation (i.e. celle sur laquelle vous allez compiler le noyau et produire le package) :


# apt-get install kernel-package fakeroot

1.2. Créer le package

Tout d'abord, vous devez télécharger, décompresser puis configurer le noyau sur la machine de compilation, comme expliqué au chapitre Configuration du noyau Linux. Je suppose que vous avez fini la configuration du noyau et que vous êtes dans le répertoire /usr/src/linux-version/.

Vous allez maintenant compiler le noyau et les modules et construire le package Debian contenant le noyau et les modules :


% fakeroot make-kpkg clean
% fakeroot make-kpkg --revision nom_de_la_machine_cible.numéro_de_version kernel_image

nom_de_la_machine_cible est le nom de la machine cible, et où numéro_de_version est le nombre de noyaux de cette version que vous avez déjà compilé pour cette machine augmenté de 1. Par exemple, dans le cas d'une deuxième compilation de noyau 2.6.X pour la machine raton, il faut mettre l'option --revision raton.2 (en fait, ceci n'a rien d'obligatoire, mais c'est ce que je conseille de faire).

Il faut alors patienter pendant la compilation du noyau et des modules et la génération du package.

2. Installer le package sur la machine cible

Le package est créé sur la machine de compilation dans le répertoire parent du répertoire où se trouvent les sources du noyau (i.e. le répertoire /usr/src/ si vous avez suivi mes consignes), et porte le nom kernel-image-2.6.X_nom_de_la_machine_cible.numéro_de_version_i386.deb. Pour installer le noyau, il faut donc d'abord transférer le package sur la machine peu puissante (par scp par exemple). Pour installer le noyau sur la machine cible, il suffit alors d'installer le package que l'on vient de transférer. Dans le répertoire où vous avez transféré le package, exécutez :


# dpkg -i kernel-image-2.6.X_nom_de_la_machine_cible.numéro_de_version_i386.deb

Il vous pose alors un certain nombre de questions : choisissez les choix par défaut !

Voilà en fait ce qu'il a fait pendant l'installation du package :

  1. installé le fichier /boot/vmlinuz-2.6.X (c'est le noyau),

  2. installé le fichier /boot/System.map-2.6.X (c'est la System map),

  3. installé le fichier /boot/config-2.6.X (c'est le fichier de configuration du noyau),

  4. installé les modules dans le répertoire /lib/modules/2.6.X/,

  5. modifié le lien symbolique /vmlinuz pour qu'il pointe sur le noyau que vous venez d'installer,

  6. modifié le lien symbolique /vmlinuz.old pour qu'il pointe sur le noyau actuel,

  7. exécuté lilo.

Il ne vous reste plus qu'à rebooter la machine cible pour qu'elle utilise le nouveau noyau !