Realtime-Systeme (Echtzeitsysteme) müssen auf bestimmte Bedingungen möglichst sofort reagieren können. Ein typisches Beispiel sind Maschinensteuerungen, die auf eingehende Signale sofort entsprechenden Output generieren müssen. Ein Projekt in diese Richtung ist EMC, ein CNC-Maschinencontroller unter Linux.
Damit Linux echtzeitfähig wird, bedarf es eines Patches. Derzeit gibt es rtlinux und RTAI. Rtlinux ist ein kommerzielles Produkt, von dem es jedoch eine freie Version gibt, die unter GPL steht. RTAI ist eine gänzlich freie Software unter GPL ohne kommerziellen Hintergrund.
Lizenz: GPL
Installation RTAI unter Debian Sarge
download rtai-Paket von RTAI Home
download Kernel 2.4.25 von http://www.kernel.org
- Kernel entpacken unter /usr/src (/usr/src/linux-2.4.25)
- rtai-Paket entpacken unter /usr/src (/usr/src/rtai-3.0r4)
- Kernel patchen:
xemc:/usr/src/linux-2.4.25# patch -p1 < \ ../rtai-3.0.r4/rtai-core/arch/i386/patches/legacy-2.4.25.patch
- als Konfiguration für den Kernel habe ich mir das Config-File des Original Debian Kernels config-2.4.25-1-586tsc geholt, der bereits installiert war:
xemc:/usr/src/linux-2.4.25# cp /boot/config-2.4.25-1-586tsc .config
- Diese Config muss nun noch etwas angepasst werden. Zum einen, damit rtai funktioniert, zum anderen, weil die Debian cramfs Patches nicht enthalten sind und somit ein initrd über cramfs nicht funktioniert. Ich wählte den Weg, kein initrd zu verwenden und die IDE-Treiber und ext2 direkt fest in den Kernel einzubauen. Folgend jetzt nur die für rtai wesentlichen Kernel-Einstellungen:
Loadable module support / Set version information on all module symbols -> excluded
Processor type and features / Real-Time Hardware Abstraction Layer -> built-in
Processor type and features / Local APIC support on uniprocessors -> excluded
make oldconfig && make dep
make bzImage && make modules
- make modules_install
- cp arch/i386/boot/bzImage /boot/vmlinuz-2.4.25-rthal5
- cp System.map /boot/System.map-2.4.25-rthal5
- cp .config /boot/config-2.4.25-rthal5
- Anpassen der /boot/grub/menu.lst
- rtai konfigurieren, z.B. über 'make config' oder 'make menuconfig' im rtai-Source Verzeichnis
- rtai kompilieren: 'make'
- rtai installieren: 'make install'
- neuen Kernel booten
- testen: unter /usr/realtime/testsuite... findet man verschieden Tests, die man mit ./run startet.