Construction d'un noyau modulaire

Les instructions suivantes ne peuvent être appliquées que pour la construction d'un noyau modulaire. Si vous désirez plutôt construire un noyau monolithique, reportez-vous à la la section intitulée Construction d'un noyau monolithique pour avoir des instructions sur les différents aspects de la construction et de l'installation d'un noyau monolithique.

Les étapes indiquées ci-dessous vous guideront tout au long de la construction d'un noyau personnalisé pour l'architecture X86 :

NoteRemarque
 

L'exemple employé est fondé sur l'utilisation d'un noyau version 2.4.2-0.1.21. Il se pourrait toutefois que la version de votre noyau soit différente. Pour le savoir, entrez la commande uname -r. Remplacez 2.4.2-0.1.21 par le numéro de votre version.

  1. 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.2-0.1.21). Ceci étant fait, testez votre disque pour être certain qu'il est en mesure de faire démarrer le système.

  2. 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 ftp://ftp.redhat.com (vous trouverez également une liste de sites miroirs à l'adresse http://www.redhat.com/mirrors.html). Reportez-vous au Chapitre 17 pour avoir plus de détails sur l'installation des paquetages RPM.

  3. 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.

  4. 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.

  5. 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 et 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.

    NoteRemarque
     

    Pour utiliser kmod (voir la section intitulée Chargement des modules de noyau 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.

  6. 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.

  7. Utilisez la commande make clean pour préparer l'arborescence source en vue de la construction.

  8. 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.2-0.1.21, vous obtenez le résultat suivant si vous ajoutez cette balise : EXTRAVERSION = -0.1.21-feb2001). Cela vous permet d'avoir simultanément l'ancien noyau et le nouveau, version 2.4.2-0.1.21-12feb2001, sur votre système.

  9. Construisez le noyau à l'aide de make bzImage.

  10. Construisez les modules que vous avez configurés à l'aide de make modules.

  11. 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/, suivant le chemin d'accès spécifié dans Makefile. Dans notre exemple, ce serait donc /lib/modules/2.4.2-0.1.21-12feb2001/.

  12. 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.

  13. Utilisez make install pour copier votre nouveau noyau et ses fichiers dans le bon répertoire.

  14. Vous devriez garder le noyau original lors de la création d'un nouveau noyau, afin d'avoir une source redondante de démarrage en cas d'erreur. Cela peut se faire en mettant à jour le fichier /etc/lilo.conf et en exécutant /sbin/lilo.

    Le fichier /etc/lilo.conf par défaut ressemble à ceci :
    boot=/dev/hda
    map=/boot/map
    install=/boot/boot.b
    prompt
    timeout=50
    message=/boot/message
    linear
    default=linux
    
    image=/boot/vmlinuz-2.4.2-0.1.21
    	label=linux
            initrd=initrd-2.4.2-0.1.21.img
    	read-only
    	root=/dev/hda5
    Pour ajouter votre nouveau noyau à LILO, copier la section existante dans une nouvelle section et modifiez-la pour démarrer votre nouvelle image noyau (et votre image initrd, si vous avez un périphérique SCSI et avez créé une image initrd). De plus, rebaptisez l'étiquette de l'ancien noyau (linux-ancien, par exemple). Votre fichier /etc/lilo.conf devrait ressembler à ceci :
    boot=/dev/hda
    map=/boot/map
    install=/boot/boot.b
    prompt
    timeout=50
    message=/boot/message
    linear
    default=linux
    	
    image=/boot/vmlinuz-2.4.2-0.1.21-12feb2001
    label=linux
    initrd=initrd-2.4.2-0.1.21-12feb2001.img
    read-only
    root=/dev/hda5
    		
    image=/boot/vmlinuz-2.4.2-0.1.21
    label=linux-ancien
    initrd=initrd-2.4.2-0.1.21.img
    read-only
    root=/dev/hda5

  15. Pour activer vos changements, exécutez la commande /sbin/lilo. Si tout se passe comme prévu, le résultat devrait ressembler à ce qui suit :
    Added linux *
    Added linux-ancien
    L'astérisque (*), indiqué à côté de linux, signifie que la section portant l'étiquette linux est le noyau par défaut que LILO démarrera.

  16. Vous verrez désormais deux options de démarrage LILO au démarrage du système : linux et linux-ancien.

    Pour démarrer le nouveau noyau (linux), appuyez simplement sur Entrée ou attendez que LILO démarre par lui-même. Si vous désirez démarrer l'ancien noyau (linux-ancien), sélectionnez linux-ancien et appuyez sur Entrée.

  17. Vous pouvez commencer à tester votre nouveau noyau en redémarrant l'ordinateur ; lisez bien les messages qui apparaîtront pour vous assurer que tout le matériel est détecté correctement.