Chargement...
 
Skip to main content

Historique: Tuto Compiler un noyau Temps-Réel

Aperçu de cette version: 148

Portail Système > Le noyau Linux > Compiler un noyau 2.6 RT


! Documentation à améliorer
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 concrète que la précédente, vous guidera pas-à-pas dans la compilation d'un noyau temps réel.


1. Présentation

Pour une présentation de ce qu'est le noyau RT, vous pouvez aller lire sa page dédiée.

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


L'idéal sera donc de faire en sorte que l'image résultant de la compilation ne remplace pas celle par laquelle vous démarrez 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'accroître les performances de votre système (optimisation en fonction de votre processeur, désactivation des options inutiles voire préjudiciables, etc.).

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

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

Le temps réel, explication chez fedora très intéressante : http://doc.fedora-fr.org/wiki/Fedora_et_le_Temps_Réel

2. Choix du noyau

La plupart des distributions offrent un noyau qu'elles ont patché pour lui attribuer de nouvelles fonctionnalités ("fbsplash" par ex, qui vous affiche un bel écran de bienvenue au démarrage de l'ordinateur...). Cependant, s'il ne s'agit pas d'une distribution spécialisée, 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 déjà "patchées-RT", ou "lowlatency" : ce qui vous économisera l'étape "patchage du noyau".
Pour Mandriva, vous pouvez utiliser le noyau standard qui a le mérite d'avoir un timer 1000Hz mais qui est en mode 'voluntary preemtion'. Les noyaux multimedia ont été abandonnés depuis la version 2008.1. Le kernel-desktop fonctionne très bien avec des latences jack autour de 10ms tout en incluant un grand support matériel, et il est à préférer au kernel-laptop. Mandriva inclut également un noyau avec realtime preemption activée : ce sont les paquets kernel-rt. Ces noyaux sont des noyaux vanilla avec comme seul patch appliqué le patch rt. Il peut s'avérer problématique avec certains composants matériels. Note : le métapaquet "kernel-...-latest" permet de garder à jour le dernier kernel disponible, et à chaque mise à jour l'ancien noyau reste bootable jusqu'à sa désinstallation. C'est très confortable et sûr. Néanmoins, pour une vraie et complète 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 présente 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 connaître la version du noyau que vous utilisez et installer les sources correspondantes, entrez la commande "uname -r" dans un terminal. Cette solution est à privilégier car elle vous permettra de conserver les patchs déjà appliqués sur votre distribution (pas loin de 180 patchs pour Ubuntu par exemple ❗. Certains noyaux étant trop différents des sources d'origines, des erreurs peuvent cependant apparaître lors de l'application du patch RT. Il faut alors se rabattre sur les "vanilla-sources".
  • Installation des sources d'un noyau déjà 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 livrées par les développeurs du noyau. Disponibles ici : http://www.kernel.org/. Choisir la dernière version stable ! Cette solution sera privilégiée notamment si vous rencontrez des difficultés pour patcher le noyau de votre distribution, ou si elle ne vous fournit pas de noyau déjà 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 répertoire "/usr/src" (en "root"), téléchargez les sources et décompressez-les. Exemple avec le noyau 2.6.31.12 (dernière version stable le 17/06/09; vérifier s'il existe une version plus récente) :
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 créer, toujours dans le répertoire "/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 déjà installées, sauvegarder le fichier de configuration (/usr/src/linux/.config) et faites un peu de ménage :
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 déjà patché RT.
Le "patch RT" était développé par Ingo Molnar, un des développeurs du noyau.
Maintenant, c'est Thomas Gleixner qui s'en occupe (après Steven Rostedt).
Il est disponible ici

➡️ Le patch RT est susceptible de faire bugger quelques programmes assez importants dépendant du noyau comme HAL (programme évitant de passer en root pour monter les clés usb), et bien sûr les drivers ATI pour ceux qui ne sont pas encore passé à nvidia 😂. Sur des distributions comme gentoo où l'on compile son noyau soi-même, 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 prévu 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

Téléchargez donc le bon patch et placez-le dans le répertoire "/usr/src".
Vérifiez aussi la présence du lien symbolique "linux" pointant sur les sources que vous souhaitez patcher (voir ci-dessus). La dernière version stable est la version "2.6.31.12-rt21".
Télécharger 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, vérifiez les versions (noyau/patch) et recommencez !


Nous allons ensuite renommer le répertoire de ces sources modifiées pour bien les repérer (facultatif). Puisque dans notre exemple précédent 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 récupérer 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 nécessaire !
Regardez si vous disposez d'un fichier nommé ".config" soit dans le répertoire "/boot", soit dans le répertoire "/usr/src/linux-2.x.x" d'un noyau précédemment installé.
Enfin, il est possible de trouver une sauvegarde de cette configuration dans /proc/config.gz. Utiliser la commande "make oldconfig" pour la récupérer :
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 matériel, il faudra adapter votre fichier de configuration, aussi il n'est pas possible de donner un modèle utilisable par tous ! La commande "lspci -v" (lspcidrake -v sur Mandriva ) vous donnera des renseignements indispensables sur votre matériel, pour pouvoir en activer le support dans le noyau.
Il est conseillé de compiler "en dur" tout ce qui est nécessaire au démarrage de l'ordinateur (accès à la partition qui comporte votre système en particulier).
Le reste peut facilement être placé en module. Le fichier "/etc/modprobe.conf" vous permettra de choisir les modules à charger automatiquement au démarrage de la machine.

N' oubliez pas d'éditer le MakeFile afin de changer le nom du noyau qui va être créer, si vous souhaitez utiliser les mêmes sources pour compiler divers noyaux.

5.2. Exemple illustré

[+]

5.3. 💡 Pour aller plus loin...

Voici une documentation très complete et très bien expliquée sur la configuration des différents modules du noyau.
Je vous recommande les sections 8 et 9 pour toutes questions spécifiques au matériel (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


6.1. Commandes générales

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

En cas d'erreur, regarder le module qui pose problème et désactivez-le s'il n'est pas nécessaire. 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 même nom que le noyau sur lequel vous êtes, afin que ce dernier vous serve de roue de secours si le noyau RT refuse de démarrer
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 prêt, compilé et installé, y compris votre chargeur de boot (lilo ou grub)


6.3. Commandes spécifiques à Debian et dérivés :

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 très 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 télécharger le patch RT n'est plus valable. Je vous conseille donc d'aller directement sur cette page pour télécharger le noyau de votre choix :
http://kernel.org/pub/linux/kernel/v2.6/
et sur celle-ci pour télécharger 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 dépôts. C'est un petit script en PERL qui facilite l'extraction d'archives.

Le problème de cette méthode, c'est que le noyau ainsi obtenu s'il est temps réel n'est pas un noyau Debian (le noyau Debian contient des patchs supplémentaires compare au noyau de base de linux.org). Voici donc comment j'ai procédé, je suis allé sur cette page :

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

J'ai téléchargé 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 dépaqueté ainsi :

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


Dans les répertoires ainsi obtenus j'ai récupéré 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 récupéré le patch RT patch-2.6.24.7-rt16.bz2

Ensuite j'ai applique la méthode 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 préférable de ne pas écraser l'ancien noyau et de conserver son entrée dans votre bootloader (Lilo ou Grub), pour pouvoir démarrer dessus en cas de problème (un kernel-panic est si vite arrivé...) Éditer /etc/lilo.conf ou /boot/grub/grub.conf pour y ajouter l'entrée correspondant à votre nouveau noyau. Si vous utilisez Lilo, relancez la commande "lilo". Ceci n'est pas nécessaire pour Mandriva, c'est fait automatiquement

➡️ Attention : si vous avez changé la version de votre noyau, certaines applications dépendantes du noyau doivent être réinstallées : c'est notamment le cas des pilotes propriétaires des cartes graphiques Nvidia et ATI, des modules comme realtime-lsm... Ceci n'est pas non plus nécessaire 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 très simplement avec http://easyurpmi.zarb.org - D'autres, comme dkms-vloopback, sont inclus).

Redémarrez ... croisez les doigts ...

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

Exemple : installation d'un noyau temps réel 2.6.33.7-rt29 sur Ubuntu 10.10

[+]

Historique

Avancé
Information Version
Fri 06 Nov 2015 14:47 olinuxx Recherche et remplacement en masse 168
Afficher
Wed 06 mai 2015 00:58 chapolin 167
Afficher
Wed 06 mai 2015 00:57 chapolin 166
Afficher
Wed 06 mai 2015 00:57 chapolin 165
Afficher
Tue 05 mai 2015 12:55 chapolin 164
Afficher
Tue 05 mai 2015 12:55 chapolin 163
Afficher
Tue 05 mai 2015 12:53 chapolin 162
Afficher
Tue 05 mai 2015 12:49 chapolin 161
Afficher
Tue 05 mai 2015 12:48 chapolin 160
Afficher
Fri 05 Sep 2014 19:18 olinuxx Recherche et remplacement en masse 159
Afficher
Fri 05 Sep 2014 19:12 olinuxx Recherche et remplacement en masse 158
Afficher
Fri 30 mai 2014 13:22 chuck_maurice 157
Afficher
Fri 30 mai 2014 13:21 chuck_maurice 156
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] 147
Afficher
Sun 08 Apr 2012 15:29 pianolivier modif bannière 146
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 143
Afficher
Sun 11 Mar 2012 14:23 pianolivier mise en page petits ecrans 142
Afficher
Sun 11 Mar 2012 14:22 pianolivier mise en page petits ecrans 141
Afficher
Sun 11 Mar 2012 14:21 pianolivier mise en page 140
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 137
Afficher
Mon 06 Dec 2010 11:28 olinuxx changement lien interne 136
Afficher
Sun 05 Dec 2010 09:00 olinuxx déplacement infos 135
Afficher
Sun 05 Dec 2010 08:58 olinuxx 134
Afficher
Sun 05 Dec 2010 08:58 olinuxx 133
Afficher
Sun 05 Dec 2010 08:57 olinuxx 132
Afficher
Sun 05 Dec 2010 08:55 olinuxx 131
Afficher
Sun 05 Dec 2010 08:53 olinuxx 130
Afficher
Sun 05 Dec 2010 08:52 olinuxx 129
Afficher
Sun 05 Dec 2010 08:52 olinuxx taille BOX 128
Afficher
Sun 05 Dec 2010 08:52 olinuxx 127
Afficher
Sun 05 Dec 2010 08:51 olinuxx BOX 126
Afficher
Sun 05 Dec 2010 08:10 olinuxx 125
Afficher
Sun 05 Dec 2010 08:07 olinuxx déplacement infos 124
Afficher
Sun 07 Nov 2010 21:55 olinuxx 123
Afficher
Sun 07 Nov 2010 21:45 olinuxx 122
Afficher
Sun 07 Nov 2010 21:43 olinuxx 121
Afficher
Sun 07 Nov 2010 21:43 olinuxx 120
Afficher
Sun 07 Nov 2010 21:38 pianolivier 119
Afficher
  • «
  • 1 (en cours)
  • 2