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