Debian logo [inetdoc.LINUX]

4. Compilation du noyau LINUX

La construction d'un noyau adapté à ses besoins passe par plusieurs étapes.

  1. Création d'une nouvelle arborescence de sources que l'on pourra modifier à volonté en préservant les sources «originaux».

  2. Configuration du noyau en choisissant le matériel et les fonctions utiles.

4.1. Où placer les sources ?

Dans l'arborescence usuelle du système GNU/Linux, le répertoire de stockage des sources est : /usr/src. Ce répertoire est accessible en écriture aux membres du groupe src. C'est donc à partir d'un compte utilisateur appartenant à ce groupe que l'on exécute la liste suivante des commandes «rituelles» après le télechargement des sources du noyau. Dans cet exemple, les caractères xx sont à remplacer par la version courante du noyau.

$ mv linux-2.6.xx.tar.bz2 /usr/src 1
$ cd /usr/src
$ tar xf linux-2.6.xx.tar.bz2 2
$ ln -sf linux-2.6.xx linux 3
$ cd linux

1

Copie du fichier tarball dans le répertoire usuel de dépôt des sources de noyau : /usr/src.

2

Extraction de l'arborescence des sources du noyau.

3

Il est possible de conserver plusieurs arborescences de sources de noyaux LINUX. On utilise alors un lien symbolique linux sur le répertoire de l'arborescence de travail.

4.2. Comment configurer le noyau ?

On dispose de trois interfaces utilisateur différentes pour configurer un noyau : mode texte, mode texte avec menus et mode graphique.

Comme lors des manipulations présentées ci-dessus, on suppose que le compte utilisateur normal fait partie du groupe systèmes src et qu'il dispose des droits d'écriture sur l'aborescence /usr/src/.

  • Le mode texte est réservé aux configurations matérielles minimales et aux nostalgiques des consoles VT100. Il n'est pas très commode à utiliser.

    $ pwd
    /usr/src/linux
    $ make config
    
  • Le mode texte avec menus est très pratique pour les manipulations à distance sur des serveurs sans interface graphique ni écran ni clavier. Généralement, les opérations de configuration se font via une console sécurisée avec l'outil ssh.

    Il est nécessaire que le paquet des bibliothèques de développement ncurses soit installé sur le système sur lequel on réalise la configuration. On s'assure de l'installation du paquet avec une commande du type : dpkg -l libncurses*-dev |grep ^ii.

    $ pwd
    /usr/src/linux
    $ make menuconfig
    
  • Le mode graphique n'est pas forcément le plus pratique. Il est nécessaire d'avoir une interface graphique en état de marche ainsi que le paquet des bibliothèques de développement de cette interface. Comme dans le cas précédent, on s'assure de l'installation du paquet avec une commande du type : dpkg -l libqt3*-dev |grep ^ii.

    $ pwd
    /usr/src/linux
    $ make xconfig
    

Une fois la commande make menuconfig lancée, on accède à la liste principale des options de configuration du noyau LINUX. On s'intéresse plus particulièrement aux options réseau :

Voir la Section 6, « Fonctions réseau du noyau LINUX » pour obtenir les informations nécessaires à l'utilisation des nombreuses options de configuration réseau.

La répartition des fonctions entre les espaces mémoire «noyau» (kernelspace) et «utilisateur» (userspace) une question très importante.

Avec les toutes premières version du noyau LINUX, ajouter de nouvelles fonctionnalités impliquait d'étendre le noyau lui-même. Il fallait, recompiler l'ensemble du noyau à chaque ajout d'un nouveau pilote de matériel. Si ce mode de conception monolithique convient toujours aux systèmes spécialisés avec une faible puissance de calcul, il est de moins en moins utilisé.

La notion de module est apparue avec la série 2.x et cette fonctionnalité permet de corriger ce défaut. Ces modules correspondent à des pilotes que l'on peut charger et décharger dynamiquement en mémoire. Pour pouvoir bénéficier des modules, les fonctions du noyau doivent être compilées avec l'option «module» notée M dans les menus de configuration.

Une fois compilés, les modules sont placés dans un répertoire /lib/modules/2.6.xx. D'autres sous-répertoires sont créés en fonction du choix des catégories. Par exemple, le chemin complet du module de pilotage de la carte RNIS est : /lib/modules/2.6.xx/kernel/drivers/isdn/hisax/hisax.ko.

4.3. Comment compiler le noyau ?

Une fois la phase de configuration terminée, on passe à la compilation proprement dite. Voici une nouvelle liste de commandes «rituelles» qui permettent de construire un paquet de noyau Linux à partir d'un compte utilisateur normal appartenant au groupe système src puis d'installer le paquet créé.

$ pwd
/usr/src/linux
$ fakeroot make-kpkg --initrd kernel_image
$ cd ..
:/usr/src/linux$ su
Mot de passe :
:/usr/src/linux#
:/usr/src/linux# dpkg -i linux-image-2.6.xx_2.6.xx-10.00.Custom_amd64.deb

Les caractères 'xx' correspondent à la version courante du noyau LINUX.