Howtos GNU/Linux .: kozaki :. Howtos GNU/Linux

Guide de Survie sous LinuxXI - Compiler le noyau

Mis à jour le 08/08/2005

Pourquoi ?

Pour faire moderne, pour corriger un trou de sécurité, pour enlever des composants inutiles, pour intégrer des composants de votre machine. La compilation est rarement indispensable d'emblée, car les distributions proposent des noyaux polyvalents avec quasiment tous les modules compilés.
cool Howto complet et FAQ sont développés ici, & aussi le guide détaillé de linux-wizard : en français et avec un grand nombre d'options de compilation détaillées, ce qui n'est pas du luxe pour débiter ;)

Comment ?

Assurez-vous d'avoir une machine apte à compiler (compilateurs et librairies de développement) et installez le source (paquet 'kernel-source' en général) dans /usr/src. Tant que vous y êtes, prenez la dernière version en téléchargeant les patchs.

Pour patcher, vérifiez la version du noyau que vous possédez, et appliquez tous les patchs un par un en suivant l'ordre des numéros. (bzip2 -dc patchXX.bz2|patch -p0).

Assurez-vous de la présence de liens symboliques:
/usr/include/asm -> ../src/linux/include/asm, et /usr/include/linux -> ../src/linux/include/linux

Puis cd /usr/src/linux

Ensuite make menuconfig OU make xconfig selon les goûts et la disponibilité du mode graphique.

astuce avec KDE >= 2.2, il y a un configurateur graphique du noyau infiniment plus ergonomique que xconfig. Il se trouve dans kcontrol.

Le système que vous verrez apparaître possède un certain nombre de pré-réglages, dont beaucoup sont mal adaptés à votre cas. Choisissez les options qui conviennent à votre système. Mettez le maximum de choses en module, sinon kernel too big !... Ne mettez surtout pas en module les choses indispensables au démarrage (par ex. les disques IDE si vous bootez en IDE ou le file system ext2). Acceptez le loadable module support (sinon, les modules ne fonctionneront pas et vous seriez mal barrés).

astuceAstuces :

-Le fichier de config par défaut s'appelle .config et se trouve dans linux/. L'utilisation de ce fichier sans modification a 99 chances sur 100 de vous mener au désastre. Si vous voulez juste mettre votre noyau à jour ou rajouter un module, essayez de trouver le fichier de config qui a été utilisé par votre distribution. Celui de Mandrake se trouve dans /boot/ et se nomme config. Attention Donc en l'utilisant, vous pouvez être presque sûr que votre compil débouchera sur un noyau utilisable.
Si votre noyau a été compilé avec la bonne option, votre fichier de config est accessible dans /proc.
Si vous voulez compiler un noyau de même version que celui que vous avez déjà, pour éviter les conflits et conserver l'ancien, renommez-le (en ajoutant EXTRAVERSION = .2 dans le Makefile, par exemple).
Si votre .config provient d'une ancienne version, faites make oldconfig.

Enregistrez vos paramétrages sous un nom (ex : mon_noyau_version), afin de ne pas tout devoir recommencer en cas d'une simple erreur, ou même pour une version suivante. Puis faites "save and exit".

Ensuite : make, puis make modules_install.
Si votre kernel est trop gros, tentez make bzImage.

attention Si vous recompilez une nouvelle fois la même version du noyau, retirez ou mieux, déplacez l'ancien répertoire de modules (/lib/modules/2.6.x) avant d'installer les nouveaux modules.

Ensuite, une étape fondamentale : prévoir de booter aussi bien avec le nouveau noyau qu'avec l'ancien.
Pour cela, il faut copier le nouveau noyau /usr/src/linux/arch/i386/boot/zImage en /boot/vmlinuz-2.6.xx,
et copier /usr/src/linux/System.map en /boot/System.map-2.6.xx,
puis éditer le fichier de paramètrage du boot (ex : /etc/lilo.conf), copier le paragraphe existant et le coller en dessous en prévoyant un nouveau label (ex : linux_new) qui lancera le nouveau noyau.
À ce moment, tapez lilo (ou chos, ou ce que vous voulez d'autre, ou rien de tout si vous utiliser GRUB...) et il ne vous reste plus qu'à rebooter. Vous verrez apparaître votre nouveau label en plus de l'ancien. Si le boot échoue, rebootez sur l'ancien, et recommencez tout depuis le début...

Les Kernels Alan Cox

Sur votre machine, vous avez certainement un noyau de Linus. Sachez cependant qu'un de ses principaux collègues Alan Cox, développe des modifications quelque peu expérimentales sous forme d'un gros patch qu'on doit appliquer au noyau de Linux de même numéro de version.
Sachez simplement si vous avez besoin d'une fonctionnalité absente du noyau officiel, qu'il vous suffit d'appliquer le patch Alan cox de plus grand numéro correspondant à la version de kernel officiel que vous avez.

Trop cool pour Internet Explorer