Skip to main content

Historique: Tuto Compiler un noyau Temps-Réel

Aperçu de cette version: 151

! Documentation amliorer
R-criture en cours sur le brouillon compiler un noyau linux 3.x pour la mao
voir aussi le fil du forum li

Avant propos :
Cette documentation, peut-tre plus concrte que la prcdente, vous guidera pas--pas dans la compilation d'un noyau temps rel.




Pour une prsentation de ce qu'est le noyau Temps-Rel, vous pouvez aller lire sa page ddie : Le noyau Temps-Rel.

Vous le comprenez, compiler et changer un noyau n'est pas sans risque : en cas d'erreur, votre systme refusera de dmarrer.
Il vous faudra aussi surement trifouiller un petit moment dans la configuration du noyau. Vous tes donc prvenus ! Ce mini guide s'adresse aux utilisateurs avancs qui souhaitent tester de nouvelles choses et personnaliser un maximum leur systme !


L'idal sera donc de faire en sorte que l'image rsultant de la compilation ne remplace pas celle par laquelle vous dmarrez habituellement, faisant de ce noyau RT un noyau secondaire, et de votre noyau habituel une roue de secours en cas de compilation infructueuse.

Il vous sera propos ici d'autres options permettant galement d'accrotre les performances de votre systme (optimisation en fonction de votre processeur, dsactivation des options inutiles voire prjudiciables, etc.).

Il vous faudra donc installer les sources du noyau (et non le noyau lui-mme) de votre choix pour pouvoir le configurer votre guise.

Canal IRC d'aide : #linux-rt sur freenode.net

Le temps rel, explication chez fedora trs intressante : http://doc.fedora-fr.org/wiki/Fedora_et_le_Temps_Rel

2. Choix du noyau

La plupart des distributions offrent un noyau qu'elles ont patch pour lui attribuer de nouvelles fonctionnalits ("fbsplash" par ex, qui vous affiche un bel cran de bienvenue au dmarrage de l'ordinateur...). Cependant, s'il ne s'agit pas d'une distribution spcialise, il est peu probable que le patch "realtime preemption" (patch RT) ait t appliqu.
Par contre, certaines vous proposent d'autres versions de noyau, dont des versions dj "patches-RT", ou "lowlatency" : ce qui vous conomisera l'tape "patchage du noyau".
Pour Mandriva, vous pouvez utiliser le noyau standard qui a le mrite d'avoir un timer 1000Hz mais qui est en mode 'voluntary preemtion'. Les noyaux multimedia ont t abandonns depuis la version 2008.1. Le kernel-desktop fonctionne trs bien avec des latences jack autour de 10ms tout en incluant un grand support matriel, et il est prfrer au kernel-laptop. Mandriva inclut galement un noyau avec realtime preemption active : ce sont les paquets kernel-rt. Ces noyaux sont des noyaux vanilla avec comme seul patch appliqu le patch rt. Il peut s'avrer problmatique avec certains composants matriels. Note : le mtapaquet "kernel-...-latest" permet de garder jour le dernier kernel disponible, et chaque mise jour l'ancien noyau reste bootable jusqu' sa dsinstallation. C'est trs confortable et sr. Nanmoins, pour une vraie et complte utilisation MAO, nous vous recommandons de prendre le kernel vanilla et de le patcher en suivant les explications de cette page ( noter que la page Mandriva prsente le patch sur un noyau 2.6.17)
Vous avez donc les choix suivants :
  • Installation des sources du noyau ("kernel-sources") fourni par votre distribution auquel vous appliquerez le "patch RT". Pour connatre la version du noyau que vous utilisez et installer les sources correspondantes, entrez la commande "uname -r" dans un terminal. Cette solution est privilgier car elle vous permettra de conserver les patchs dj appliqus sur votre distribution (pas loin de 180 patchs pour Ubuntu par exemple ❗. Certains noyaux tant trop diffrents des sources d'origines, des erreurs peuvent cependant apparatre lors de l'application du patch RT. Il faut alors se rabattre sur les "vanilla-sources".
  • Installation des sources d'un noyau dj patch "RT" fourni par votre distribution. Il s'agit par exemple pour Gentoo des "rt-sources", etc.
  • Installation des "vanilla-sources". Il s'agit des sources telles qu'elles sont livres par les dveloppeurs du noyau. Disponibles ici : http://www.kernel.org/. Choisir la dernire version stable ! Cette solution sera privilgie notamment si vous rencontrez des difficults pour patcher le noyau de votre distribution, ou si elle ne vous fournit pas de noyau dj patch "RT".



3. Installation des sources

Utilisez le gestionnaire de paquets de votre distribution. Exemple sous Gentoo:
Copy to clipboard
emerge rt-sources

etc.

Pour les "vanilla-sources", placez-vous dans le rpertoire "/usr/src" (en "root"), tlchargez les sources et dcompressez-les. Exemple avec le noyau 2.6.31.12 (dernire version stable le 17/06/09; vrifier s'il existe une version plus rcente) :
Copy to clipboard
cd /usr/src wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.31.12.tar.bz2 tar -jxf linux-2.6.31.12.tar.bz2


Vous devrez galement crer, toujours dans le rpertoire "/usr/src", un lien symbolique nomm "linux" et pointant vers les sources que vous venez d'installer. Exemple :
Copy to clipboard
ln -sf linux-2.6.31.12 linux


Enfin, si vous voulez recompilez des sources dj installes, sauvegarder le fichier de configuration (/usr/src/linux/.config) et faites un peu de mnage :
Copy to clipboard
cd /usr/src/linux make clean




4. "Patchage" du noyau


4.1. Principe

Cette tape n'est indispensable que si vous n'utilisez pas un noyau dj patch RT.
Le "patch RT" tait dvelopp par Ingo Molnar, un des dveloppeurs du noyau.
Maintenant, c'est Thomas Gleixner qui s'en occupe (aprs Steven Rostedt).
Il est disponible ici

➡️ Le patch RT est susceptible de faire bugger quelques programmes assez importants dpendant du noyau comme HAL (programme vitant de passer en root pour monter les cls usb), et bien sr les drivers ATI pour ceux qui ne sont pas encore pass nvidia 😂. Sur des distributions comme gentoo o l'on compile son noyau soi-mme, il est FORTEMENT recommand de faire une sauvegarde des sources de votre noyau avant de l'appliquer !!!

Il convient de choisir une version correspondant aux sources que vous venez d'installer. vitez par exemple d'utiliser un patch prvu pour un noyau 2.6.29 sur un noyau 2.6.30 !!
Ainsi, "patch-2.6.31.12-rt21" signifie patch version 21 (oui, son auteur le modifie souvent) applicable sur un noyau 2.6.31.12.


4.2. Exemple

Tlchargez donc le bon patch et placez-le dans le rpertoire "/usr/src".
Vrifiez aussi la prsence du lien symbolique "linux" pointant sur les sources que vous souhaitez patcher (voir ci-dessus). La dernire version stable est la version "2.6.31.12-rt21".
Tlcharger le patch :
Copy to clipboard
cd /usr/src wget http://www.kernel.org/pub/linux/kernel/projects/rt/patch-2.6.31.12-rt21.bz2


Tester si le patch fonctionne :
Copy to clipboard
cd /usr/src/linux bzcat ../patch-2.6.31.12-rt21.bz2 | patch -p1 --dry-run


Si le test se passe bien, appliquer le patch pour de bon :
Copy to clipboard
bzcat ../patch-2.6.31.12-rt21.bz2 | patch -p1


Vous obtiendrez sans doute des alertes ("warnings") sans trop d'importance. Par contre, si le patch refuse de s'appliquer, installez les vanilla-sources, vrifiez les versions (noyau/patch) et recommencez !


Nous allons ensuite renommer le rpertoire de ces sources modifies pour bien les reprer (facultatif). Puisque dans notre exemple prcdent nous avons appliqu le patch "rt21" au noyau 2.6.31.12, nous renommerons ces sources "2.6.31.12-rt21" (c'est original 😉)
Ne pas oublier de modifier galement le lien symbolique :
Copy to clipboard
cd /usr/src/ mv linux-2.6.31.12 linux-2.6.31.12-rt21 ln -sf linux-2.6.31.12-rt21 linux




5. Configuration


5.1. Le principe

Il est plus rapide de rcuprer la configuration du noyau que vous utilisez, puis de l'affiner, c'est dire enlever tout ce qui n'est pas indispensable en laissant tout ce qui est ncessaire !
Regardez si vous disposez d'un fichier nomm ".config" soit dans le rpertoire "/boot", soit dans le rpertoire "/usr/src/linux-2.x.x" d'un noyau prcdemment install.
Enfin, il est possible de trouver une sauvegarde de cette configuration dans /proc/config.gz. Utiliser la commande "make oldconfig" pour la rcuprer :
Copy to clipboard
cd /usr/src/linux gunzip -c /proc/config.gz > .config make oldconfig


Pour configurer le noyau en mode "graphique", utilisez la commande :
Copy to clipboard
cd /usr/src/linux make xconfig

ou
Copy to clipboard
make menuconfig


Selon votre matriel, il faudra adapter votre fichier de configuration, aussi il n'est pas possible de donner un modle utilisable par tous ! La commande "lspci -v" (lspcidrake -v sur Mandriva ) vous donnera des renseignements indispensables sur votre matriel, pour pouvoir en activer le support dans le noyau.
Il est conseill de compiler "en dur" tout ce qui est ncessaire au dmarrage de l'ordinateur (accs la partition qui comporte votre systme en particulier).
Le reste peut facilement tre plac en module. Le fichier "/etc/modprobe.conf" vous permettra de choisir les modules charger automatiquement au dmarrage de la machine.

N' oubliez pas d'diter le MakeFile afin de changer le nom du noyau qui va tre crer, si vous souhaitez utiliser les mmes sources pour compiler divers noyaux.

[+]

5.3. 💡 Pour aller plus loin...

Voici une documentation trs complete et trs bien explique sur la configuration des diffrents modules du noyau.
Je vous recommande les sections 8 et 9 pour toutes questions spcifiques au matriel (pci, disque dur, usb, firewire, etc.). Ainsi vous pourrez vous faire une config au poil.

http://www.linuxtopia.org/online_books/linux_kernel/kernel_configuration/index.html

6. Compilation et Installation du noyau


Sauvegardez votre configuration et lancez la compilation :
Copy to clipboard
make && make modules_install

En cas d'erreur, regarder le module qui pose problme et dsactivez-le s'il n'est pas ncessaire. Si tout s'est bien pass, installez votre nouveau noyau.
Copy to clipboard
cp arch/i386/boot/bzImage /boot/VOTRE_NOUVEAU_NOYAU

note : donnez lui le nom qui vous arrange, mais vitez de lui donner le mme nom que le noyau sur lequel vous tes, afin que ce dernier vous serve de roue de secours si le noyau RT refuse de dmarrer
Copy to clipboard
cp System.map /boot/VOTRE_SYSTEM.MAP (IDEM) cp .config /boot/VOTRE_CONFIG (sauvegarde)


6.2. Commandes pour Mandriva

Copy to clipboard
make mrproper make xconfig make make modules_install make install
et tout sera prt, compil et install, y compris votre chargeur de boot (lilo ou grub)


Copy to clipboard
apt-get install kernel-package make-kpkg clean make-kpkg modules_clean make-kpkg --revision 1 --initrd kernel_image kernel_headers modules_image cd .. dpkg -i kernel-image-2.6.15.6-rt21_1_i386.deb


Il y a un tutoriel trs clair et simple, quoiqu'en anglais, sur cette page :
http://forums.debian.net/viewtopic.php?t=17035

noter, ce jour (02 juillet 2008), le lien indique pour tlcharger le patch RT n'est plus valable. Je vous conseille donc d'aller directement sur cette page pour tlcharger le noyau de votre choix :
http://kernel.org/pub/linux/kernel/v2.6/
et sur celle-ci pour tlcharger le patch qui lui correspond : http://www.kernel.org/pub/linux/kernel/projects/rt/

Pour ceux qui ne savent pas (c'tait mon cas), unp est disponible dans les dpts. C'est un petit script en PERL qui facilite l'extraction d'archives.

Le problme de cette mthode, c'est que le noyau ainsi obtenu s'il est temps rel n'est pas un noyau Debian (le noyau Debian contient des patchs supplmentaires compare au noyau de base de linux.org). Voici donc comment j'ai procd, je suis all sur cette page :

http://ftp.fr.debian.org/debian/pool/main/l/linux-2.6/

J'ai tlcharg le paquet linux-source-2.6.24_2.6.24-7_all.deb (vous pouvez bien sur en choisir un autre, assurez vous bien qu'il y ait un patch RT qui lui correspond).
Je l'ai dpaquet ainsi :

Copy to clipboard
unp linux-source-2.6.24_2.6.24-7_all.deb


Dans les rpertoires ainsi obtenus j'ai rcupr linux-source-2.6.24.tar.bz2 qui contient le noyau Debian, et ce sans avoir modifier mon sources.list .

Sur cette page :
http://www.kernel.org/pub/linux/kernel/projects/rt/older/

J'ai rcupr le patch RT patch-2.6.24.7-rt16.bz2

Ensuite j'ai applique la mthode du didacticiel indique plus haut et dont je rappelle la page:
http://forums.debian.net/viewtopic.php?t=17035



6.4. Pour finir


➡️ Il est prfrable de ne pas craser l'ancien noyau et de conserver son entre dans votre bootloader (Lilo ou Grub), pour pouvoir dmarrer dessus en cas de problme (un kernel-panic est si vite arriv...) diter /etc/lilo.conf ou /boot/grub/grub.conf pour y ajouter l'entre correspondant votre nouveau noyau. Si vous utilisez Lilo, relancez la commande "lilo". Ceci n'est pas ncessaire pour Mandriva, c'est fait automatiquement

➡️ Attention : si vous avez chang la version de votre noyau, certaines applications dpendantes du noyau doivent tre rinstalles : c'est notamment le cas des pilotes propritaires des cartes graphiques Nvidia et ATI, des modules comme realtime-lsm... Ceci n'est pas non plus ncessaire pour Mandriva : utilisez simplement les modules dkms : ils se chargeront de replacer automatiquement ces modules pour votre nouveau kernel (dkms-nvidia & dkms-ati sont disponibles par le PLF - http://plf.zarb.org/mirrors.php -> configurer ces repositories PLF trs simplement avec http://easyurpmi.zarb.org - D'autres, comme dkms-vloopback, sont inclus).

Redmarrez ... croisez les doigts ...

Si a plante, utilisez votre ancien noyau que vous n'avez pas supprim pour redmarrer et corriger ce qui coince...

[+]

Historique

Information Version
Fri 06 Nov 2015 14:47 olinuxx Recherche et remplacement en masse 168
Afficher
Wed 06 mai 2015 00:58 chapolin 165 - 167
Afficher
Tue 05 mai 2015 12:55 chapolin 160 - 164
Afficher
Fri 05 Sep 2014 19:18 olinuxx Recherche et remplacement en masse 158 - 159
Afficher
Fri 30 mai 2014 13:22 chuck_maurice 156 - 157
Afficher
Fri 30 mai 2014 09:10 chuck_maurice 155
Afficher
Wed 03 Jul 2013 15:27 pianolivier structure par défaut 154
Afficher
Tue 02 Apr 2013 07:45 utilisateur_anonyme2 153
Afficher
Wed 27 Feb 2013 22:07 utilisateur_anonyme2 152
Afficher
Mon 21 mai 2012 11:04 pianolivier modif lien(s) interne(s) 151
Afficher
Sat 19 mai 2012 19:41 pianolivier renommage de la page +alias(Compiler un noyau 2.6RT)) 150
Afficher
Mon 09 Apr 2012 16:38 pianolivier +BOX 149
Afficher
Sun 08 Apr 2012 15:32 pianolivier modif fil d'ariane 148
Afficher
Wed 21 Mar 2012 19:39 pianolivier fil d'ariane [retour à la version 145] 146 - 147
Afficher
Wed 21 Mar 2012 19:39 pianolivier fil d'ariane 145
Afficher
Tue 20 Mar 2012 22:06 pianolivier suppression BOX (début de réorga du dossier) 144
Afficher
Sun 11 Mar 2012 14:49 pianolivier 140 - 143
Afficher
Mon 25 Jul 2011 20:56 pianolivier marquage de la page comme en cours de ré-écriture 139
Afficher
Wed 15 Dec 2010 17:49 olinuxx mise à jour BOX 138
Afficher
Mon 06 Dec 2010 11:29 olinuxx changement lien interne 136 - 137
Afficher
Sun 05 Dec 2010 09:00 olinuxx déplacement infos 126 - 135
Afficher
Sun 05 Dec 2010 08:10 olinuxx 124 - 125
Afficher
Sun 07 Nov 2010 21:55 olinuxx 120 - 123
Afficher
Sun 07 Nov 2010 21:38 pianolivier 119
Afficher
  • «
  • 1 (en cours)
  • 2