Les néophytes du système Linux se demandent souvent : "Pourquoi diable devrais-je construire mon propre noyau ?". Vu les pas de géants faits en matière de modules de noyau, la meilleure réponse à cette question est sans doute : "Si vous ne savez pas pour quelle raison vous devriez construire votre propre noyau, vous n'avez probablement pas besoin de le faire".
Autrefois, vous deviez recompiler le noyau si vous souhaitiez ajouter du matériel à votre système car le noyau était statique. Les améliorations apportées aux noyaux Linux version 2.0.x permirent d'ajouter des pilotes de matériel en tant que composants modulaires qui sont ensuite chargés à la demande. Toutefois, un problème important persistait lorsque les utilisateurs avaient plusieurs noyaux compilés selon différentes options de configuration sur leur système, par exemple, les noyaux SMP et UP. Puis, les noyaux Linux 2.4.x firent des progrès du point de vue le la modularisation, ce qui permit de faire coexister plusieurs noyaux plus facilement, mais il était tout de même impossible de partager les modules entre les noyaux.
Pour plus d'informations sur la manipulation des modules de noyau, reportez-vous au Chapitre 24. Notez qu'à moins que vous ne recompiliez un noyau personnalisé pour votre système, vous ne verrez que très peu de changements dans la façon de manipuler les modules de noyau.
Les instructions contenues dans cette section se réfèrent à la construction d'un noyau modularisé. Si vous souhaitez construire un noyau monolithique, consultez la la section intitulée Construction d'un noyau monolithique. Vous y trouverez en effet une explication des différents aspects de la construction et de l'installation d'un noyau monolithique.
La procédure ci-dessous vous guidera à travers la construction d'un noyau personnalisé pour architecture x86 :
![]() | Remarque |
|---|---|
Cet exemple utilise la version de noyau 2.4.7-3. Votre version pourrait ne pas être la même. Pour identifier la version de votre noyau, entrez la commande uname -r. Ensuite, remplacer 2.4.7-3 avec votre version de noyau. |
L'étape la plus importante est de vérifier si vous avez un disque d'amorçage de secours fonctionnel, que vous pourrez utiliser en cas d'erreur. Si vous n'avez pas créé de disque d'amorçage lors de l'installation, utilisez la commande mkbootdisk pour en créer un maintenant. Pour ce faire, la commande standard ressemble à mkbootdisk --device /dev/fd0 2.4.x, où 2.4.x est le numéro de version complet de votre noyau (tel que 2.4.7-3). Ceci étant fait, testez votre disque pour être certain qu'il est en mesure de faire démarrer le système.
Les paquetages kernel-headers et kernel-source doivent tous deux être installés. Utilisez les commandes rpm -q kernel-headers et rpm -q kernel-source pour en connaître la version, s'ils sont installés bien entendu. S'ils ne le sont pas, installez-les à l'aide du CD-ROM Red Hat Linux 1 ou depuis le site FTP Red Hat, à l'adresse http://www.redhat.com/mirrors.html). Reportez-vous au Chapitre 25 pour avoir plus de détails sur l'installation des paquetages RPM.
A l'invite du shell, allez dans le répertoire /usr/src/linux-2.4. Dorénavant, toutes les commandes doivent être faites relativement à ce répertoire.
Il est important d'avoir une arborescence source dont vous connaissez la condition lorsque vous vous lancez dans la construction d'un noyau. Aussi est-il recommandé de commencer par utiliser la commande make mrproper, qui supprime tout fichier de configuration et tout ce qui peut rester des constructions précédentes dans l'arborescence source. Si vous avez déjà un fichier de configuration fonctionnel (/usr/src/linux-2.4/.config) que vous voulez utiliser, sauvegardez-le dans un répertoire différent avant d'exécuter cette commande et recopiez-le par la suite. Si vous utilisez un fichier de configuration existant, sautez la prochaine étape.
Vous devez maintenant créer un fichier de configuration qui déterminera quels composants inclure dans votre nouveau noyau.
Si vous exécutez le système X Window, nous vous recommandons d'utiliser la commande make xconfig. Les composants sont ainsi énumérés dans divers menus et vous les sélectionnez à l'aide de la souris. Vous avez le choix entre Y (oui), N (non) ou M (module). Après avoir sélectionné vos composants, cliquez sur les boutons Save and Exit pour créer le fichier de configuration /usr/src/linux-2.4/.config et quitter le programme Linux Kernel Configuration.
Voici d'autres méthodes pour configurer le noyau :
make config — programme interactif en mode de texte. Les composants sont proposés de façon linéaire et vous les définissez un par un. Cette méthode ne nécessite pas l'utilisation du système X Window et ne vous permet pas de revenir en arrière pour changer les réponses aux questions précédentes.
make menuconfig — programme en mode de texte piloté par des menus. Les composants sont énumérés dans des menus, en fonction de catégories spécifiques. Vous n'avez qu'à sélectionner les composants désirés comme vous le feriez dans le programme d'installation Red Hat Linux en mode de texte. Changez simplement l'indicateur des éléments que vous souhaitez inclure dans le noyau : [*] (incorporé), [ ] (exclu), <M> (module) ou < > (module possible). Cette méthode ne requiert pas le système X Window.
make oldconfig — script non interactif qui règle votre fichier de configuration pour qu'il contienne les paramètres par défaut. Si vous utilisez le noyau Red Hat par défaut, il crée un fichier de configuration pour le noyau compris avec Red Hat Linux pour votre architecture. Cela peut être utile lors de la configuration de votre noyau car vous pouvez ainsi savoir quels sont les composants par défaut et désactiver ceux que vous ne voulez pas.
![]() | Remarque |
|---|---|
Pour utiliser kmod (voir Chapitre 24 pour plus de détails) et les modules de noyau, vous devez répondre Yes (oui) à kmod support et module version (CONFIG_MODVERSIONS) support lors de la configuration. |
Après avoir créé un fichier /usr/src/linux-2.4/.config, utilisez la commande make dep pour définir correctement toutes les dépendances.
Utilisez la commande make clean pour préparer l'arborescence source en vue de la construction.
La prochaine étape de la construction d'un noyau modulaire est d'éditer /usr/src/linux-2.4/Makefile afin de ne pas écraser le noyau existant. Nous vous proposons également la méthode la plus simple pour vous dépanner en cas de complications. Si vous souhaitez connaître d'autres possibilités, vous en trouverez à l'adresse http://www.redhat.com/mirrors/LDP/HOWTO/Kernel-HOWTO.html ou dans le fichier Makefile, situé dans /usr/src/linux-2.4 sur votre système Linux.
Editez /usr/src/linux-2.4/Makefile et modifiez la ligne qui commence par EXTRAVERSION = pour qu'elle corresponde à un nom "unique", en y ajoutant la date à la fin. Par exemple, si vous compilez la version de noyau 2.4.7-3, vous obtenez le résultat suivant si vous ajoutez cette balise : EXTRAVERSION = -0.1.21-jul2001). Cela vous permet d'avoir simultanément l'ancien noyau et le nouveau, version 2.4.7-3-12feb2001, sur votre système.
Construisez le noyau à l'aide de make bzImage.
Construisez les modules que vous avez configurés à l'aide de make modules.
Installez les modules de noyau (même si vous n'en avez construit aucun) à l'aide de make modules_install. Assurez-vous d'entrer le soulignement (_). Ce faisant, les modules de noyau sont installés dans le répertoire /lib/modules/VERSIONDUNOYAU/kernel/drivers, où VERSIONDUNOYAU correspond à la version spécifiée dans Makefile. Dans notre exemple, ce serait donc /lib/modules/2.4.7-3-jul2001/kernel/drivers/.
Si vous avez une carte SCSI et avez modularisé votre pilote SCSI, construisez une nouvelle image initrd (voir la section intitulée Création d'une image initrd ; notez qu'il y a peu de raisons pratiques pour modulariser un pilote SCSI dans un noyau personnalisé). A moins d'avoir une raison bien précise pour créer une image initrd, ne le faites pas et n'en ajoutez pas à lilo.conf).
Utilisez make install pour copier votre nouveau noyau et ses fichiers dans les bons répertoires.
Le noyau est maintenant construit et installé. La prochaine étape consiste à configurer le chargeur de démarrage pour qu'il démarre le nouveau noyau. Pour plus d'informations, consultez le la section intitulée Configuration du chargeur de démarrage.
| Précédent | Sommaire | Suivant |
| Annexes | Niveau supérieur | Création d'une image initrd |