GuideLinux.Org

http://www.guidelinux.org/

Compiler le noyau Linux

tuxJe vais vous expliquer pourquoi et comment compiler le noyau Linux. Ceci n'est pas destin� au d�butant mais plut�t � l'utilisateur d�j� � l'aise sous Linux, d�sirant optimiser son syst�me.

Retour � la page d'accueil sur le noyau Linux.

  1. Prudence ! En cas de mauvaise manip, vous risquez de casser votre syst�me (et obtenir un 'kernel panic' au reboot). Si vous n'avez pas d'autres distributions sous la main, il faudra alors reinstaller. Je vous conseille d'avoir une partition /home s�par�e pour �tre � l'abri des catastrophes.
  2. Il n'est pas facile de d�crire ce processus pour toutes les distributions. Si vous voyez des erreurs ou des manques, signalez les svp.

Je consid�re que vous avez lu les articles sur l'installation de softs, sur la console et sur le bootloader. Enfin, sachez vous servir d'un �diteur de texte en mode console. Pr�voyez une ou deux heures la premi�re fois.

Il faut �galement les privil�ges administrateur.


Introduction

Pourquoi compiler ce noyau ? Pour le traduire les sources du noyau en ex�cutable et pour l'adapter � votre mat�riel. Les distributions GNU-Linux lors de l'installation r�alisent ce travail mais p�chent un peu sur l'adaptation (pour �viter que le d�butant ai des choix compliqu� � faire). Vous pourriez alors avoir envie d'optimiser votre syst�me en recompilant un noyau plus proche de votre r�alit�.

Par ailleurs, le noyau Linux est r�vis� plus fr�quemment que votre distribution GNU-Linux. La mise � jour manuelle du noyau est alors tentante, surtout si le nouveau noyau g�re un mat�riel qui est mal ou pas g�r� par l'ancien.

Enfin, vous �tes peut-�tre simplement un(e) passion�(e) qui veut juste s'amuser un peu .

Compiler son noyau (surtout la premi�re fois) n�cessite de la patience et de bien conna�tre son mat�riel (sortez vos manuels : carte m�re notamment). Parler anglais est un atout. Ce n'est pas si compliqu� que �a finalement. En tout cas, compiler un noyau est souvent un passe-temps et rarement une n�cessit�...



Allons-y...

Je ne parlerais dans ce tuto que de la compilation du noyau 2.6.x (pour les noyaux 2.4.x, rendez vous ici).

Pr�-requis

Le pr�requis obligatoire est l'installation des sources du noyau. V�rifiez �galement que le compilateur gcc est pr�sent (faite un $­� which gcc pour vous en assurer, sinon installez le paquetage). Assurez-vous aussi que le lien symbolique /usr/src/linux pointe vers les bonnes versions du noyau :

$­�� ls -l /usr/src

Bash compilera les sources (vous pourriez en avoir plusieurs) contenues dans le dossier vers lequel pointe le lien symbolique /usr/src/linux.

Patch du noyau

Si vous d�sirez appliquer un patch compress� avec gzip (exemple nom.gz) au noyau pour ajouter des fonctionnalit�s, c'est le moment :

# cp /chemin/nom.gz /usr/src/linux
# cd /usr/src/linux
# gunzip nom.gz
# patch -P1 < nom.patch

Je n'ai jamais essay� .

Etape de configuration

C'est la plus longue et la plus complexe. Soyez attentif � ce que vous faites. Il s'agit de g�n�rer un fichier de configuration (/usr/src/linux/.config) que le compilateur utilisera.

Sauf pour les gentooistes qui construisent leur syst�me, vous pourriez utiliser comme base le fichier d�j� fourni par votre distribution (pour b�n�ficier des choix d�j� faits). Il peut aussi se trouver dans /boot/config-2.6.x. O� qu'il soit, faites en une copie de sauvegarde.

Si vous ne trouvez pas ce fichier, tant pis il vous faudra tout passer en revue. Il faut maintenant personnaliser ce fichier. Allons y :


# cd /usr/src/linux
Se place dans le bon dossier

# make xconfig
Pour un param�trage dans X, l'environnement graphique (KDE, Gnome etc.).

# make menuconfig
Alternativement pour un param�trage en dehors de X.

Voici un screenshot suite � un xconfig :


Il s'agit alors de parcourir toutes les options et d'indiquer pour chacune s'il faut les int�grer dans le corps du noyau, en tant que module s�par� appelable ou bien les d�sactiver.

Il vous faut donc bien conna�tre votre mat�riel pour prendre ce qui est n�cessaire et �viter le superflu. Plus vous int�grez des fonctionnalit�s au noyau, plus il sera lourd. Ainsi, si vous n'avez pas de Bluetooth, d�cochez les options Bluetooth. Si vous ins�rez alors du mat�riel Bluetooth, il ne sera pas reconnu : il faudra alors recompiler le noyau en activant les options. La modularit� est un compromis : le module n'alourdit pas le noyau mais reste appellable. Attention, certaines options ne doivent pas �tre mises en module (comme le gestionnaire du syst�me de fichier Ext3, ReiserFS etc.) ! Aidez-vous de la section Help pour savoir quel choix faire, m�me si cette aide est g�n�rale et ne corresponds donc pas forc�ment � votre mat�riel.

Deux commandes peuvent vous aider :
  • lspci (ou lsusb) donne de l'information sur le mat�riel.
  • dmesg vous donne les messages du noyau. Pratique pour savoir comment il r�agit suite � l'insertion de mat�riel.

Prenez donc votre temps, documentez vous. Enfin, enregistrez le fichier en cliquant sur la disquette. Avec 'make menuconfig' il faut choisir 'exit' jusqu'� ce qu'on vous propose de sauver.

Etape de compilation

La suite est plus simple. Faites en console :


# cd /usr/src/linux
# make && make modules_install

Selon la taille du noyau et de la puissance de votre ordi, vous pouvez en avoir pour 5 minutes ou une heure...

Etape d'installation

Installez ensuite le noyau :

# cd /usr/src/linux
# cp arch/votre_architecture/boot/bzImage /boot/nom_du_noyau

Attention, adaptez selon votre architecture de processeur : i386 (32 bits) ou x86_64 (64 bits). Vous avez du aussi param�trer le CPU � l'�tape de configuration du noyau. Le nom du noyau est laiss� � votre convenance mais certaines distributions ont leurs exigences (vmlinuz-version par exemple)...
Il faut bien comprendre que si vous �crasez un noyau (probablement celui qui est en cours de fonctionnement d'ailleurs), il ne sera plus disponible apr�s reboot. Si votre compilation rate, la distribution ne sera plus d�marrable. Il est donc sage de nommer le nouveau noyau autrement


(passage � revoir)

Enfin, certaines distri demandent � faire :

# cp System.map /boot/System.map-2.6.x

Adaptez le nom (2.6.x). V�rifiez que ce nom n'existe pas dans /boot (faites en alors une copie de s�curit�). Faites ensuite ceci (pas n�cessaire pour toutes les distributions):

# cd /boot

# rm vmlinuz
# ln -sf /boot/vmlinuz-2.6.x vmlinuz
# rm System.map
# ln -s System.map-2.6.x System.map


Si votre distribution utilise initrd (Mandriva ou Fedora par exemple) pour d�marrer, tapez en plus :

# mkinitrd -o /boot/initrd-2.6.10 /lib/modules/2.6.x

Adaptez le nom (2.6.x).

Mise � jour du bootloader


En cas d'erreur, il est interressant de pouvoir d�marrer sur l'ancien noyau afin de ne pas �tre bloqu�(e) en lancant le nouveau noyau. Il faut donc modifier votre boot loader (lilo ou grub) en cons�quence. Si vous vous sentez confiant, passez cette �tape, que je vous recommande tout de m�me.

Je n'expliquerai que pour ceux utilisant Grub. Ouvrez le fichier /boot/grub/menu.lst avec les privil�ges administrateurs. Vous devez dupliquer le bloc qui appelle l'ancien noyau et l'adapter. Je vous donne un exemple ci-dessous, mais ne le recopiez pas � l'identique ! Adaptez le....

Avanttitle Linux (2.6.15)
root (hd1,1)
kernel /boot/2.6.15 root=/dev/sda2
initrd (hd0,5)/boot/initrd-2.6.10

Apr�stitle Linux (2.6.15)
root (hd1,1)
kernel /boot/2.6.15 root=/dev/sda2
initrd (hd0,5)/boot/initrd-2.6.15

title Linux (2.6.16)
root (hd1,1)
kernel /boot/2.6.16 root=/dev/sda2
initrd (hd0,5)/boot/initrd-2.6.16

Dans cet exemple, cette partition /boot (sda2) contient deux images de noyau : 2.6.15 et 2.6.16. Ne changent donc que le nom du noyau (la version en fait) et le titre sous lequel il apparaitra dans Grub. Sauvez le fichier, faites une pri�re et red�marrez.

Attention, toutes les distributions n'utilisent pas initrd. Mandriva l'utilise et Gentoo pas, par exemple. Pour ceux qui n'en n'ont pas, enlevez la ligne initrd.


R�parer les b�tises

J'esp�re que vous fait une copie de s�curit� de tous les fichiers pour que Grub puisse d�marrer l'ancien noyau. Recommencez alors la compilation... Vous pouvez aussi monter la partition racine probl�matique dans une autre distribution Linux (voire un CD-live) et recommencer le boulot.

Avec un Cd-live ou une autre distri, tout s'arrangera : la r�installation n'est pas n�cessaire si vous savez quoi faire. Si vous ne savez pas, il est s�rement plus rapide de r�installer la distribution que d'attendre 3 jours sur un forum. Le crucial /home ne devrait pas �tre r�-initialis� (surtout si /home est situ� sur une partition dedi�).


Liens externes

Voici quelques tutoriels en fran�ais tr�s bien fait :
  • lea-linux
  • HOWTO du noyau Linux
  • Tuto Mepis
  • Tuto Gentoo (adaptable).
  • Tuto de Trustonme.net
  • tutoriel sur un site perso