Vous êtes sur la page 1sur 17

UNIX

Compilation du
noyau

ESAT
Systèmes Répartis UNIX Compilation du Noyau

1. Compiler un noyau personnalisé


La notion de compilation de noyau personnalisé a été largement modifiée depuis
l'apparition des noyaux modulaires (présents depuis la version Linux 2.0.x). Auparavant, vous
étiez obligé de compiler un noyau en y incluant tous les supports requis par votre système.
Pour certaines configurations matérielles, le noyau pouvait très rapidement atteindre une taille
disproportionnée. Certains supports n'étant que périodiquement utilisés, les ressources du
système n'étaient pas correctement gérées. Depuis la version 2.0.x du noyau, vous pouvez
charger dynamiquement les différents supports ou systèmes de fichiers que vous souhaitez
utiliser.

1.1. Compiler un noyau modulaire

Seules les plates-formes Intel et SPARC supportent les noyaux modulaires, pour les
plates-formes Alpha vous ne pouvez utiliser qu'un noyau monolithique.
Cette section contient un certain nombre d'informations, qui vous permettront de tirer profit
de la puissance et de la flexibilité des noyaux modulaires. Nous supposons que vous avez
installé les packages kernel-headers et kernel-source et que toutes les
commandes seront exécutées depuis le répertoire /usr/src/linux.

Avant la création d'un noyau, il est important d'avoir une arborescence source en bon état.
Il est donc recommandé d'utiliser la commande make mrproper. Les fichiers de
configuration et tout ce qui concerne les anciennes compilations seront supprimés de
l'arborescence. Vous devez maintenant créer un fichier de configuration qui déterminera les
différents composants à inclure dans le noyau. Suivant votre matériel et vos préférences
personnelles, trois méthodes sont disponibles pour configurer le noyau.

jj/10/OO ESAT 2
Systèmes Répartis UNIX Compilation du Noyau

 make config : (Figure 1) programme texte interactif. Les composants vous sont présentés
et pour chacun d'entre eux vous devez répondre par Y (Yes), N (No) ou M (Module).

Figure 1 - Configuration du noyau mode texte

jj/10/OO ESAT 3
Systèmes Répartis UNIX Compilation du Noyau

 make menuconfig : (Figure 2) programme graphique. Les composants sont présentés


dans un menu, contenant plusieurs catégories, et vous pouvez les sélectionner en utilisant
la même procédure que celle utilisée lors de l'installation. Pour chaque item, vous avez le
choix entre Y (Yes), N (No) ou M (Module).

Figure 2 - Configuration du noyau mode semi-graphique

jj/10/OO ESAT 4
Systèmes Répartis UNIX Compilation du Noyau

 make xconfig : (Figure 3) programme X Window. Les composants sont présentés dans
différents menus et sous menus. Vous pouvez sélectionner les items avec la souris et pour
chacun d'entre eux, vous avec le choix entre trois Y (Yes), N (No) ou M (Module).
Figure 3 - Configuration du noyau sous X

Note : Si vous utilisez ce mode de configuration vous devez avoir installer le langage script
tcl/Tk/Tclx

jj/10/OO ESAT 5
Systèmes Répartis UNIX Compilation du Noyau

Chaque section du noyau est composée d'une série de questions, auxquelles vous devez répondre pour le
configurer en prévision de sa configuration.
Le bouton Help permet d'obtenir des renseignements sur la fonction du noyau à configurer. La zone gauche de
la question comporte trois boutons : y (yes), m (module) et n (no). La plupart du temps, m est désactivé et on a
le choix entre y ou n.

1.2. LES OPTIONS DE CONFIGURATION

La configuration du noyau est composée de plusieurs sections, certaines ne vous seront pas proposées, en effet
elles seront tributaires des réponses que vous ferez dans la première. Il y a 14 sections, que vous devez
configurer une à une avant de lancer la procédure de compilation du noyau.

 Code Maturity level options.


Cette section de configuration ne comporte qu'une seule option : prompt for development and/or incomplete
code/drivers. Par défaut, certaines options de configuration ne sont pas disponibles, car expérimentales. Il est
cependant recommandé de répondre yes ici, car le support des binaires Java ou du file sytem Amiga font
parties de options expérimentales.

Figure 4

 Loadable module support

Le serveur kerneld est une des nouveautés majeures de Linux 2.0. Grâce à lui, il est possible de créer un noyau
modulaire et de charger ou décharger les différents modules automatiquement en fonctions des besoins.

Figure 5

Note : pour utiliser kerneld et les modules noyaux vous devez répondre, lors de la configuration, Yes au
kerneld support ainsi qu'au module version (CONFIG_MODVERSIONS) support.

jj/10/OO ESAT 6
Systèmes Répartis UNIX Compilation du Noyau

 General setup
Comme son nom l'indique, cette partie permet de régler certains paramètres essentiels pour le noyau comme
l'émulation du coprocesseur mathématique ou le support réseau. Assurez-vous de valider les options : System
V IPC, Kernel support for ELF binaries (option y, pas m) et compile kernel as ELF. Les supports a.out (ancien
format de binaires) et java peuvent être compilés en module (option m) sans trop se poser de question.
N'oubliez pas de choisir votre type de processeur.

Figure 6

Note : si vous compilez un noyau Linux/Intel sur une machine qui utilise un processeur clone (Cyrix ou AMD
par exemple), il est recommandé de choisir 386 comme type de processeur.

jj/10/OO ESAT 7
Systèmes Répartis UNIX Compilation du Noyau

 Floppy, IDE and other block devices.

Les disques IDE sont parfaitement supportés par Linux, avec notamment la possibilité de gérer jusqu'à quatre
interfaces IDE. Certains chipsets sont bogués sont connus de Linux ; lisez bien les informations
correspondantes si vous possédez un chipset de 486 un peu original.

Figure 7

 Networking options.

La configuration du noyau pour une utilisation réseau avancée dépasse le cadre de cet article mais il est
prudent de toujours prévoir un réseau minimal. Activer le support TCP/IP se montre pratiquement
indispensable (certaines applications ont besoin de TCP/IP même si votre machine n'est pas en réseau). Pensez
à également à activer loopback et le PPP si vous êtes connecté à Internet via une liaison de type Dial-Up en
passant par les lignes téléphoniques.

jj/10/OO ESAT 8
Systèmes Répartis UNIX Compilation du Noyau

 SCSI support et SCSI low-level drivers.

Si vous possédez un contrôleur et des périphériques SCSI, vous pourrez trouver votre bonheur dans ces
sections puisque quasiment toutes les cartes SCSI du monde PC et du monde Amiga sont reconnues par Linux.

Figure 8

Figure 9 - Liste des CDROMs Constructeur

jj/10/OO ESAT 9
Systèmes Répartis UNIX Compilation du Noyau

 Network device support

Outre le support des protocoles PPP et SLIP, on trouvera ici tout ce qui a trait au réseau, depuis les simples
cartes Ethernet jusqu'au liaison par radio. Si vous possédez une carte Ethernet classique du type compatible
NE2000, activez le support pour les cartes NE2000 dans la sous-section other ISA cards, et ce même s'il s'agit
d'une carte PCI.

Figure 10

 ISDN subsystem

Il s'agit là de la configuration RNIS.

jj/10/OO ESAT 10
Systèmes Répartis UNIX Compilation du Noyau

 CD Rom drivers (not for SCSI/IDE-ATAPI drives)

Si vous disposez d'un ancien lecteur de CD-ROM sur contrôleur au format propriétaire (Panasonic, Mitsumi,
…), il y a de fortes chances pour qu'il se trouve dans cette liste. Par ailleurs, si vous êtes à court de place sur
les nappes de vos contrôleurs EIDE, vous pourrez toujours utiliser le connecteur IDE de votre vieille
Soundblaster.

Figure 11

jj/10/OO ESAT 11
Systèmes Répartis UNIX Compilation du Noyau

 Filesystems

Le choix des systèmes de fichiers est primordial sous Linux, Il s'agit d'une partie d'une partie très importante
du noyau. Rappelons qu'un système de fichiers désigne une méthode pour organiser les fichiers sur une
partition d'un périphérique d'entrée /sortie. Pour avoir une installation stable de Linux, il faut utiliser le SDF
Second Extented FileSystem (Ext2fs) pour la partition principale bootable
Le système de fichier virtuel /proc doit être aussi activé; sinon certaines applications qui ont besoin de
récupérer des informations sur le noyau ne fonctionneront pas (ps, top …).
Enfin, il est de coutume d'activer, le support de filesystems FAT et VFAT, ainsi que MINIX. Vous n'oublierez
pas l'ISO9660 pour pouvoir relire les CD-ROM. Les possesseurs d'Amiga ne manqueront pas d'activer le
support de FastFileSystem très pratique.

Figure 12 - File System en mode Xwindow

jj/10/OO ESAT 12
Systèmes Répartis UNIX Compilation du Noyau

Figure 13 – File System en mode semi-graphique

 Character devices
Support des ports séries et parallèles, de l'imprimante, etc… Ce menu est standard et suffisamment explicite.

 Sound

Support des cartes sons. La configuration dépend de votre carte et n'est pas obligatoire, puisqu'il existe
aujourd'hui des supports externes du son par l'intermédiaire de modules optionnels. Certaines applications ont
besoin du support des périphériques /dev/dsp et /dev/audio; n'oubliez pas de les activer.

 Kernel hacking

Ceci sert au Hackers du noyau qui veulent savoir combien de temps le noyau passe dans les diverses
procédures. Cette option est à désactiver.

jj/10/OO ESAT 13
Systèmes Répartis UNIX Compilation du Noyau

 Sauvegarde

Voilà, vous devez avoir configuré votre kernel comme il faut. N'oubliez pas de sauvegarder cette
configuration.

Figure 14 – Sauvegarde au cas où…

jj/10/OO ESAT 14
Systèmes Répartis UNIX Compilation du Noyau

2. Compilation

✓ Sauvegarde de l'ancien noyau :

cp /boot/vmlinuz-2.0.31 /boot/vmlinuz.old

Pour éviter tout problème, nous vous conseillons de conserver une copie de votre ancien noyau.

✓ Déplacez les anciens modules avec les commandes :

rm -rf /lib/modules/modules.old
mv /lib/modules/2.0.31 /lib/modules/modules.old

✓ Ajouter un noyau au menu LILO est aussi simple que de renommer le noyau
original dans /boot,

Exemple du fichier /etc/lilo.conf par défaut contenu dans Red Hat Linux :

boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
timeout=100
image=/boot/vmlinuz

label=linux
root=/dev/hda1
read-only

Vous devez maintenant mettre à jour /etc/lilo.conf. Si vous avez compilé une nouvelle image initrd,
vous devez dire à LILO de l'utiliser. Dans l'exemple de /etc/lilo.conf nous avons ajouté quatre lignes
en fin de fichier pour préciser l'autre noyau à utiliser. Nous avons recopié /boot/vmlinuz sur
/boot/vmlinuz.old et changé son label en old. Nous avons aussi ajouté une ligne initrd pour le
nouveau noyau :

boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
timeout=100

image=/boot/vmlinuz
label=linux
initrd=/boot/initrd
root=/dev/hda1
read-only

image=/boot/vmlinuz.old
label=old
root=/dev/hda1
read-only

jj/10/OO ESAT 15
Systèmes Répartis UNIX Compilation du Noyau

2.1. Débuter la compilation

Si vous voulez compiler un noyau avec un fichier de configuration (/usr/src/linux/.config ) déjà


créé avec une des méthodes précédentes, vous pouvez ignorer les commandes make mrproper et make
config.
Utilisez la commande make dep (suivie de la commande make clean pour préparer l'arborescence source.
L'étape suivante permet de compiler le code source en un programme directement utilisable par la machine au
démarrage.

2.1.1. La commande make


Pour compiler le noyau vous disposer avec la commande make de quatre options :

 make zImage : Cette commande va compiler le noyau, et vous trouverez son fichier dans le répertoire
/usr/src/linux/arch/i386/boot. Le noyau s'appelle zImage.

 make bzImage : si votre noyau est trop large pour "make zImage", utilisez cette commande
 make zdisk : cette commande va compiler le noyau, et le copier sur une disquette de boot dans le lecteur
(a:). Vous disposerez aussi d'une copie du noyau dans /usr/src/linux/arch/i386/boot, sous le nom de
zImage.

 make zlilo : cette commande va lancer la compilation du noyau. Une fois, la compilation terminée, le
noyau sera copié dans le répertoire racine à la place de l'ancien, avec comme nom de fichier vmlinuz. La
commande va exécuter lilo pour configurer votre boot avec ce nouveau noyau.

 Si vous avez effectué une mise à jour du noyau, remplacez 2.0.31 par la version que vous utilisez.

2.1.2. Création des modules

 make modules : Cette commande compilera les modules et mettra à jour le répertoire
/usr/src/linux/modules. Dans ce répertoire, vous trouverez des fichiers liens symboliques qui pointent sur
les divers fichiers objets dans l'arborescence du noyau.

 make modules_install : Installe les nouveaux modules. Cette commande copie tous les nouveaux
modules vers des sous-répertoires dans /lib/modules/version_du_noyau

Aussitôt que vous avez redémarré le nouveau noyau, vous pouvez installer et retirer des modules à la demande
avec les utilitaires "insmod" et "rmmod".

jj/10/OO ESAT 16
Systèmes Répartis UNIX Compilation du Noyau

2.1.3. Commandes pour utiliser les modules

Les 3 principales commandes sont, insmod, lsmod, et rmmod

insmod : insère un module au noyau en cours d'exécution. Vous indiquez comme paramètres, le nom du
module à charger, et le chemin d'accès complet au module.

Exemple : insmod /lib/modules/2.0.31/fs/msdos.0

installe le gestionnaire de fichiers msdos

rmmod : retire un module au noyau.

Exemple : rmmod msdos.o

retire le gestionnaire msdos

lsmod : affiche la liste des modules en cours d'utilisation. Vous aurez les noms des modules, et le nombre de
pages mémoires utilisées pour chaque module.

2.1.4. Utiliser le noyau

 cp /usr/src/linux/arch/i386/boot/zImage /boot/vmlinuz : Copie la nouvelle image du noyau

Vous pouvez maintenant tester votre nouveau noyau, en rebootant votre machine. Observez les différents
messages qui s'affichent pour vérifier que l'ensemble de votre matériel a été correctement détecté.

Lorsque le système démarre et que vous appuyez sur la touche Tab au prompt :

✓ LILO boot :
Deux choix vous seront proposés :
Pour utiliser le nouveau noyau (linux) appuyez simplement sur Entrée ou attendez la fin du décompte.
Pour utiliser l'ancien noyau (old), tapez old suivi de Entrée.

2.2. Compiler un noyau monolithique

Pour compiler un noyau monolithique, la procédure à suivre est la même que celle proposée
précédemment à quelques exceptions près.

✓ Lors de la configuration du noyau, ne répondez que par Yes ou par No (n'utilisez pas de
module).

✓ Vous pouvez sauter les commandes :

make modules
make modules_install

✓ Editez le fichier /etc/rc.d/rc.sysinit, et mettez en commentaire la ligne depmod


-a en insérant le caractère # en début de ligne.

jj/10/OO ESAT 17

Vous aimerez peut-être aussi