Académique Documents
Professionnel Documents
Culture Documents
Compilation du
noyau
ESAT
Systèmes Répartis UNIX Compilation du Noyau
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).
jj/10/OO ESAT 3
Systèmes Répartis UNIX Compilation du Noyau
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.
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.
Figure 4
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
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
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
jj/10/OO ESAT 9
Systèmes Répartis UNIX Compilation du Noyau
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
jj/10/OO ESAT 10
Systèmes Répartis UNIX Compilation du Noyau
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.
jj/10/OO ESAT 12
Systèmes Répartis UNIX Compilation du Noyau
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.
jj/10/OO ESAT 14
Systèmes Répartis UNIX Compilation du Noyau
2. Compilation
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.
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
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.
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
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.
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.
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.
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).
make modules
make modules_install
jj/10/OO ESAT 17