9.3. Compiler et installer un noyau sur mesure

Commençons par passer rapidement en revue le répertoire de configuration du noyau. Tous les chemins d'accès mentionnés seront relatifs au répertoire principal /usr/src/sys, qui est également accessible via le lien symbolique /sys. Il comporte un certain nombre de sous-répertoires correspondants à différentes parties du noyau, mais les plus importantes, en ce qui nous concerne, sont arch/conf, où vous éditerez votre fichier configuration personnalisé, et compile, qui est l'espace de travail où votre noyau sera compilé. arch représente soit i386, soit alpha, ou encore pc98 (une branche alternative de développement de l'architecture PC, populaire au Japon). Tout ce qui se trouve dans un répertoire particulier à une architecture est propre uniquement à cette architecture; le reste du code est commun à toutes les plates-formes sur lesquelles FreeBSD pourrait être potentiellement porté. Remarquez l'organisation logique de l'arborescence des répertoires, où chaque périphérique, système de fichiers, et option supportés a son propre sous-répertoire. FreeBSD 5.X et versions suivantes supporte l'architecture sparc64, ainsi que quelques autres architectures en développement.

Note : S'il n'y a pas de répertoire /usr/src/sys sur votre système, alors c'est que les sources du noyau n'ont pas été installées. La manière la plus facile de les installer est d'exécuter /stand/sysinstall en tant que root, et sélectionner Configure, puis Distributions, src, sys. Si vous avez une aversion envers sysinstall et que vous disposez d'un CDROM ``officiel'' de FreeBSD, alors vous pouvez installer les sources depuis la ligne de commande:

# mount /cdrom
# mkdir -p /usr/src/sys
# ln -s /usr/src/sys /sys
# cat /cdrom/src/ssys.[a-d]* | tar -xzvf -

Ensuite allez dans le répertoire arch/conf et copiez le fichier de configuration GENERIC dans un fichier qui portera le nom que vous voulez donner à votre noyau. Par exemple:

# cd /usr/src/sys/i386/conf
# cp GENERIC MONNOYAU

Par tradition, c'est un nom en majuscules, et si vous maintenez plusieurs machines FreeBSD avec des configurations matérielles différentes, c'est une bonne idée de lui donner le même nom que la machine. Nous l'appelerons MONNOYAU pour les besoins de cet exemple.

Astuce : Conserver votre fichier de configuration du noyau directement sous /usr/src peut être une mauvaise idée. Si vous avez des problèmes il peut être tentant de juste effacer /usr/src et recommencer à nouveau. Cinq secondes après vous vous rendez compte que vous venez d'effacer votre fichier de configuration personnalisé. N'éditez pas directement le fichier GENERIC, il peut être écrasé à la prochaine mise à jour de l'arborescence des sources, et vos modifications seraient perdues.

Vous voudrez peut être conserver votre fichier de configuration du noyau ailleurs et alors créer un lien symbolique vers le fichier dans le répertoire i386.

Par exemple:

# cd /usr/src/sys/i386/conf
# mkdir /root/noyaux
# cp GENERIC /root/noyaux/MONNOYAU
# ln -s /root/noyaux/MONNOYAU

Note : Vous devez exécuter cela et toutes les commandes suivantes avec les privilèges du compte root ou vous obtiendrez des messages d'erreur du type permission denied (permission refusée).

Editez maintenant MONNOYAU avec votre éditeur de texte préféré. Si vous venez tout juste de finir l'installation, le seul éditeur disponible sera probablement vi, qui est trop complexe pour être décrit ici, mais est bien expliqué dans de nombreux ouvrages de la bibliographie. Cependant, FreeBSD offre un éditeur plus simple appelé ee qui, si vous êtes débutant, sera votre éditeur de choix. N'hésitez pas à modifier les commentaires d'entête pour y décrire votre configuration ou les modifications que vous avez apportés par rapport au noyau GENERIC.

Si vous avez déjà compilé un noyau sur SunOS™ ou tout autre système d'exploitation BSD, l'essentiel de fichier vous sera familier. Si vous venez d'un système d'exploitation comme DOS, à l'inverse, le fichier de configuration GENERIC vous paraîtra inintelligible, lisez alors lentement et attentivement la section sur le fichier de configuration.

Note : Assurez-vous de toujours contrôler le fichier /usr/src/UPDATING, avant d'effectuer une seul étape de mise à jour, dans le cas où vous avez synchronisé votre arborescence des sources avec les toutes dernières sources du projet FreeBSD. Dans ce fichier sont notés tous les problèmes importants que l'on peut rencontrer lors de la mise à jour de FreeBSD. /usr/src/UPDATING correspond toujours à votre version des sources de FreeBSD, et est donc plus précis à ce sujet que le Manuel.

Vous devez maintenant compiler le code source du noyau. Il existe deux procédures que vous pouvez utiliser dans ce but, et celle que vous utiliserez dépendra de pourquoi vous recompilez le noyau, et de la version de FreeBSD que vous utilisez.

Procédure 1. Compiler un noyau suivant la méthode dite ``traditionnelle''

  1. Exécutez config(8) pour générer le code source du noyau.

    # /usr/sbin/config MONNOYAU
    
  2. Passez dans le répertoire de compilation. Ce dernier est normalement affiché après l'exécution de la précédente commande:

    # cd ../compile/MYKERNEL
    

    Pour les versions de FreeBSD antérieures à la 5.0, utiliser plutôt:

    # cd ../../compile/MONNOYAU
    
  3. Compilez le noyau.

    # make depend
    # make
    
  4. Installez le nouveau noyau.

    # make install
    

Procédure 2. Compiler un noyau suivant la ``nouvelle'' méthode.

  1. Passez dans le répertoire /usr/src.

    # cd /usr/src
    
  2. Compilez le noyau.

    # make buildkernel KERNCONF=MONNOYAU
    
  3. Installez le nouveau noyau.

    # make installkernel KERNCONF=MONNOYAU
    

Note : Sous FreeBSD 4.2 et versions antérieures vous devez remplacer KERNCONF= par KERNEL=. Une version 4.2-STABLE qui a été récupérée avant le 2 février 2001 ne reconnaît pas le paramètre KERNCONF=.

Si vous n'avez pas, en aucune manière, mis à jour votre arborescence des sources (vous n'avez pas utilisé CVSup, CTM, ou employé anoncvs), alors vous devriez utiliser la séquence config, make depend, make, make install.

Le nouveau noyau sera copié sous la racine avec le nom /kernel et l'ancien noyau sera renommé en /kernel.old. Maintenant, arrêtez le système et redémarrez pour utiliser votre nouveau noyau. Si quelque chose se passe mal, il y a quelques instructions de dépannage à la fin de ce chapitre. Assurez-vous de lire la section qui explique comment revenir en arrière dans le cas où votre nouveau noyau ne démarre pas.

Note : Depuis FreeBSD 5.0, les noyaux sont installés avec leurs modules dans /boot/kernel, et les vieux noyaux seront archivés dans /boot/kernel.old. Les autres fichiers concernant le processus de démarrage, comme le chargeur (loader(8)) et la configuration du démarrage sont conservés également dans le répertoire /boot. Les modules tiers et personnalisés peuvent être placés dans /boot/modules, bien que les utilisateurs doivent être conscients que garder ses modules synchronisés avec le noyau compilé est très important. Les modules qui ne sont pas destinés à fonctionner avec le noyau compilé peuvent être instables et ne pas donner les resultats escomptés.

Note : Si vous avez ajouté de nouveaux périphériques (comme une carte son) et que vous utilisez FreeBSD 4.X ou une version antérieure, vous devrez peut être rajouter des fichiers spéciaux de périphériques dans votre répertoire /dev avant de pouvoir les utiliser. Pour plus d'informations, reportez-vous à la section Créer les fichiers spéciaux de périphériques plus loin dans ce chapitre.

Ce document, ainsi que d'autres peut être téléchargé sur ftp.FreeBSD.org/pub/FreeBSD/doc/.

Pour toutes questions à propos de FreeBSD, lisez la documentation avant de contacter <questions@FreeBSD.org>.
Pour les questions sur cette documentation, contactez <doc@FreeBSD.org>.