Comment compiler un noyau


Le but de cette section n'est pas de faire une explication détaillée des fonctions du noyau mais une méthode pour compiler son noyau afin de choisir les fonctions les plus intéressantes.
 
Première étape

Vérifions que le système posséde les utilitaires nécessaires à la compilation du noyau.
 
 
commande de vérification
Package RPM concerné
gcc -v ( ou type gcc ) egcs-1.1.2-x.i386.rpm ( x concerne une valeur de la version du package )
cpp-1.1.x.i386.rpm
make -v ( ou type make ) make-3.77.x.i386.rpm ( x concerne une valeur de la version du package )
automake --version ( ou type automake ) automake-1.4.x.noarch.rpm ( x concerne une valeur de la version du package )
type as86 dev86-0.14.x.i386.rpm ( x concerne une valeur de la version du package )
patch -v ( ou type patch ) patch-2.x.i386.rpm ( x concerne une valeur de la version du package )

Dans le cas de make xconfig ou de make menuconfig
commande de vérification
Package RPM concerné
ls -l /usr/include/strings.h glibc-devel-2.1.x.i386.rpm ( x concerne une valeur de la version du package )
ls -l /usr/include/curses.h ncurses-devel-x.i386.rpm ( x concerne une valeur de la version du package )

 
Deuxième étape

Vérifions que les sources du noyau sont présentes sur la distribution :
commande de vérification
Package RPM concerné
rpm -qiv kernel-source kernel-source-2.2.xy.i386.rpm 
rpm -qiv modutils .modutils-2.3.x.i386.rpm ( recommended )

ou bien
si vous désirez installer un nouveau noyau ( différent des sources de la distribution )

- récupérer l'archive du noyau ( via ftp ou CD-Rom )
 ex : ftp://ftp.kernel.org/pub/linux/kernel/v2.2/linux-2.2.14.tar.gz
-  déplacement dans l'arborescence : cd /usr/src
- suppression du lien symbolique : rm linux
- création du répertoire source : mkdir linux-N° du Noyau ( ex : mkdir linux-2.2.14 )
- création du lien symbolique : ln -s linux-2.2.14 linux
- decompression de l'archive : tar xfvz /somewhere/linux-2.2.14.tar.gz
Dans le cas du Proliant 2000 et du noyau 2.2.12, il n'est pas intégré la prise en charge de la carte et du chipset SIM710. Il faut donc patcher le noyau avec le fichier sim710-991111.diff.bz2 ( à télécharger ici ).
- le copier dans /usr/src : cp /somewhere/sim710-991111.diff.bz2 /usr/src
- déplacement dans le le répertoire : cd /usr/src
- décompression du patch : bzip2 sim710-991111.diff.bz2
- application du patch : patch -p0 < sim710-991111.diff
Troisième étape

Maintenant nous allons configurer le noyau:

- déplacement dans le répertoire : cd /usr/src/linux
il existe trois commandes possibles :
make config : dans le cas d'un terminal passif ne gérant ni couleur, ni graphisme
make menuconfig : dans le cas d'un terminal texte, gérant les couleurs
make xconfig : ne peut être éxecuté que sur un système X.


dans le dernier cas voici l'écran que verrez apparaitre :

Les différentes sections proposent des options qui seront aux nombres de trois:

y : option directement intégrée au noyau
n : option désactivée
m : option intégrée sous forme de module externe
Quelques Sections sont importantes dans le cas de notre Compaq Proliant 2000.

section Processor type and features

section Loadable Module Support

section General Setup

section Networking

section SCSI Support

section SCSI low level drivers

section mice

Ces choix sont importants mais peuvent être modifiés selon les besoins.
Vous pouvez maintenant faire "Save and Exit".
Les options sont stockés dans le fichier /usr/src/linux/.config
Vous pouvez telechargez les versions dont je me suis servi
 
 
Fichier config pour le noyau 2.2.12-20 2.2.12 ici ( en la renommant ensuite en ".config" )
Fichier config pour le noyau 2.2.14-5.0 2.2.14 ici ( en la renommant ensuite en ".config" )
Fichier config pour le BOOT 2.2.12-20 BOOT 2.2.12 ici ( en la renommant ensuite en ".config" )
Fichier config pour le BOOT 2.2.14-5.0 BOOT 2.2.14 ici ( en la renommant ensuite en ".config" )

 
Quatrième étape

La compilation elle-même ( déplacement dans le répertoire : cd /usr/src/linux )

Il existe deux méthodes :
Première méthode

make install : la commande détermine les dépendances,
compile le noyau,
crée automatiquement les fichiers liens dans le répertoire /boot/ grace à la commande /sbin/installkernel
( ex : /sbin/installkernel 2.2.12-20 /usr/src/linux/arch/i386/boot/bzImage /usr/src/linux/System.map )
et exécute la commande lilo -v.
ATTENTION: Dans ce cas , éditez auparavant le fichier /etc/lilo.conf et remplacer :
image=/boot/vmlinuz-2.2.12-20
par
image=/boot/vmlinuz
Deuxième méthode
make dep : pour déterminer les dépendances
make clean : pour supprimer les anciens fichiers-objets
make bzImage : construit le noyau et le stocke dans /usr/src/linux/arch/i386/boot/
(NB: Dans le cas de la disquette de Boot-Redhat ou Rescue-Redhat,
copier le fichier /usr/src/linux/arch/i386/boot/bzImage sur la disquette en le renommant vmlinuz )

taper les commandes pour refaire les liens de Boot :

- mv /boot/vmlinuz-2.2.12-20 /boot/vmlinuz.old
- mv /boot/System.map-2.2.12-20 /boot/System.map.old
- cat /usr/src/linux/arch/i386/boot/bzImage > /boot/vmlinuz-2.2.14
- cp /usr/src/linux/System.map /boot/System.map-2.2.14
- ln -fs vmlinuz-2.2.14 /boot/vmlinuz
- ln -fs System.map-2.2.14 /boot/System.map
éditez auparavant le fichier /etc/lilo.conf et remplacer :
image=/boot/vmlinuz-2.2.12-20
par
image=/boot/vmlinuz
- /sbin/lilo -v
Cinquième étape

Construction des modules : make modules
Installation des modules : make modules_install

Vous pouvez aussi utiliser "linuxconf" pour éditer facilement lilo.conf afin d'amorcer sur différentes versions du noyau.

Il ne vous reste plus qu'à redémarrer ( en ayant pris la précaution d'avoir une disquette rescue pour 6.0 ou pour 6.1  ou pour 6.2  sous la main ).
 

Retour au Sommaire