! 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
[+]On va décompresser les sources du noyau dans le répertoire de l'utilisateur et non dans le répertoire /usr/src comme trop de personnes ont tendance à le faire.
C'est Linus Torwarld en personne qui recommande de traiter les sources du noyau dans le répertoire de l'utilisateur !
From: Linus Torvalds (torvalds@transmeta.com)
I would suggest that people who compile new kernels should:
NOT do so in /usr/src. Leave whatever kernel (probably only the header files) that the distribution came with there, but don't touch it.
compile the kernel in their own home directory, as their very own selves. No need to be root to compile the kernel. You need to be root to install the kernel, but that's different.
not have a single symbolic link in sight (except the one that the kernel build itself sets up, namely the "linux/include/asm" symlink that is only used for the internal kernel compile itself).
And yes, this is what I do
source
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
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

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

)
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é
[+]
Voici quelques conseils, en rappelant que d'une version à l'autre du
noyau, et surtout en fonction des patchs appliqués ou non, l'organisation et la liste des options change ! N'oubliez pas non plus que certaines options n'apparaissent que si vous en activez d'autres ! (ex : sans support ISA activé, pas de carte-son ISA dans
ALSA ...).
La première partie est essentielle, elle définit le cœur de votre système. Adaptez-là à votre classe de processeur, et suivez les options recommandées :
General setup --->
Local version - append to kernel release (pour donner un nom particulier
à votre super noyau de la mort !)
[*] Support for paging of anonymous memory (swap) (active la swap)
[...]
[*] Kernel .config support (utile pour pouvoir récupérer la
[*] Enable access to .config through /proc/config.gz configuration du noyau dans /proc)
[ ] Optimize for size (à désactiver)
[ ] Configure standard kernel features (for small systems) ---> (à désactiver)
Loadable module support --->
[*] Enable loadable module support (utile pour pouvoir charger ...
[*] Module unloading ... et décharger des modules)
[ ] Forced module unloading
[*] Module versioning support
[*] Automatic kernel module loading (pour charger automatiquement les
dépendances des modules nécessaires)
Block layer --->
IO Schedulers ---> (activer les 3 ordonnanceurs)
<*> Anticipatory I/O scheduler
<*> Deadline I/O scheduler
<*> CFQ I/O scheduler
Default I/O scheduler (CFQ) (CFQ est utilisé par Demudi)
Processor type and features --->
Subarchitecture Type (PC-compatible) --->
[*] PC-compatible
Processor family --->
[*] VOTRE_TYPE_DE_PROCESSEUR (choisir votre type de processeur)
[ ] Generic x86 support (à désactiver, le choix du processeur
ci-dessus est préférable car + précis)
[*] HPET Timer Support (à activer)
[*] High Resolution Timer Support
(1000) High Resolution Timer resolution (nanoseconds)
[ ] Symmetric multi-processing support (à activer et configurer si vous avez
[ ] Maximum number of CPUs (2-255) un système multi-processeurs ...
[ ] SMT (Hyperthreading) scheduler support ... veinards !)
Preemption Model --->
[ ] No Forced Preemption (Server)
[ ] Voluntary Kernel Preemption (Desktop)
[ ] Preemptible Kernel (Low-Latency Desktop)
[*] Complete Preemption (Real-Time) (voilà l'option que nous rajoute le
"patch RT" ... INDISPENSABLE !)
--- Thread Softirqs (options à activer si vous n'utilisez
--- Thread Hardirqs pas la "Complete Preemption")
[ ] Preempt The Big Kernel Lock
[...]
High Memory Support ---> (selon votre quantité de mémoire vive)
[*] off (si vous avez moins de 1 Go)
[ ] 4GB (si vous avez entre 1 et 4 Go)
[ ] 64GB (hum ... si vous avez plus de 4 Go !)
[...]
[ ] Math emulation (inutile sur les processeurs actuels)
[*] MTRR (Memory Type Range Register) support (accélère les bus PCI et AGP)
[...]
Timer frequency ---> (à ce sujet, voir la discussion sur
[ ] 100 HZ le site d'[http://ardour.org/node/117|Ardour]
[ ] 250 HZ 1000Hz semble préférable)
[*] 1000 HZ
[...]
Ensuite, vous intègrerez le support des composants de votre carte mère, souvent sous forme de module. La commande
"lspci" vous aidera à en établir la liste. Si vous avez un doute sur une option, compilez-la en module.
Notez en particulier les choix conseillés et déconseillés pour le support IDE (pour limiter les goulots d'étranglement), et adaptez la partie son à votre matériel.
Selon vos besoins, vous placerez aussi en module le support Firewire (disque dur externe ou autre), Carte réseau (choisir votre modèle), USB (selon ce que vous utilisez, clé usb, souris, etc.) et "en dur" les éventuels supports SATA dont vous avez besoin. Selon votre type de carte son, il faudra activer le bus correspondant (PCI, ISA, USB) pour la voir apparaître dans la liste d'
ALSA (section "Sound").
Bus options (PCI, PCMCIA, EISA, MCA, ISA) ---> (support PCI)
PCI support --->
PCI access mode --->
[ ] BIOS
[ ] MMConfig
[ ] Direct
[*] Any (fonctionne pour la plupart des cas)
[ ] PCI Express support (à activer si votre carte mère en a !)
[ ] ISA support (requis pour certaine cartes sons)
[...]
Networking ---> (pour configurer notamment le "Network
packet filtering" (pare-feu et cie)
consulter les sites spécialisés !)
[...]
Device Drivers ---> (pour installer la prise en charge
de vos périphériques. A adaptez à votre
matériel. Seuls les points spécifiques
MAO sont détaillés ci-dessous)
[...]
Block devices --->
<*> RAM disk support
(16) Default number of RAM disks
(4096) Default RAM disk size (kbytes)
[*] Initial RAM disk (initrd) support
[...]
ATA/ATAPI/MFM/RLL support (cochez en particulier :)
<*> ATA/ATAPI/MFM/RLL support
<*> Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support
<*> Include IDE/ATA-2 DISK support (support IDE)
[*] Use multi-mode by default
[*] Include IDE/ATAPI CDROM support
[...]
[ ] IDE Taskfile Access (ces 2 options sont à désactiver
< > generic/default IDE chipset support pour des raisons de performances)
[...]
PCI IDE chipset support --->
[ ] Generic PCI IDE Chipset Support (désactiver, préférer le support
spécifique ci-dessous)
[*] Generic PCI bus-master DMA support ---> (support DMA, à activer !)
[*] Use PCI DMA by default when available (à activer)
<*> Cocher_le_support_de_VOTRE_chipset (commande lspci pour vérifier votre puce.
À mettre "en dur" et non pas en module)
[...]
SCSI device support --->
<*> SCSI device support (choisir les périphériques SCSI que vous
SCSI low-level drivers ---> avez. À compiler "en dur" si votre
[*] LE(S)_DRIVER(S)_SATA_DONT_VOUS_AVEZ_BESOIN système est placé dessus)
[...]
Multi-device support (RAID and LVM) ---> (À configurer si vous souhaitez utiliser
plusieurs disques durs en mode RAID.
Compilez en dur et non pas en module
si votre système est placé sur le RAID)
[...]
IEEE 1394 (FireWire) support ---> (à activer si besoin, en module)
[...]
Network device support ---> (activer vos cartes réseaux, en module)
[...]
Character devices --->
<M> Enhanced Real Time Clock Support (utilisé par certaines applications comme ((MusE)))
<M> Generic /dev/rtc emulation
[*] Extended RTC operation
[...]
[* ou M] /dev/agpgart (AGP Support) ---> (activer l'AGP de VOTRE puce, paraît-il
[* ou M] AGP_DE_VOTRE_CHIPSET recommandé même avec les cartes PCIe)
[* ou M ou non] Direct Rendering Manager ---> (activer le support DRI pour VOTRE
carte graphique. Les possesseurs de
cartes graphiques NVidia ou ATI DOIVENT
désactiver cette option si ils veulent
utiliser la 3D avec les pilotes
propriétaires, et choisir M ou * pour les
pilotes libres)
[...]
[*] HPET - High Precision Event Timer ---> (si quelqu'un peut (in/con)firmer
[*] HPET Control RTC IRQ l' (in)utilité de ces options ...)
[*] Allow mmap of HPET
[...]
I2C support ---> (à adapter à votre matériel, en module.
<M> I2C support Utile notamment pour les modules des
<M> I2C device interface capteurs de la carte-mère - température,
I2C Hardware Bus support ---> ventillateurs, etc.)
<M> VOTRE_CHIPSET
[...]
Hardware Monitoring support ---> (Utile pour éviter la surchauffe du processeur.
<*> Hardware Monitoring support Voir aussi I2C support ci-dessus)
<M> VOS_CAPTEURS_CARTE-MERE
[...]
Graphics support ---> (drivers cartes graphiques à adapter à
[* ou M ou non]VOTRE_CARTE_GRAPHIQUE votre matériel. Il s'agit ici des pilotes
libres, les possesseurs de C.G. NVIDIA et
ATI récentes préfèreront sans doute
installer les drivers non-libres pour en
tirer le meilleur. Et dans ce cas il est
préférable d'avoir le support ici sous
forme de modules pour avoir le choix
plus tard, ou même aucun si on est sûr
de soi)
Sound ---> (La partie intéressante)
<*> Sound card support (INDISPENSBLE)
<*> Advanced Linux Sound Architecture ---> (INDISPENSBLE)
<*> Sequencer support
<M> Sequencer dummy client
<M> OSS Mixer API (compatibilité avec le système obsolète OSS)
<M> OSS PCM (digital audio) API (idem)
[*] OSS Sequencer API (idem)
<M> RTC Timer support
[*] Use RTC as default sequencer timer
[*] Support old ALSA API
Generic devices --->
<M> Virtual MIDI soundcard (utile si vous n'avez pas de carte midi)
< > MOTU MidiTimePiece AV multiport MIDI (à mettre en module si vous avez besoin
< > UART16550 serial MIDI driver de ces périphériques. Ex : ports MIDI
< > Generic MPU-401 UART driver compatibles avec interfaces RolandMPU-401)
ISA devices ---> (mettre en module le driver pour VOTRE
PCI devices ---> carte son ISA, PCI ou USB et activer le
USB devices ---> support du port correspondant ISA/PCI/USB)
< > Open Sound System (DEPRECATED) (puisqu'on nous dit qu'OSS est obsolète...)
USB support ---> (à adapter à votre matériel, en module.)
La dernière partie vous permettra de choisir les supports pour les systèmes de fichiers que vous utilisez, ainsi que leurs options.
Les
"Magic SysRq key"
vous permettront de redémarrer proprement votre système en cas de plantage (c'est très rare, mais pas impossible, surtout avec un noyau RT).
"Realtime Capabilities" doit IMPERATIVEMENT être compilé sous forme de module pour installer "realtime-lsm" (voir
PAM).
File systems ---> (activer ceux que vous utilisez, Ext2,
Ext3, Reiserfs et XFS. A compiler "en dur"
au moins pour la partition racine)
[*] CD-ROM/DVD Filesystems ---> (à activer selon vos besoins)
[*] DOS/FAT/NT Filesystems ---> (à activer selon vos besoins)
[*] Pseudo filesystems --->
[*] Virtual memory file system support (former shm fs) (utile pour ((JACK)) - support tmpfs)
[*] Miscellaneous filesystems --->
<*> Compressed ROM file system support
Native Language Support ---> (choisir ISO 8859-15 ou UTF8 par défaut)
[*] Codepage 850 (Europe)
[*] NLS ISO 8859-1 (Latin 1; Western European Languages)
[*] NLS ISO 8859-15 (Latin 9; Western European Languages with Euro)
[*] NLS UTF8
[...]
Kernel hacking --->
[*] Magic SysRq key (utile pour les "reboot" d'urgence)
[...]
Cryptographic options ---> (utile pour vérifier les sommes de
<*> MD5 digest algorithm contrôle de tout ce que vous téléchargez,
<*> SHA1 digest algorithm images ISO, etc.)
<*> SHA256 digest algorithm
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 :
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
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
[+]
La version
Ubuntu 10.10 ne supportant pas le temps réel, il est possible assez facilement de compiler un noyau temps réel pour cette version.
Voici la démarche à suivre :
- Aller à l'adresse http://www.kernel.org/pub/linux/kernel/projects/rt/
récupérer le fichier patch le plus récent ( le jour de l'écriture de cette documentation c'était patch-2.6.33.7-rt29.gz) Attention de ne pas prendre un fichier signature )
- Allez à l'adresse http://www.kernel.org/pub/linux/kernel/v2.6/
et récupérer le noyau correspondant à votre patch ( pour moi c'est donc linux-2.6.33.7.tar.gz )
- se mettre en root ( pour moi sudo su)
- cd /usr/src
- tar zxvf /home/gilles/Download/linux-2.6.33.7.tar.gz
- ln -s linux-2.6.33.7 linux
- cp /home/gilles/Download/patch-2.6.33.7-rt29.gz /usr/src (moi c'est gilles et le fichier téléchargé est dans Download, vous changerez les chemin)
- cd linux
- zcat ../patch-2.6.33.7-rt29.gz | patch -p 1
- cp /boot/config-2.6.35-22-generic .config
- vi .config mettre STAGING à n (car les drivers en cours de développement en avril 2010 ne compilaient pas tous)
- make oldconfig (là il va poser une dizaine de questions répondre à celle sur le noyau temps réel répondre qu'on veut un noyau temps réel choix 4) pour les autres choix qui ne sont que des nouveautés on peut répondre non, c'est à dire taper entrer, ces questions portant sur les paramètres 2.6.35 qui ont changé de format depuis la 2.6.33)
- make (c'est assez long)
- make modules_install
- make install
- update-initramfs -c -k 2.6.33.7-rt29
- dans le fichier /boot/grub/menu.lst ajouter les lignes
title Ubuntu Manuel RealTime kernel 2.6.33.7-rt29
uuid 9d2eaf3a-d613-4b89-996b-4b6c61a81572
kernel /boot/vmlinuz-2.6.33.7-rt29 root=UUID=9d2eaf3a-d613-4b89-996b-4b6c61a81572 ro quiet splash
initrd /boot/initrd.img-2.6.33.7-rt29
quiet
NB :
- moi j'utilise un grub.conf car ma version 10.10 a été upgradée de version en version. Il est possible qu'il y ait un autre mécanisme grub2, il faut dans ce cas aller voir comment mettre à jour en grub2
- uuid 9d2eaf3a-d613-4b89-996b-4b6c61a81572 doit être remplacé par l'uuid de votre disque, c'est à dire celui présent sur les autres noyau de votre grub
en mettant bien l'uuid de votre partition et pas la mienne
- le noyau RT permet de descendre à des latences de quelques millisecondes
- le noyau ainsi compilé convient à toutes les machines, on pourrait le compiler en s'amusant à supprimer l'ensemble des périphériques dont on n'a pas besoin
[+]