Cet article a pour but de présenter la compilation du noyau (ou kernel) sous Linux.
Les explications suivantes sont basées sur la version 2.4.20 du kernel, la dernière en date au moment de l'écriture de l'article (mars 2003).
Les sources de la dernière version sont disponibles au téléchargement sur http://www.kernel.org.
Les sources "pèsent" entre 25 et 30 Mo.
Une fois les sources récupérées, vous vous retrouvez avec un fichier tar.bz2 ou tar.gz suivant le cas.
Copiez-le dans le répertoire /usr/src/ de votre machine Linux, mais ne le décompressez pas tout de suite.
Dans ce répertoire en question, tapez la commande suivante:
castor@linuxbox:/usr/src$ ls -al total 8 drwxrwsr-x 2 root src 4096 Feb 8 2002 . drwxr-xr-x 13 root root 4096 May 1 1980 .. lrwxrwxrwx 1 root src 12 Feb 25 15:39 linux -> linux-2.4.18 drwxr-sr-x 2 root src 4096 Feb 25 15:38 linux-2.4.18 -rw-r--r-- 1 root root 27421046 Feb 25 15:37 linux-2.4.20.tar.bz2 castor@linuxbox:/usr/src$
Le résultat peut différer sur votre machine.
La première chose à faire est de supprimer le lien symbolique linux avec la commande rm linux.
Ensuite il s'agit de décompresser le tarball récupéré précédemment. Prévoyez de la place, les sources décompréssées avoisinent les 200 Mo !!
Puis nous créons un lien symbolique linux pointant vers le nouveau répertoire.
Suivant le cas, le répertoire dans lequel se trouvent les sources décompréssées s'appelle
déjà linux, il convient donc de le renommer avec la commande mv linux linux-2.4.20.
root@linuxbox:/usr/src# rm linux rm: remove `linux'? y root@linuxbox:/usr/src# tar -xjf linux-2.4.20.tar.bz2 root@linuxbox:/usr/src# ln -s linux-2.4.20 linux root@linuxbox:/usr/src# ls -hal total 27M drwxrwsr-x 4 root src 4.0k Feb 25 15:49 . drwxr-xr-x 13 root root 4.0k May 1 1980 .. lrwxrwxrwx 1 root src 12 Feb 25 15:49 linux -> linux-2.4.20 drwxr-sr-x 2 root src 4.0k Feb 15 15:38 linux-2.4.18 drwxr-xr-x 14 root src 4.0k Nov 29 00:53 linux-2.4.20 -rw-r--r-- 1 root src 26M Feb 25 15:37 linux-2.4.20.tar.bz2 root@linuxbox:/usr/src#
Le noyau Linux est "modulaire", c'est-à-dire que certaines options, définies comme "modules",
ne seront chargées qu'au moment voulu par le noyau. Cela permet d'économiser de la mémoire,
au détriment de la rapidité de chargement. Par exemple, si vous imprimez une page tous les
six mois, il est inutile de garder en permanence dans la mémoire les pilotes d'impression (port parrallèle, imprimante, etc.).
Ceux-ci ne seront chargés que lorsque l'utilisateur voudra imprimer.
Il est donc important avant de s'attaquer à la configuration du kernel de bien connaître l'utilisation que l'on désire faire de la machine sous Linux.
Il existe trois commandes pour configurer les sources: make config, make menuconfig et make xconfig.
Les deux premières sont en mode texte, la troisième nécessite le système X-window.
Le choix vous appartient, les trois sont totalement équivalentes. Seule la première est un peu plus contraignante car elle oblige à passer en revue l'intégralité des options.
En ce qui me concerne, ma préférence se porte sur make menuconfig.
root@linuxbox:/usr/src/linux# make menuconfig ( cd include ; ln -sf asm-i386 asm) make -C scripts/lxdialog all make[1]: Entering directory `/usr/src/linux-2.4.20/scripts/lxdialog' gcc -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -DLOCALE -DCURSES_LOC="<ncurses.h>" -c -o checklist.o checklist.c gcc -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -DLOCALE -DCURSES_LOC="<ncurses.h>" -c -o menubox.o menubox.c gcc -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -DLOCALE -DCURSES_LOC="<ncurses.h>" -c -o textbox.o textbox.c gcc -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -DLOCALE -DCURSES_LOC="<ncurses.h>" -c -o yesno.o yesno.c gcc -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -DLOCALE -DCURSES_LOC="<ncurses.h>" -c -o inputbox.o inputbox.c gcc -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -DLOCALE -DCURSES_LOC="<ncurses.h>" -c -o util.o util.c gcc -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -DLOCALE -DCURSES_LOC="<ncurses.h>" -c -o lxdialog.o lxdialog.c gcc -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -DLOCALE -DCURSES_LOC="<ncurses.h>" -c -o msgbox.o msgbox.c gcc -o lxdialog checklist.o menubox.o textbox.o yesno.o inputbox.o util.o lxdialog.o msgbox.o -lncurses ...
Il est fortement conseillé de lire l'aide en ligne pour chaque option.
Les indications qui suivent peuvent varier suivant la version du kernel et les options choisies précédement.
/dev/cpu/microcode - Intel IA32 CPU microcode support /dev/cpu/*/msr - Model-specific register support /dev/cpu/*/cpuid - CPU information supportCes trois options peuvent être mises sans danger, elles peuvent optimiser la gestion du processeur.