Il existe deux méthodes pour compiler un noyau Linux :
la méthode générique, qui peut être utilisée pour toutes les distributions, y compris Debian ;
la méthode spécifique à Debian, qui consiste à créer un package contenant le noyau puis à l'installer. Cette méthode a l'avantage de pouvoir facilement compiler le noyau sur une machine pour l'installer sur une autre, d'avoir un paquet debian pret a installer sur votre machine.
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.
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.
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 |
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 |
![]() | 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 |
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.
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 |
où 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.
![]() | Exemple :
Le champ description confirme que c'est bien le module que l'on cherche :
Le fichier /etc/modprobe.d/reseau devra donc contenir :
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. |
![]() | Si vous avez plusieurs cartes réseau, il faut répéter cette ligne plusieurs fois :
|
[TODO : Normalement, ça marche tout seul grâce à hotplug... à confirmer !]
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 !]
Redémarrez sur le nouveau noyau :
# reboot |
Si le redémarrage sur le nouveau noyau se passe mal et que votre Linux se bloque au démarrage, il va falloir redémarrer sur votre ancien noyau. Pour cela, faites Ctrl-Alt-Suppr, puis quand le menu de Grub s'affiche, sélectionnez votre ancien noyau. Vous n'avez plus qu'à recompiler un nouveau noyau... en vous aidant des dernières lignes qu'il vous a affiché avant de se bloquer au démarrage pour essayer de trouver l'origine du problème et changer la configuration du noyau en conséquence. Bonne chance !
Si le redémarrage s'est bien passé... félicitation, vous avez réussi l'une des étapes les plus difficiles !
| Précédent | Sommaire | Suivant |
| Configuration du noyau Linux | Niveau supérieur | Tirer parti du nouveau noyau - 1 |