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

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

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

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-quevous-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

Gestion du rseau

Pilotes
Gestion de la mmoire

12

Noyau modulaire (micro-noyau)


Gestion du
rseau

Gestion de la
mmoire

Micro-noyau

Pilotes

13

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/<linuxversion>
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
17
chaque compilation.

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 -1cp 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>
make oldconfig

.config

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

Vous aimerez peut-être aussi