Précédent Suivant Sommaire


2. Compilation du noyau

2.1 Configuration

Il s'agit de la première étape de la compilation du noyau. Bien sûr, pour compiler le noyau, il vous faut avoir décompressé les sources dans un répertoire, qui sera nommé par convention /usr/src/linux/ tout au long de ce document. Placez-vous donc dans ce répertoire pour configurer le noyau.

La configuration pourrait se résumer à l'édition du fichier .config qui se trouve dans /usr/src/linux/, mais puisque nous disposons de trois outils qui permettent de faire le même travail un peu plus simplement, pourquoi ne pas les utiliser ?

Ces trois outils sont make config, make menuconfig et make xconfig. Les deux premiers s'exécutent sur la console alors que make xconfig se lance sous X.

ScreenShot de make configmake config
ScreenShot de make menuconfigmake menuconfig
ScreenShot de make xconfigmake xconfig

Pendant la configuration, vous disposez de trois choix pour chaque option: y pour yes signifie que vous souhaitez que la fonction sont intégrée au noyau ; m pour module signifie que la fonction doit être compilée sous forme de module (c'est un fichier indépendant qui est chargé quand le noyau en a besoin) ; ou n pour no, pour ne pas compiler la fonction.

Une fois que vous avez fait votre choix, sauvez la configuration et quittez le programme pour passer à la compilation.

2.2 Compilation

Passons maintenant à l'étape de la compilation.

Pour compiler, entrez la ligne (notez au passage l'emploi de && : en cas d'échec d'une commande, la suivante ne sera pas lancée) :
make dep && make clean && make bzImage && make modules && make modules_install

Selon la vitesse de votre processeur, allez soit boire un café soit vous promenez pendant une heure ou deux. Mais peut-être voulez-vous quelques explications ?

make bzImage crée une image du noyau compressée. Il existe un autre algorithme, moins efficace mais plus rapide, make zImage. Dans certains cas, une erreur est provoquée si le noyau est trop gros, essayez alors d'utiliser make bzImage si vous avez utilisé make zImage, et/ou de réduire le noyau en utilisant des modules.

make modules compile tout simplement... les modules !

2.3 Installation du nouveau noyau

Maintenant que la compilation est terminée, qu'aucune erreur n'a été générée pendant le processus, testons le nouveau noyau.

Pour cela, il va falloir démarrer avec, et donc le faire connaître à LILO (ou peut-être GRUB chez vous ?).

Nous allons donc ajouter une entrée concernant votre noyau fraîchement compilé dans le fichier de configuration, mais avant, car chaque chose a une place sur les systèmes Unix, copiez l'image du noyau vers le répertoire /boot/.

cp /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz

Si vous avez utilisé make zImage au lieu de make bzImage, remplacez bzImage par zImage, et adaptez i386 selon l'architecture de votre processeur. i386 désigne tous les processeurs Intel à partir du 386 et tous les processeurs compatibles. Le nom vmlinuz est complètement arbitraire et vous êtes libre de le modifier, mais évitez d'écraser le noyau que vous utilisez actuellement.

Voici un exemple de ce que vous pouvez ensuite ajouter dans le fichier de configuration de LILO (/etc/lilo.conf) :
image=/boot/vmlinuz # adaptez vmlinuz si vous n'avez pas
                    # utilisé ce nom pour l'image du noyau
  label=linux_que_j_ai_compile  # le nom à taper au démarrage
  read-only  # pour monter la partition root en lecture seule
 # vous pouvez ajouter ici les éventuelles options que
 # vous utilisez pour votre noyau actuel comme append=""

Si vous utilisez des options comme append="mem=xxM", ajoutez-les également.

Une fois le fichier de configuration modifié et sauvé, demandez à LILO de mettre à jour votre MBR avec 
/sbin/lilo
et vous devriez voir apparaître une ligne du genre Added linux_que_j_ai_compile

Voilà ! Il ne vous reste plus qu'à redémarrer avec le nouveau noyau. Puisque vous n'avez pas (si mes conseils ont été suivis) défini la nouvelle image par défaut, il faudra entrer son nom à l'invite LILO boot: au démarrage.

Quand vous êtes sûr du bon fonctionnement du noyau, vous pouvez le définir par défaut au démarrage (ligne 'default=' de /etc/lilo.conf).

Voilà ! C'est tout ! Etait-ce vraiment si compliqué ? :-)


Précédent Suivant Sommaire