Le kernel est la base du système, il existe sous toutes les plateformes et permet de savoir également au système de quoi il est composé.Vous devez être sûr de savoir à quoi sert la recompilation avant de la lancer. Les dernières versions de linux tendent à éviter les recompilations, qui sont souvent lancées juste pour rajouter une option à votre système (le ppp ou encore la gestion du plug&pray)
La recompilation de kernel peut seffectuer de deux façons : en choisissant par modules ou directement lancés dans le kernel, je suis pour la seconde option, je compresse ensuite limage que je crée. Les modules sont souvent plus avantageux car peuvent être chargés comme déchargés de la mémoire.
Vous devez avoir une bonne connaissance des options du kernel avant de le recompiler, cela peut entraîner un blocage complet de votre config en cas de mauvaise recompilation.
Reconnaissons quil est quand même plus facile de récupérer un fichier de 2 MO maximum au lieu du kernel complet à chaque modification. Vous pouvez donc récuperer un patch qui peut se retrouver dans plusieurs formats. Récuperez un fichier au format .gz.bz2, ce sont en general les plus faciles à traiter. Recopiez le ensuite dans /usr/src/ puis faîtes un : bzip2 -d patch.gz.bz2 puis lancez le patch par gzip -cd patch.gz |patch -p0. Cest la même procédure si vous avez des patches à appliquer pour des nouvelles fonctionnalités du kernel (comme pour le DVD par exemple). Vous devez ensuite suivre la procédure de recompilation en précisant vos options par : /usr/src/linux/make xconfig puis la recompilation comme décris plus bas.
Jai pour habitude de préparer mon kernel et de le recompiler sour interface X car je trouve cela plus convivial. Pour ce faire, démarrez votre X favori. Ouvre ensuite une fenêtre xterm et allez dans le répertoire /usr/src/linux si vous avez déjà votre kernel installé, sinon, vous pouvez en prendre un chez kernel.org et le copier dans le répertoire /usr/src (il est généralement sous la forme tar.gz). Supprimez ensuite le répertoire modules qui se trouve dans /lib puis allez dans dans le répertoire /usr/src et supprimez tous les sous répertoires. Décompactez votre kernel ensuite (taper dabord gunzip nom_du_kernel.tar.gz puis tar xvf nom_du_kernel.tar). allez ensuite dans le répertoire linux qui vient dêtre créé. Tapez à lintérieur : make xconfig & qui va lancer loutil de configuration graphique X du kernel. Un tableau apparaît alors avec toutes les options que vous pouvez compiler. Soyez très prudent tout ce qui touche à la configuration du système.
Vous pouvez ensuite rentrer au point par point dans les options de configuration. Cliquez sur aide dans la ligne correspondante si vous ne savez pas à quoi correspond cette option. Dans le désordre, nactivez pas le Plug & Pray car je le trouve instable. Les systèmes de fichiers peuvent être placés en module pour réduire le kernel. Pour ce qui est des options internet, noubliez pas dindiquer que vous voulez utiliser ppp qui se trouve dans networks car sinon, pas de connexion !
Après avoir terminé avec les options du kernel, il ne vous reste plus quà le sauver voire à lenregistrer sur disque (si vous avez plusieurs machines en réseau qui ont la même configuration, faites-le !). Vous pouvez alors lancer la compilation du kernel en scandant ces commandes : make dep ; make clean ; make zImage (la premiere make dep permet de créer les dépendances du système, la seconde nettoie les fichiers inutiles et la troisième recompile un kernel avec de nouvelles options.
Si la recompilation sarrête avec une erreur du type : kernel is too big, retapez simplement les trois même commande sauf pour la dernière qui sera : make bzImage qui crée un boot compressé. Pour toute autre erreur, cela peut être du à des versions de librairies plus à jour ou à un kernel défectueux. Essayer dans ce cas de vérifier que vous navez pas un kernel plus récent disponible et recommencer toute lopération depuis le début de cette page.
Il faut maintenant aller chercher le boot pour le recopier. Allez dans le répertoire /usr/src/linux/arch/i386/boot (pour les possesseurs de x86 : i386, pour les alphaistes : alpha etc ....) et tapez la commande cp zImage /boot/vmlinuz-236 (cette commande recopie le nouveau kernel dans le répertoire de boot de linux et renomme ce kernel en vmlinuz-236, on met couramment la version de kernel à la fin pour les distinguer :). Créez ensuite un lien symbolique en tapant : ln -s vmlinuz vmlinuz-236 (le premier nom est le liens que lon crée).
Allez ensuite dans le répertoire /etc et éditez le fichier lilo.conf (celui qui contient les renseignements pour que lilo amorce votre linux) en tapant : vi lilo.conf (si vous ne connaissez pas vi, faîtes un man pour avoir laide en ligne). Vous devez recopier la section qui sappelle boot en changeant quelques valeurs. Votre lilo.conf devrait ressembler à ca :
boot=/dev/sda2
map=/boot/map
install=/boot/boot.b
prompt
timeout=50
default=linux
image=/boot/vmlinuz-2.2.5-15
label=linux
root=/dev/sda2
initrd=/boot/initrd-2.2.5-15.img
read-only
other=/dev/sda1
label=dos
table=/dev/sda
Remplacez le par cà :
boot=/dev/sda2
map=/boot/map
install=/boot/boot.b
prompt
timeout=50
default=linux
image=/boot/vmlinuz
label=linux
root=/dev/sda2
read-only
image=/boot/vmlinuz-2.25-15
label=old
root=/dev/sda2
initrd=/boot/initrd-2.2.5-15.img
read-only
other=/dev/sda1
label=dos
table=/dev/sda
Les zones en gras indiquent les changements effectués dans le fichier de config, nous avons lié le boot vers un raccourci (vmlinuz) qui sera pris en compte si vous tapez linux en démarrant, nous avons également conservé le kernel actuel en le renommant old, cela permet de booter en cas derreur de paramétrage. Vous devez ensuite sauver lilo et le reconfigurer en tapant : lilo, il devrait vous indiquer que tout sest bien passé (quelques problèmes peuvent être rencontrés pour des personnes ayant des zip internes, consultez la doc).
Vous devez ensuite prendre en compte les modules (personnellement jen utilise peu et privilégie un kernel compressé (à part pour les systèmes de fichiers). Rappellez vous que nous avons supprimé le répertoire modules dans /lib, il faut maintenant recréer le tout en scandant : make modules ; make modules_install et vous devez bien sûr être dans /usr/src/linux pour ce faire.
Pour ceux qui désirent booter sur une disquette (comme moi :) vous devez recopier le contenu du kernel sur une disquette vierge. Formatez une disquette au format linux en tapant : fdformat /dev/fd0H1440 ce qui la formattera en 1.44 MO puis allez dans le répertoire /boot. Vous cherchez à recopier le dernier kernel créé qui dans notre exemple sappelle vmlinuz-236. Tapez donc : cat vmlinuz-236 > /dev/fd0 ce qui va rendre votre disquette amorçable avec le nouveau kernel :) Noubliez pas en dernière étape de recopier le System.map qui se trouve dans votre nouveau kernel /usr/src/linux afin de le placer dans /boot.
Redémarrez votre linux en mettant votre nouvelle disquette si vous avez créé une disquette, sinon, tapez linux à linvite. En cas de problème, il vous suffit de taper old et vous voilà revenu dans votre ancien kernel :) Consultez la liste de liens pour allez sur des sites internet qui vous permettra de savoir quels sont les derniers bugs & dernières mises à jour disponibles.