RTAI et RTnet à partir des sources

Installation de RTAI sous Debian (depuis les sources)

Pour une installation automatisée à partir de paquets déjà compilés, cliquez ici.

Installation des paquets Debian
su -
aptitude update && aptitude safe-upgrade
aptitude install kernel-package \
build-essential dh-make module-assistant \
libncurses5-dev zlib1g-dev dh-kpatches \
fakeroot autoconf
Udev
Les modules RTAI créent les périphériques rtai_sham et rtf* à leur lancement. Il faut créer le fichier suivant pour ces périphériques.
touch /etc/udev/rules.d/92-rtai.rules
Editer ensuite ce fichier comme suit :
ACTION!="add|change", GOTO="rtai_end"
KERNEL=="rtf*", MODE="0666"
KERNEL=="rtai*", MODE="0666"
LABEL="rtai_end"
Memlock Size
La quantité par défaut de mémoire verrouillée dans l'espace d'adresse est 32Kb sous Debian. Il convient de l'augmenter pour une utilisation temps réel. Editer /etc/security/limits.conf pour ajouter cette ligne à la fin :
* hard memlock 8192
Ajout de l'utilisateur au groupe src
Ajouter votre compte au groupe src pour avoir accès au répertoire /usr/src
adduser your_user_name src
Déconnectez-vous et reconnectez-vous pour permettre aux changements de prendre effet.

Récuperation des paquets sources
Utilisez un compte utilisateur normal pour les actions suivantes.
cd
mkdir rtai
cd rtai
Récupération des sources du noyau
wget ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.30.5.tar.bz2
tar xjf linux-2.6.30.5.tar.bz2 -C /usr/src
ln -s linux-2.6.30.5/ /usr/src/linux
Récupération des sources de RTAI
wget http://trainsim.ebvmultimedia.net/dl/rtai_3.7.1.orig.tar.gz
tar zxf rtai_3.7.1.orig.tar.gz
Récupération du patch pour Debian
wget http://trainsim.ebvmultimedia.net/dl/rtai_3.7.1-2.diff.gz
cd rtai-3.7.1/
gunzip -c ../rtai_3.7.1-2.diff.gz | patch -p1 --dry-run
gunzip -c ../rtai_3.7.1-2.diff.gz | patch -p1
chmod u+x debian/rules
Construction des paquets RTAI
dpkg-buildpackage -rfakeroot -uc
Les fichiers suivants vont être crées dans le dossier supérieur :
- librtai1_3.7.1-2_i386.deb
- librtai-dev_3.7.1-2_i386.deb
- rtai_3.7.1-2.diff.gz
- rtai_3.7.1-2.dsc
- rtai_3.7.1-2_i386.changes
- rtai_3.7.1-2_i386.deb
- rtai-doc_3.7.1-2_all.deb
- rtai-source_3.7.1-2_i386.deb

Installation des paquets RTAI
cd ..
su
dpkg -i librtai1_3.7.1-2_i386.deb
dpkg -i librtai-dev_3.7.1-2_i386.deb
dpkg -i rtai-source_3.7.1-2_i386.deb
exit
Construction des modules noyau
cd /usr/src/linux
make-kpkg clean
time fakeroot make-kpkg --initrd \
--append-to-version -rtai \
--revision r1 \
--added-patches rtai \
--config menuconfig \
kernel-image \
kernel-headers \
kernel-source
Configuration du noyau
Enable loadable module support ---> enabled [*]
Loadable module support ---> Module versioning support ---> disabled
Processor type and features ---> HPET Timer Support ---> disabled
Processor type and features ---> Interrupt pipeline ---> enabled [*]
Power management and ACPI options ---> ACPI (Advanced Configuration and Power Interface) Support ---> enabled [*]
Power management and ACPI options ---> ACPI (Advanced Configuration and Power Interface) Support ---> Deprecated /proc/acpi files ---> disabled
Power management and ACPI options ---> ACPI (Advanced Configuration and Power Interface) Support ---> Deprecated power /proc/acpi directories ---> disabled
Power management and ACPI options ---> ACPI (Advanced Configuration and Power Interface) Support ---> Future power /sys interface ---> disabled
Power management and ACPI options ---> ACPI (Advanced Configuration and Power Interface) Support ---> Deprecated /proc/acpi/event support ---> disabled
Power management and ACPI options ---> ACPI (Advanced Configuration and Power Interface) Support ---> AC Adapter ---> disabled
Power management and ACPI options ---> ACPI (Advanced Configuration and Power Interface) Support ---> Battery ---> disabled
Power management and ACPI options ---> ACPI (Advanced Configuration and Power Interface) Support ---> Button ---> disabled
Power management and ACPI options ---> ACPI (Advanced Configuration and Power Interface) Support ---> Video ---> module [M]
Power management and ACPI options ---> ACPI (Advanced Configuration and Power Interface) Support ---> Fan ---> disabled
Power management and ACPI options ---> ACPI (Advanced Configuration and Power Interface) Support ---> Dock ---> enabled [*]
Power management and ACPI options ---> ACPI (Advanced Configuration and Power Interface) Support ---> Processor ---> disabled
Power management and ACPI options ---> ACPI (Advanced Configuration and Power Interface) Support ---> Disable ACPI for systems before Jan 1st this year ---> 0
Power management and ACPI options ---> ACPI (Advanced Configuration and Power Interface) Support ---> Debug Statements ---> disabled
Power management and ACPI options ---> ACPI (Advanced Configuration and Power Interface) Support ---> PCI slot detection driver ---> disabled
Power management and ACPI options ---> ACPI (Advanced Configuration and Power Interface) Support ---> Container and Module Devices ---> disabled
Power management and ACPI options ---> ACPI (Advanced Configuration and Power Interface) Support ---> Smart Battery System ---> disabled
Power management and ACPI options ---> APM (Advanced Power Management) BIOS support ---> disabled
Power management and ACPI options ---> CPU Frequency scaling ---> disabled

Choisissez le processeur qui correspond à votre machine :
Processor type and features ---> Processor family ---> ...
Si vous avez un processeur multi-coeur (SMP), ne choisissez pas une famille de processeur qui n'a pas de TSC (time stamp counter).


NOTE: Aucun besoin de désactiver High Memory Support pour RTAI 3.7.1 et suivants.
NOTE: Aucun besoin de désactiver Symmetric multi-processing support pour les machines mono-processeur pour RTAI 3.7.1 et suivants.
Pour finir, sauvegarder la configuration et quitter menuconfig.
Installation des paquets du noyau
cd /usr/src
su
dpkg -i linux-image-2.6.30.5-rtai_r1_i386.deb
dpkg -i linux-headers-2.6.30.5-rtai_r1_i386.deb
rm linux
ln -s linux-headers-2.6.30.5-rtai linux

NOTE: Si vous avez un système multi-coeurs (SMP system), dédier le dernier coeur/CPU aux tâches temps réel peut augmenter les performances.
Editer /boot/grub/menu.lst et ajouter le paramètre isolcpus à la fin de la ligne du noyau RTAI. La valeur du paramètre est le numéro du dernier processeur (le compteur commence à 0) : 1 pour un double-coeur, 3 pour un quadri-coeur
kernel /vmlinuz-2.6.30.5-rtai root=/dev/sda5 ro isolcpus=1
Rebootez votre ordinateur.
reboot
Booter avec le noyau RTAI.
Contruction des modules noyau RTAI
cd /usr/src
tar jxf rtai-source.tar.bz2
cd /usr/src/linux
fakeroot make-kpkg --append-to-version -rtai --added-modules rtai \
--config menuconfig modules_image
Configuration des modules noyau RTAI
Augmenter le nombre de processeurs :
Machine (x86) ---> Number of CPUs (SMP-only) ---> 8
Base system ---> Other features ---> Mathfuns support in kernel ---> enabled
Laisser les valeurs par défaut pour les autres paramètres, sauvegarder et quitter menuconfig.

Installation des modules noyau RTAI
cd /usr/src
su
dpkg -i rtai-modules-2.6.30.5-rtai_3.7.1-2+r1_i386.deb
Regénérer les dépendances des modules du noyau linux
cd /usr/src/linux
cp Module.symvers Module.symvers.old
cat /usr/realtime/modules/Module.symvers >> Module.symvers
ln -s /usr/realtime/modules/ /lib/modules/2.6.30.5-rtai/rtai
depmod -a
Tests RTAI
cd /usr/realtime/testsuite/user/latency; time ./run
cd /usr/realtime/testsuite/user/preempt/; time ./run
cd /usr/realtime/testsuite/user/switches/; ./run
cd /usr/realtime/testsuite/kern/latency/; time ./run
cd /usr/realtime/testsuite/kern/preempt/; time ./run
cd /usr/realtime/testsuite/kern/switches/; ./run




RTnet

Installation


Effectuer l'installation de RTAI d'abord.
cd /usr/src
wget http://trainsim.ebvmultimedia.net/dl/rtnet-0.9.11.tar.bz2
tar xvjf rtnet-0.9.11.tar.bz2
cd rtnet
make menuconfig
Choississez RTAI dans la configuration.
make
su
make install
run mknod /dev/rtnet c 10 240
Tests
/sbin/rtnet start
rtping