[ACTU] Nouveau Patch Linux Preempt-RT 2.6.33.9-rt31

Publié par cpb
avr 22 2011

Le 11 avril dernier Thomas Gleixner a publié un nouveau patch pour le projet Linux Preempt RT. Celui-ci s’applique sur les noyaux de la branche long terme 2.6.33 (linux 2.6.33.9 en particulier). Ce patch implémente des améliorations par rapport au précédent, sans ajouter de véritables nouveautés. Il peut toutefois être intéressant de le mettre en œuvre et de le tester pour vérifier si les performances temps-réel d’un système sont améliorées.

Voici un exemple de mise en service sur une carte Igep v2.

1 – Téléchargement du nouveau patch Linux-Preempt-RT

# cd ~/tmp/
# wget http://www.kernel.org/pub/linux/kernel/projects/rt/patch-2.6.33.9-rt31.bz2
 --2011-04-16 00:17:17--  http://www.kernel.org/pub/linux/kernel/projects/rt/patch-2.6.33.9-rt31.bz2
Resolving www.kernel.org... 199.6.1.164, 130.239.17.4
Connecting to www.kernel.org|199.6.1.164|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 275667 (269K) [application/x-bzip2] Saving to: “patch-2.6.33.9-rt31.bz2”  100%
[===============================================================================>] 275,667      761K/s   in 0.4s
2011-04-16 00:17:18 (761 KB/s) - “patch-2.6.33.9-rt31.bz2” saved [275667/275667]
#

2 – Téléchargement du noyau Linux 2.6.33.9

# wget http://www.kernel.org/pub/linux/kernel/v2.6/longterm/v2.6.33/linux-2.6.33.9.tar.bz2
--2011-04-16 00:32:10--  http://www.kernel.org/pub/linux/kernel/v2.6/longterm/v2.6.33/linux-2.6.33.9.tar.bz2
Resolving www.kernel.org... 199.6.1.164, 130.239.17.4
Connecting to www.kernel.org|199.6.1.164|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 66226244 (63M) [application/x-bzip2]
Saving to: “linux-2.6.33.9.tar.bz2”
100%[=========================================================================>] 66,226,244  1.58M/s   in 40s
2011-04-16 00:32:50 (1.58 MB/s) - “linux-2.6.33.9.tar.bz2” saved [66226244/66226244]
#

3 – Décompression des sources de Linux et du patch

# tar xjf linux-2.6.33.9.tar.bz2
# bunzip2 patch-2.6.33.9-rt31.bz2
#

4 – Application du patch Preempt-RT

# cd linux-2.6.33.9
# patch -p1 < ../patch-2.6.33.9-rt31 
patching file Documentation/hwlat_detector.txt
patching file Documentation/trace/histograms.txt
patching file MAINTAINERS
patching file Makefile
[...]
patching file sound/drivers/pcsp/pcsp.h
patching file sound/drivers/pcsp/pcsp_input.c
patching file sound/drivers/pcsp/pcsp_lib.c
patching file virt/kvm/kvm_main.c
#

5 – Compilation du noyau

Nous utilisons un fichier de configuration pour la carte Igep v2 déjà préparé avec une version antérieure.

# cp ../config-linux-2.6.33-rt  ./.config
# make ARCH=arm menuconfig

On vérifie que la configuration semble correcte. En particulier l’option « Preemption Mode » du menu « Kernel Features« , qui doit être configurée avec la valeur « Complete Preemption (Real-time)« . Nous quittons en sauvant la configuration et lançons la compilation avec :

# make   ARCH=arm   CROSS_COMPILE=/cross-arm-linux/usr/bin/arm-linux-  uImage  -j 16

Rappelons que l’option « CROSS_COMPILE contient un préfixe à ajouter avant le nom des outils de la chaîne de compilation Gnu (gcc, ld, as). Ceci permet de sélectionner le cross-compiler que nous avons généré dans un article précédent. On remarquera que nous compilons une « uImage » c’est-à-dire une image préparée pour uBoot, le boot-loader préinstallé sur la carte Igep. Enfin l’option « -j 16 » permet d’accélérer la compilation en faisant tourner 16 jobs en parallèle (on optimise ainsi l’utilisation des quatre cœurs de ce processeur).

6 – Installation du noyau compilé

Après quelques minutes, le noyau est prêt, on peut le copier sur la carte micro-SD utilisée pour le boot de la carte Igep :

[...]
Image Name:   Linux-2.6.33.9-rt31-rt-cpb
Created:      Sat Apr 16 00:43:14 2011
Image Type:   ARM Linux Kernel Image (uncompressed)
Data Size:    1870284 Bytes = 1826.45 kB = 1.78 MB
Load Address: 80008000
Entry Point:  80008000
  Image arch/arm/boot/uImage is ready
# cp arch/arm/boot/uImage  /media/boot/
# umount /media/boot/
#

7 – Test du nouveau noyau

La carte micro-SD est insérée dans la carte Igep v2, celle-ci est mise sous tension. Dès que les LEDs affichent le signe de vie habituel (dans un script de démarrage personnalisé), on peut se connecter depuis le PC par le réseau :

# ssh root@192.168.3.152
root@192.168.3.152's password:
BusyBox v1.16.1 (2011-03-10 12:17:29 CET) built-in shell (ash)
Enter 'help' for a list of built-in commands.
[IGEP]# uname -a
Linux (none) 2.6.33.9-rt31-rt-cpb #1 PREEMPT RT Sat Apr 16 00:43:05 CEST 2011 armv7l GNU/Linux
[IGEP]#

Il ne reste plus qu’à tester et vérifier si le comportement des tâches temps-réel d’un projet voient leur comportement s’améliorer sur ce nouveau patch, et éventuellement poster ses remarques dans la mailing-list « linux-rt-users@vger.kernel.org« .

URL de trackback pour cette page