Cette zone vous est réservée, son contenu dépend essentiellement de vos contributions. Aidez la à grandir...

Articles

Favoris

Get Firefox! Slackware Linux Tuxfamily

Administration

Article III

Comment Compiler un Noyau Linux

version plein-écran

Avant Propos

La compilation d'un noyau peut se faire de plusieurs manières. Parmis elles, la méthode traditionnelle et la méthode Debian.
La première peut être utilisée avec toutes les distributions alors que la seconde ne peut être appliquée qu'aux distributions qui utilisent le système de packet deb. Cependant, cette dernière vous permet de gérer votre noyau comme n'importe quel autre packet et elle vous permet aussi de pouvoir compiler simplement un noyau pour une autre machine. C'est ces deux méthodes que je décrirai.
Vous pouvez télécharger la version la plus récente des sources du noyau sur Kernel.org.

En ce qui concerne les patchs

Consultez la section Généralités.

Ce qui est commun aux deux méthodes

On place l'archive qui contient les sources du noyau dans le répertoire src de votre compte utilisateur, on y extrait le contenu :

$ mkdir ~/src
$ cd ~/src
$ tar -xjvf linux-2.6.xx.tar.bz2

Ensuite, on crée un lien nomé linux pointant vers les sources que l'on vient d'extraire, on se place à l'intérieur :

$ ln -s linux-2.6.xx linux
$ cd linux

Il existe plusieurs façons de procéder à la configuration. Personnellement je préfére le mode console. Sous Debian et Ubuntu il faut installer le packet de développement des librairies ncurses5 :

# apt-get install libncurses5-dev

Et lancer la configuration :

$ make menuconfig

1- Méthode traditionnelle

On crée l'image du noyau :

$ make bzImage

On compile les modules, celà n'est valable que si vous avez configuré des options en module :

$ make modules

Ces deux étapes peuvent être rassemblées en une seule commande :

$ make

Si vous n'avez pas obtenu d'erreur on installe les modules (dans la mesure où des modules ont été compilés) :

# make modules_install

Il ne reste plus qu'à installer le noyau :

# cp arch/i386/boot/bzImage /boot/vmlinuz-2.6.xx
# cp System.map /boot/System.map-2.6.xx
# cp .config /boot/config-2.6.xx

Création de l'Initial RAM Disk :

# mkinitrd -o /boot/initrd-2.6.xx /lib/modules/2.6.xx

Modifier la configuration du gestionnaire d'ammorçage, cas de Grub:

# nano -w /boot/grub/menu.lst

Vous devez mettre une configuration de ce type :

title  Linux 2.6.xx
root   (hd0,0)
kernel /vmlinuz-2.6.xx root=/dev/hda3 ro
initrd /initrd.img-2.6.xx

La ligne initrd... est nécessaire que si vous utilisez un Initial RAM Disk.
Il est conseillé de nettoyer les sources quand on compile le même noyau plus d'une fois :

$ make mrproper

2- Méthode Debian

On va installer les packets kernel-package (qui permet de packager le noyau) et fakeroot, ce qui nous permettra de créer le packet sans être logué en root :

# apt-get install kernel-package fakeroot

Création du packet. Ce packet contiendra l'image du noyau et les modules :

$ fakeroot make-kpkg --append-to-version=«-perso» --revision=2.6.xx kernel_image

Si vous utilisez un Initial RAM Disk ce sera :

$ fakeroot make-kpkg --initrd --append-to-version=«-perso» --revision=2.6.xx kernel_image

Vous pouvez remplacer «-perso» par un mot qui d'écrit plus précisement votre noyau.
Il existe aussi les options kernel_headers et kernel_source qui servent respectivement à créer les packets contenant les fichiers d'entêtes et les sources, celà peut être utile si vous comptez redistribuer votre noyau, par exemple.

Pour finir, vous pouvez installer le(s) packet(s) :

$ cd ..
# dpkg -i kernel-image-2.6.xx-perso_2.6.xx_i386.deb

Et voilà, c'est fini. Le menu.lst de Grub sera mis à jour automatiquement.

On nettoye les sources avec :

$ make-kpkg clean

À Propos de l'initial RAM Disk (initrd)

L'initrd permet de charger les modules nécessairent au montage de la partition root (/). Si vous compilez dans votre noyau les modules qui permettent d'accéder à la partition root alors vous pouvez vous en passer. C'est à dire le support de votre contrôleur de disque (IDE ou SATA), le type de chipset et le système de fichier de votre partition.

En résumé

La phase la plus compliquée reste la configuration du noyau mais une fois que vous aurez fait quelques essais et que vous connaitrez le matériel qui compose votre machine tout ceci ne sera qu'une simple formalité. Vous pouvez consulter la configuration du noyau 2.6.16 que j'utilise.

retour