| - 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.
- 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.
IntroductionPourquoi 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....
Avant | title Linux (2.6.15) root (hd1,1) kernel /boot/2.6.15 root=/dev/sda2 initrd (hd0,5)/boot/initrd-2.6.10 |
|
Apr�s | title 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