Tout d'abord une petite chose : si vous compilez un noyau dont la version est identique à une version déjà présente sur votre système, les modules de cette dernière doivent être effacés auparavant. Par exemple, si vous recompilez un noyau 2.4.22, il vous faudra effacer le répertoire /lib/modules/2.4.22.
La compilation du noyau et des modules, ainsi que l'installation des modules, se font grâce aux instructions suivantes :
make dep make clean bzImage modules make modules_install install |
Un peu de vocabulaire : dep, bzImage, etc., aussi bien que oldconfig, mais aussi ceux utilisés ci-dessus, sont appelés targets (soit cibles). Si vous spécifiez un certain nombre de cibles pour make tel que ci-dessus, elles seront exécutées selon l'ordre d'apparition. Mais si une cible échoue, make n'ira pas plus loin[38].
Penchons-nous maintenant sur les différentes cibles et regardons ce qu'elles font :
dep : ce sont des dépendances entre les différents fichiers sources. Il est nécessaire de faire ainsi chaque fois que vous changez votre configuration. Autrement, certains fichiers risquent de ne pas être créés et la compilation échouera ;
bzImage : ceci construit le noyau. Notez que cette cible est seulement valable pour des processeurs Intel. Cette cible générera aussi le fichier System.map pour ce noyau. Nous verrons plus loin à quoi sert ce fichier ;
modules : comme le dit son nom, cette cible générera des modules pour le noyau. Si vous ne choisissez pas ces modules, la cible ne fera rien ;
modules_install : ceci installe les modules. Par défaut, les modules seront installés dans le répertoire /lib/modules/<kernel-version>. Cette cible calcule aussi les dépendances entre modules (ce qui n'est probablement pas le cas en 2.2.x) ;
install : cette dernière cible va finalement copier le noyau et tous ses modules au bon endroit, et modifier la configuration des chargeurs de démarrage de telle sorte que le nouveau noyau soit disponible au démarrage. Ne l'utilisez pas si vous préférez effectuer une installation manuelle, telle que décrite dans la section intitulée “Installation du nouveau noyau”.
Il est important de respecter l'ordre des cibles modules_install install pourquoi les modules s'installent avant.
Tout est maintenant compilé et les modules sont installés. Mais ce n'est pas tout : vous devez également installer le noyau dans un endroit où votre programme de démarrage (bootloader), que ce soit LILO ou GRUB, pourra le trouver. C'est ce dont il est question dans la prochaine section.
[38] Dans ce cas, si cela échoue, cela signifie qu'il y a un bogue dans le noyau... Dans ce cas, merci de nous le faire savoir !