Chapitre 10. Compiler le noyau

Table des matières
1. La compilation du noyau
1.1. Compilation sans des modules externes
1.2. Compilation avec des modules externes
2. L'installation du noyau
3. Préparer le chargement automatique des modules
3.1. La carte réseau
3.2. Modem câble USB
3.3. La carte son
4. Redémarrer

Il existe deux méthodes pour compiler un noyau Linux :

La méthode Debian est expliquée ci-dessous, et je vous conseille de l'utiliser, car vous garder le coté pratique de la manimpualtion des paquets.

1. La compilation du noyau

1.1. Compilation sans des modules externes

La compilation sans les modules externes est à faire si vous n'avez rien à ajouter au noyau de spécifique. Assurez-vous que vous êtes toujours dans le répertoire ~/kernel/

Maitenant vous allez donner un nom à votre noyau.

Par exemple j'appelle les miens sous la forme : kernel-image-version_du_noyau-nom_de_la_machine-numero_de_revisions.

Cette notation donnera un noyau de la forme : kernel-image-2.6.13.4-camel_1_i386.deb . Lançons la compilation du noyau linux :


% fakeroot make-kpkg --append-to-version -camel --revision 1 kernel-image

Il faut alors s'armer de patience, surtout si vous avez un ordinateur peu puissant ! Sur un ordinateur récent, cela prend plusieurs minutes.

1.2. Compilation avec des modules externes

Peut être que vous compilez votre noyau avec des modules externes. On aura a ajouter une option à make-kpkg

On commence par installer les modules dans ~/kernel/modules. On va prendre comme exemple l'installation des modules de SHFS , qui permettent de monter une partition d'une autre machine via SSH.


# apt-get install shfs-source


% cd ~/kernel
% tar jxvf /usr/src/shfs.tar.bz2
% export MODULE_LOC=~/kernel/modules
% cd linux
% fakeroot make-kpkg --append-to-version -camel --revision 1 kernel-image
% fakeroot make-kpkg --append-to-version -camel modules-image

2. L'installation du noyau

S'il y a eu aucune erreur, on trouvera un noyau compilé sous la forme d'un paquet Debian dans le répertoire parent.


% cd ..
# dpkg -i kernel-image-2.6.13.4-camel_1_i386.deb 

Note

Remplacer bien sur kernel-image-2.6.13.4-camel_1_i386.deb par celui que vous avez créez.

et si vous avez compilé des modules, il faut alors installer aussi le(s) paquet(s) correspondant. Par exemple, pour le module SHFS de l'exmple traité ci-dessus, nous devons taper :


# dpkg -i shfs-module-2.6.13.4-camel_0.35-2+1_i386.deb 

3. Préparer le chargement automatique des modules

L'idéal est que les modules du noyau se chargent tout seuls quand on a besoin d'eux. Pour cela, il faut dire au système que quand il veut accéder au périphérique machin il doit charger le module truc. La procédure est d'écrire un fichier de configuration dans le répertoire /etc/modprobe.d/, puis d'exécuter le script update-modules qui va concaténer tous les fichiers de ce répertoire et mettre à jour le fichier de configuration des modules /etc/modprobe.conf.

3.1. La carte réseau

Si vous avez bien suivi mes instructions pour la configuration du noyau, vous avez noté le nom du module de votre carte réseau. Créez un fichier /etc/modprobe.d/reseau et écrivez dans ce fichier la ligne suivante :


alias eth0 nom_du_module

nom_du_module est le nom du module de votre carte réseau, sans l'extension ".ko".

Si le nom n'était pas indiqué dans l'aide associée à l'option de votre carte réseau lors de la configuration du noyau, allez dans le répertoire /lib/modules/numero_de_version_du_noyau/kernel/drivers/net/et regardez les fichiers qui se trouvent dans ce répertoire et dans ses sous-répertoires. Essayez de deviner le module contenant le driver de votre carte réseau (Indice : ce ne sont ni les fichiers mii.ko, slhc.ko et bsd_comp.ko, ni les fichiers dont le nom commence par ppp). Une fois que vous pensez avoir trouvé le module, utilisez la commande modinfo pour avoir des informations sur le module et lisez le champ description.

Note

Exemple :


% modinfo e100.ko

Le champ description confirme que c'est bien le module que l'on cherche :


description:    Intel(R) PRO/100 Network Driver

Le fichier /etc/modprobe.d/reseau devra donc contenir :


alias eth0 e100

Cette ligne signifie tout simplement que quand le système veut accéder au device eth0 (qui correspond à la première carte réseau Ethernet), il doit charger le module e100.

Attention

Si vous avez plusieurs cartes réseau, il faut répéter cette ligne plusieurs fois :


alias eth0 nom_du_module_de_la_carte_réseau_n°1
alias eth1 nom_du_module_de_la_carte_réseau_n°2
alias eth2 nom_du_module_de_la_carte_réseau_n°3

3.2. Modem câble USB

[TODO : Normalement, ça marche tout seul grâce à hotplug... à confirmer !]

3.3. La carte son

Installez les deux packages nécessaires au bon fonctionnement d'ALSA :


# apt-get install alsa-base alsa-utils

[TODO : Normalement, le reste doit marcher tout seul grâce à hotplug... à confirmer !]

4. Redémarrer

Redémarrez sur le nouveau noyau :


# reboot