Dear all, here is a procedure from someone with less programming expirence. I hope that this will help someone. Joerg Demtroeder
HowTo install RT Linux under SuSE 6.0 with Kernel 2.0.36 Written by Joerg Demtroeder eMail: [EMAIL PROTECTED] or [EMAIL PROTECTED] Introduction: This procedure is written for people with less expirience in software programming. Basic knowledge about C and UNIX is very usefull. It is my aim, to show a way for the installtion and the start of the first test programm (Servo Control) written by Bernhard Kuhn. 1. Installation of SuSE 6.0 1.1 Additional packages 2. Download of the files 3. Build the standard Kernel 3.1 Patch and build of the RT Kernel 3.2 Patch the Kernel 4. Build the RT Modules 5. Build the Servo Control Test application 5.1 Run the Servo Control application 1. Installation of SuSE 6.0 ? Boot from the SuSE Bootdisk and follow the instruction ? Select the SuSE default system for the installtion ? Configure your system as you like it. E.g. Printer Network etc. ? Install the boot methode you like lilo or loadlin. ? Finish the installtion and boot the system. ? Login as root and let yast do his work. ? Configure X that the command startx works. 1.1 Additional packages To run and compile the Servo Control application it is nessecary to install some more packages. ? Call up yast select the installation source. ? Then configure the packages ? Under the Programmdevelopment package (d) select for installation. - gpp GNU C++ Compiler ? Under the Development under X11 package (xdev) select the following items: - qtcompat - wxwin - qtdevel - wxwstat - qtext - wxxt - qtlib - xforms ? Start the installtion and reboot the system 2. Download the files ? From the SuSE internet pages downlaod a patch for the compilers to build a stabel kernel. http://www.suse.de/~florian/kernel+egcs.html (3240 Bytes) On the top of the page you find a link called patches. Holddown the SHIFT key and press the left mouse button to get the "Save as Menu" and save the file. E.g. : /root/download/linux-2.0.x.patch ? From the RT Linux homepage download the kernel patch, for SuSE 6.0 with the installed Kernel 2.0.36 it is the file: rtlinux1.1.tgz If you are not sure wich kernelversion is installed on your system type at a terminal window the command uname -a. http://rtlinux.org/~rtlinux In the download area you find the Version V1.1 for Linux 2.0.36. Holddown the SHIFT key and press the left mouse button to get the "Save as Menu" and save the file. E.g. :/root/download/rtlinux1.1.tgz (101 755 Bytes) ? From the linux-magazinhomepage download/print the report of Bernhard Kuhn about RT linux and the example for the control of Servos. http://www.linux-magazin.de/ausgabe.1998.11/Rtlinux/rtlinux2.html (37 827 Bytes) ? To download the sources use the following from a link at the end of the report. In the Info Frame you find a link with the label "hier". http://www.linux-magazin.de/ausgabe.1998.11/Rtlinux/servo.tgz (3018 Bytes) Save the file to e.g. : /root/download/servo.tgz 3. Build the standard Kernel If you already build and installed succesfull a kernel with your current installtion you can skip this point.This is only a test to see that everything works and you know that the basic kernel setup will work and do what you are expecting. For detailed information about the kernel setup see in the handbook chapter VI. ? Login as root and start X windows with startx ? Open a Terminal window and move with cd /usr/src/linux into the Linux Directory ? Type make xconfig to configure the kernel and save the configuration as standardkernel. Then exit the tool. ? Now type the following commands, for detailed information see the handbook page 338: make dep make clean make zImage If you have configured your kernel to use modules type make modules make modules_install ? I you use lilo to boot the system edit know the file /etc/lilo.conf and add your new boot image. It is also a good idear to keep the old kernel to have fall back position. For details see page 339 in the SuSE handbook. ? Printout of my lilo.conf file: # LILO Konfigurations-Datei # Start LILO global Section boot=/dev/hda #compact # faster, but won't work on all systems. read-only prompt timeout=100 vga = normal # force sane state # End LILO global section # DOS bootable partition config begins other = /dev/hda1 label = NT table = /dev/hda # DOS bootable partition config ends # # Linux bootable partition config begins image = /boot/vmlinuz.org root = /dev/hda7 label = Linux.org # Linux bootable partition config ends # # RT Linux image = /boot/vmlinuz root = /dev/hda7 label = rtl # Linux bootable partition config ends # ? Now run the command make zlilo. ? Boot the system from the new Kernel and have a look that no boot errors ocur and the system works as expected. 3.1 Patch and build of the RT Kernel ? Login as root and start X Windows ? Change with cd /usr/src to /usr/src- ? Unpack the Kernelpatch with: tar -xzvf /root/download/rtlinux1.1.tgz ? Change into the Linux directory with cd linux ? Start the kernel patch with: patch -p1 </usr/src/rtlinux/kernel_patch ? Now it is time to configure your kernel with make xconfig, if you have a good configuration, use this configuration. ? To build the kernel type the following commands: make clean make dep make bzImage (With make zImage the build failed !!) make modules make modules_install ? Config the the file /etc/lilo.conf with a new boot Image. For details see under 3. Build the standard Kernel in this document. ? When the change is done type: make bzlilo ? When all task run trough with any errors, it is now time to reboot the system. ? After a succesfull reboot login as root and type to test the RT kernel ksyms -a |grep " "rt_ |wc -l ? If the result is a number greater than 0, the kernel build a success. ? The RT system needs now four devices, the realtime fifos mknod /dev/rtf0 c 63 0 mknod /dev/rtf1 c 63 1 mknod /dev/rtf2 c 63 2 mknod /dev/rtf3 c 63 3 3.2 Patch the Kernel The Kernel pach must be done to compile the the realtime Modules, otherwise you will receive some error messages where you get the information to patch your Kernel. ? Boot the system and login as root ? Change with cd /usr/src/linux into the right directory ? Patch the kernel with patch -s -p1 < /root/download/linux-2.0.x.patch ? Reboot the system 4. Build the RT Modules Before you can use the Realtime Modules, you have to build them. ? Change into the right directory with cd /usr/src/rtl.You will find the following entry in this directory: -rw-r--r-- 1 root root 3040 Jul 13 16:26 Makefile -rw-r--r-- 1 root root 547 Jul 13 16:26 README drwxr-xr-x 7 root root 1024 Jul 13 16:26 examples drwxr-xr-x 2 root root 1024 Jul 15 11:30 fifos drwxr-xr-x 2 root root 1024 Jul 13 16:26 include drwxr-xr-x 2 root root 12288 Jul 9 12:46 lost+found drwxr-xr-x 2 root root 1024 Jul 15 11:30 modules drwxr-xr-x 3 500 500 1024 Jul 13 13:03 rtlinux drwxr-xr-x 3 root root 1024 Jul 15 11:30 schedulers drwxr-xr-x 4 root root 1024 Jul 15 11:30 semaphores For details read the README file. - To build the modules type make all - To confirm the build check the directory modules cd modules ls -l Printout of the ls -l command: -rw-r--r-- 1 root root 6000 Jul 15 11:30 rtl_fifo.o -rw-r--r-- 1 root root 9096 Jul 15 11:30 rtl_nfifo.o -rw-r--r-- 1 root root 5136 Jul 15 11:30 rtl_sched.o 5. Build the Servo Control Test application For a detailed description of this RT test task see the report from Bernhard Kuhn (http://www.linux-magazin.de/ausgabe.1998.11/Rtlinux/rtlinux2.html). If you do not want to build / buy the hardware you can also use a standard scope to check the signals produced from the program. ? Login as root ? Unpack the file into the /root/servo directory with: cd /root/servo tar -xzvf /root/download/servo.tgz ? The ls -l command should give you the following listing: -rw-r--r-- 1 500 users 378 Jul 14 12:00 Makefile -rw-r--r-- 1 500 users 595 Jul 6 1998 README -rw-r--r-- 1 500 users 866 Jul 13 12:53 rt_ctrl.c -rw-r--r-- 1 500 users 2823 Jul 13 12:51 rt_servo.c -rw-r--r-- 1 500 users 1770 Jul 13 12:44 servo.cpp -rw-r--r-- 1 500 users 307 Jul 6 1998 servodata.h - Under normal conditions the makefile will fail when you start now the make process. There are a few changes to to that the make will run through without any problems. The reason for these changes is that each system is setup differnt and that the pathes have to be setup in the right way. If you have a problem with the make and you do not know where the file is e.g. qslider.h use the following comand: find / -name qslider.h -print Remember that the LPT1 address is set to 0x378 !!! ? Changes in Makefile: Line 4: moc -p /usr/lib/qt/include -o servo.moc.cpp servo.cpp Line 5: g++ -I /usr/lib/qt/include -o servo servo.cpp -lqt ? Changes in rt_ctrl.c: Line 7: #include </usr/src/rtlinux/rtl/include/rtl_sched.h> Line 8: #include </usr/src/rtlinux/rtl/include/rtl_fifo.h> ? Changes in rt_servo.c: Line 9: #include </usr/src/rtlinux/rtl/include/rtl_sched.h> Line 10: #include </usr/src/rtlinux/rtl/include/rtl_fifo.h> ? Changes in servo.cpp: Line 8: #include "/usr/lib/qt/include/qapp.h" Line 9: #include "/usr/lib/qt/include/qslider.h" Line 10: #include "/usr/lib/qt/include/qlayout.h" ? If the changes are done type : make all ? When the make was a success the ls -l should give you this listing: -rw-r--r-- 1 500 users 378 Jul 14 12:00 Makefile -rw-r--r-- 1 500 users 595 Jul 6 1998 README -rw-r--r-- 1 500 users 866 Jul 13 12:53 rt_ctrl.c -rw-r--r-- 1 root root 1512 Jul 16 11:10 rt_ctrl.o -rw-r--r-- 1 500 users 2823 Jul 13 12:51 rt_servo.c -rw-r--r-- 1 root root 2012 Jul 16 11:10 rt_servo.o -rwxr-xr-x 1 root root 14651 Jul 16 11:10 servo -rw-r--r-- 1 500 users 1770 Jul 13 12:44 servo.cpp -rw-r--r-- 1 root root 1382 Jul 16 11:10 servo.moc.cpp -rw-r--r-- 1 500 users 307 Jul 6 1998 servodata.h 5.1 Run the Servo Control application If you connect a servo to the lpt1, it is now time to do it. If you like to use an oszilloskope connect the ground to pin 25 and the signal lead to 14 this is the first channel. ? Powerup the computer and login as root. ? To start the realtime process type the following commands: insmod /usr/src/rtlinux/rtl/modules/rtl_fifo.o insmod /usr/src/rtlinux/rtl/rtl/modules/rtl_sched.o insmod /root/servo/rt_servo.o /root/servo/servo ? To control type the lsmod command and get this listing: Module Pages Used by rt_servo 1 0 rtl_sched 1 [rt_servo] 0 rtl_fifo 2 [rt_servo] 1 ? Check it out and enjoy ;-) ? To unload the RT Tasks type : quit the servo task and check that the task is dead. (ps -x and kill -9 PID if the taskis still aktiv) rmmod rt_servo rmmod rtl_sched rmmod rtl_fifo