Chargement...
 
[Voir/Cacher menus de gauche]
[Voir/Cacher menus de droite]

! 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.

ATTENTION ! il ya un conflit de compilation avec gcc.4.7.x , il faudra installer une autre version ,ici testé avec la version 4.4, puis faire un lien symbolique :

"If you get a compile error saying "error: conflicting types for 'syscall_trace_enter'" you are probably using the latest gcc-4.7. Try to switch back to an older compiler version, e.g. gcc-4.4. After aptitude install gcc-4.4 you have to link /usr/bin/gcc-4.4 to /usr/bin/gcc: ln -s /usr/bin/gcc-4.4 /usr/bin/gcc "

ainsi que le module "module-init-tools" :

" Warning: you may need to install module-init-tools
See http://www.codemonkey.org.uk/docs/post-halloween-2.6.txt
mkdir: impossible de créer le répertoire « /lib/modules/2.6.33.7.2-rt30-custom »: Permission non accordée
make: *** [_modinst_] Erreur 1 "


1. Présentation

Pour une présentation de ce qu'est le noyau Temps-Réel, vous pouvez aller lire sa page dédiée : Le noyau Temps-Réel.

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:
emerge rt-sources

etc.

Pour les "vanilla-sources", faites :

cd mkdir src


[+]
placez-vous dans le répertoire "~/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) :
cd ~/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 "~/src", un lien symbolique nommé "linux" et pointant vers les sources que vous venez d'installer. Exemple :
ln -sf linux-2.6.31.12 linux


Enfin, si vous voulez recompilez des sources déjà installées, sauvegarder le fichier de configuration (~/src/linux/.config) et faites un peu de ménage :
cd ~/src/linux
make clean


3.1. Méthode alternative pour télécharger les sources et les patcher automatiquement avec ketchup:


Vous trouverez les indications pour télécharger et utiliser ketchup sur la page wiki ici

A cette page les différentes sources de kernels et patchs rt, cliquez ici

arrow Exemple pour une installation avec le noyau 3.14-rt :

Créons un dossier tmp :
mkdir tmp

Puis allons dans tmp :
cd tmp/

Alors nous téléchargeons la source qui sera automatiquement patchée avec le bon patch, le dossier tmp sera aussi automatiquement renommé avec le nom du kernel-rt downloadé :
ketchup -r -G  3.14.39-rt37

Sortons de tmp :
cd ..

Retournons dans linux-3.14.39-rt37 pour y effectuer les opérations de configuration, compilation et installation décrites ci-après :
cd linux-3.14.39-rt37/







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

arrow 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 lol. 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 :
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 :
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 :
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 wink)
Ne pas oublier de modifier également le lien symbolique :
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 :
cd /usr/src/linux
gunzip -c /proc/config.gz > .config
make oldconfig


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

ou
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. idea 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 :
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.
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
cp System.map /boot/VOTRE_SYSTEM.MAP (IDEM)
cp .config /boot/VOTRE_CONFIG (sauvegarde)


6.2. Commandes pour Mandriva

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 :

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 :

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


arrow 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

arrow 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

[+]

Documentation [Afficher / Cacher]

Faire un don
[Afficher / Cacher]

Connexion
[Afficher / Cacher]



Mégaphone [Afficher / Cacher]

olinuxx, 11:48, ven. 15 mars 2024: Bonjour et bienvenue à Jerry cool
calixtus06, 18:03, mer. 13 mars 2024: Bonjour et bienvenue à tanguero :-)
olinuxx, 11:01, dim. 10 mars 2024: Bonjour et bienvenue à lolo cool
bda, 16:59, sam. 09 mars 2024: Chapeau pour l'édito. Vous êtes au top les gars :-)
allany, 07:20, jeu. 07 mars 2024: Ça ne fait jamais de mal, c'est l'éditorial ! [Lien]
olinuxx, 19:52, mer. 06 mars 2024: Bonjour et bienvenue à TrkNrk cool
calixtus06, 11:17, mar. 05 mars 2024: Bonjour et bienvenue à D752 :-)
calixtus06, 18:59, lun. 04 mars 2024: Bonjour et bienvenue à Hborsa et Adjudandouille :-)
olinuxx, 18:34, jeu. 29 Feb 2024: Bonjour et bienvenue à anto45500 cool
jujudusud, 23:38, mar. 27 Feb 2024: Venez participer à la joute numéro 17 : [Lien]
calixtus06, 18:36, jeu. 22 Feb 2024: Bonjour et bienvenue à nikartri et rckloar :-)
calixtus06, 10:15, mer. 14 Feb 2024: Bonjour et bienvenue à smonff, Alphascorpii, tadumtss et letoII :-)