Vous êtes sur la page 1sur 34

Configurer, Compiler et

Installer un noyau Linux


personnalis
Elies Jebri
Ai-je besoin d'un nouveau noyau ?
Vous avez besoin d'un nouveau noyau si :
Vous avez un matriel dont le support a t ajout dans une nouvelle
version du noyau
Un trou de scurit a t dcouvert dans le noyau actuel, ce
problme tant rgl dans une nouvelle version
Vous voulez absolument avoir la dernire version possible

2
Ai-je besoin de recompiler le noyau ?
Vous avez besoin de recompiler votre noyau si :

vous voulez optimiser votre systme
vous voulez tester des fonctionnalits encore au stade exprimental
vous avez l'me d'un aventurier, c'est votre premire compilation
comme tout bon Geek, vous aimez compiler votre kernel ;o)

Dans la plupart des cas, vous n'avez PAS besoin de recompiler votre
kernel.

3
Notions de base
4
Version du noyau
Comment fonctionne la notation du kernel linux ?
La <version> d'un noyau linux est forme d'une suite de 3 ou 4
nombres sous la forme suivante : 2.6.x ou 2.6.x.y.
2 : Numro de version majeure du noyau. Le nombre correspond la
gnration du noyau.
6 : Numro de version mineure du noyau.
x : Numro de rvision du noyau.
y : Numro de patch level du noyau.
Exemple : 2.6.22.1


5
Quels patchs appliquer quelle
version ?
Un patch noyau va mettre jour le code source seulement d'une version spcifique du noyau une
autre version spcifique.

Voici comment les diffrents patchs peuvent tre appliqus :
Les patchs pour noyau stable s'appliquent sur une version de base du noyau.
Exemple : Le patch 2.6.21.10 s'applique uniquement sur une version 2.6.21.
Un 2.6.21.10 ne s'applique pas sur une version 2.6.21.9, ou sur tout autre version.
Les patchs pour noyau de base s'appliquent seulement sur la version prcdente de version de
base du noyau.
Exemple : Le patch 2.6.23 s'applique seulement sur la version 2.6.22 du noyau. Il ne s'applique pas
sur une version 2.6.22.y, ou sur tout autre version.
Les patchs incrmentaux mettent jour une version spcifique vers une autre version spcifique.
Exemple : Le patch 2.6.22.10-11 s'applique sur une version 2.6.22-10 uniquement pour obtenir une
version 2.6.22.11
6
Noyau 3.x (stable/EOL, mainline, End
of Life, longterm)
Les noyaux se dplacent de la catgorie "mainline" "stable",
deux choses peuvent se produire:
Ils peuvent atteindre "End of life" aprs quelques bugsfix, ce qui signifie que
les responsables du noyau ne publieront plus de corrections de bugs pour
cette version du noyau, ou
Ils peuvent tre mis en maintenance "longterm", ce qui signifie que les
responsables fournissent des corrections de bugs pour cette rvision de
noyau pour une priode de temps beaucoup plus longue.
7
Patcher linux-3.X
Vous pouvez galement mettre jour entre les versions 3.x par patch.
Les patchs sont distribus dans le format classique gzip ou bzip2
Pour installer en patchant, rcuprer tous les fichiers de patch plus rcents,
entrez dans le rpertoire de haut niveau des sources du noyau (linux-3.X)
et excuter :
gzip -cd ../patch-3.x.gz | patch -p1
Ou
bzip2 -dc ../patch-3.x.bz2 | patch -p1
Remplacez "x" pour toutes les versions plus grandes que la version "X" de
votre arbre source courant, dans lordre.
8
Patcher linux-3.X.Y
Contrairement aux patchs pour les noyaux 3.x, les patchs pour les
noyaux 3.x.y (aussi connus comme les noyaux-stables) ne sont pas
incrmentaux mais s'appliquent directement au noyau 3.x de base.
Par exemple, si le noyau de base est le 3.0 et que vous voulez
appliquer le patch 3.0.3, vous ne devez pas appliquer d'abord les
patchs 3.0.1 et 3.0.2.
De mme, si vous utilisez la version du noyau 3.0.2 et que vous
souhaitez passer 3.0.3, vous devez d'abord inverser le patch 3.0.2
(soit patch -R) avant l'application du patch 3.0.3.
9
Qu'est ce qu'un kernel "vanilla" ?
Vanilla est le nom pour quelque chose qui ne contient aucun patch,
modifications ou autres extras ce-que-vous-voulez.
Dans le monde logiciel, vanilla signifie donc usuellement le "package
original".
Dans le cas du noyau Linux, c'est une rfrence au noyau officiel,
disponible sur www.kernel.org
10
Noyau et modules
Il y a typiquement 2 voies pour intgrer un driver dans votre systme :
le driver peut tre compil directement dans le noyau (compilation en dur).
Un tel noyau (en une pice) est appel un noyau monolithique. Quelques drivers n'existent
que sous cette forme.
le driver peut tre charg dans le noyau la demande.
Dans ce cas, le noyau est appel noyau modulaire.
Ceci l'avantage que seuls les drivers rellement requis par le systme sont chargs et que le
noyau ne contient rien qui ne soit pas ncessaire.
Le noyau Linux est modulaire la plupart du temps (sauf pour des kernels
embarqus), mais de nombreux drivers et fonctions sont intgres au noyau.
Le choix des drivers qui doivent tre compils dans le noyau et ceux qui doivent
tre chargs la demande est dfinit par la configuration du noyau.
11
Noyau monolithique
12
Gestion du rseau
Pilotes
Gestion de la mmoire
Noyau modulaire (micro-noyau)
13
Gestion du
rseau
Gestion de la
mmoire
Pilotes
Micro-noyau
Quels drivers compiler dans le noyau, et
lesquels doivent tre compils comme
modules ?
Basiquement, les composants non requis pour le dmarrage du
systme doivent tre compils comme modules.
Ceci assure que le kernel ne devient pas trop gros et ne puisse tre
charg par le BIOS ou par un chargeur de dmarrage.
Aussi, intgrer le driver ou la fonction dans le noyau le rend (en
thorie) plus stable et plus scuris.
Exemple : Les drivers pour ext3, SCSI sur les systmes bass sur SCSI et
les drivers similaires devraient tre compils dans le noyau. En
contraste, les autres, comme isofs, msdos, ou le son, qui ne sont pas
requis pour le dmarrage du systme, devraient tre compils comme
modules.

14
Quels drivers compiler dans le noyau, et
lesquels doivent tre compils comme
modules ?
Mais notez que ce n'est pas forcment une rgle stricte respecter.
Les drivers scsi ne sont pas forcment intgrs au noyau.
Il faut alors que le ramdisk intgre les drivers et que le noyau les
monte tout de suite aprs.
Idemmement, les drivers son peuvent tre intgrs au noyau sans
problme.
C'est mme obligatoire pour certaines cartes.
Le problme est que s'il y a des mises jour d'alsa par exemple, il faut
recompiler le noyau, alors qu'une mise jour du modules
correspondants est plus rapide.
15
O sont situs tous ces fichiers ?
Les sources du noyau sont situs dans /usr/src/<linux-version>
Il y a galement un lien symbolique /usr/src/linux/ qui pointe vers ce
rpertoire.
Le noyau est situ dans le repertoire /boot/
Les modules noyau sont situs dans /lib/modules/<version>/

16
Quels fichiers composent le noyau ?
Le noyau est compos de 3 parties :
vmlinuz est l'image du noyau - le fichier qui contient le noyau.
System.map est le fichier qui contient les symboles noyau requis par
les modules pour assurer le lancement avec succs des fonctions du
noyau.
initrd - initial ram disk - est un fichier qui charge les drivers compils
en modules ncessaire au dmarrage du noyau.
Ces trois fichiers sont dpendants et chacun est regnr chaque
compilation.

17
Installation des sources
18
Pr-requis
Veillez ce que ces packages soient installs :
les outils de dveloppement noyau. Les packages ncurses, ncurses-
dev, automake, autoconf, Qt3 (pour la configuration graphique) sont
requis. Les autres sont des dpendances.
les sources du noyau, jour si possible.
Yum -y install ncurses-devel
Yum -y install qt3-devel libXi-devel gcc-c++

19
Installation des sources
Vous trouverez sur Kernel.org, toutes les sources des noyaux actuels,
prcdents ou en dveloppement.
linux-<version>.tar.gz ou linux-<version>.tar.bz2 contient toutes les
sources du noyau.
patch-<version>.tar.gz ou patch-<version>.tar.bz2 contient la mise
jour des sources du noyau.
cp archive /usr/src/
tar x[jJz]f linux-<version>.tar.{bz2,xz,gz}
ln -s /usr/src/linux-<version> /usr/src/linux


20
Exemple -1-
cp linux-3.11.8.tar.xz /usr/src/
cp patch-3.11.8.xz
cp patch-3.11.9.xz
cd /usr/src/
tar xJf linux-3.11.8.tar.xz
unxz patch-3.11.8.xz
unxz patch-3.11.9.xz
rm -f patch-3.11.8.xz patch-3.11.9.xz linux-3.11.8.tar.xz





21
Exemple -2-
Renverser les sources
cd /usr/src/linux/
make kernelversion
3.11.8
patch -p1 -R < ../patch-3.11.8
make kernelversion
3.11.0


22
Exemple -3-
cd /usr/src/linux/
patch -p1 < ../patch-3.11.9
make kernelversion
3.11.9
head -5 Makefile
cd /usr/src/
mv linux-3.11.8/ linux-3.11.9/
ln -s -f linux-3.11.9 linux


23
Astuces pour mettre le noyau jour
La plupart des linuxiens se servent de patch uniquement pour le noyau.
La mthode la plus simple consiste utiliser le script shell patch-kernel , situ
dans le rpertoire /script des sources du noyau.
Le script suppose que les sources sont places dans /usr/src/linux, et que le patch
est situ dans le rpertoire courant.
Ces deux choix par dfaut peuvent tre modifis par des options sur la ligne de
commande :
patch-kernel [rpertoire des sources] [rpertoire du patch]
24
Compilation
25
Nettoyage
Cette tape peut s'appliquer dans le cas o vous avez dj des
sources compiles dans le dossier /usr/src/linux/.
Elle s'utilise principalement lorsque vous avez modifi plusieurs fois
votre configuration et que vous avez pass certains modules dans le
kernel.
En effet, il peut tre parfois utile de supprimer les fichiers compils de
l'arborescence des sources avant de commencer la procdure de
compilation.
Il existe plusieurs commande pour effectuer cette tape de
nettoyage.

26
Nettoyage
Nettoyage des fichiers compils (ne laisser que les sources) :
[root@linux /usr/src/linux]# make clean
Pour supprimer galement la configuraiton :
[root@linux /usr/src/linux]# make mrproper
Uniquement pour les anciens noyaux (2.4.x) :
[root@linux /usr/src/linux]# make dep

27
Rcupration de la configuration
cd /usr/src/linux/
cp /boot/config-<version-actuelle> .config
make oldconfig
Valeur par dfaut toutes les questions en fonction du contenu de votre fichier
.config existant. Et poser des questions sur les nouveaux symboles de
configuration.
28
Configuration
Dans le rpertoire des sources :
[root@linux /usr/src/linux]# make menuconfig
Se dplacer dans les menus et activer les fonctionnalits voulues avec
la touche espace
* : fonctionnalit en dur
M : fonctionnalit en module
On sauvegarde la configuration en faisant exit

29
Configuration
30
Autres mthodes de configuration :
Poser une question pour chaque fonctionnalit en mode texte :
[root@linux /usr/src/linux]# make config
propose une longue suite de questions-rponses (y/n/m)
Lancer un menu fonctionnant sous X :
[root@linux /usr/src/linux]# make xconfig
propose une configuration en mode graphique (Qt)
[root@linux /usr/src/linux]# make gconfig
propose une configuration en mode graphique (GTK)

31
Compilation
32
Compilation manuelle
Passons la compilation du noyau et des modules proprement dite.
Soyez patient durant cette tape, la compilation du noyau peut
prendre du temps, selon la configuration choisie et votre matriel.

cd /usr/src/linux/
make
33
Installation manuelle
Maintenant, les modules compils doivent tre installs.
[root@linux /usr/src/linux]# make modules_install

Aprs que le noyau soit compil, il doit tre install pour que le
systme puisse booter dessus.
[root@linux /usr/src/linux]# make install

34