For more information on Linux, including its history, commercial distributions, and products available for it, visit www.linux.org.
For more information on Real-Time Linux, including projects around the world, visit rtlinux.cs.nmt.edu/~rtlinux.
| Linux Distribution | Kernel Version | RT-Linux Patch with FPU fix |
| Red Hat Linux 4.2 | 2.0.27 | rtlinux-0.5a-fp.tgz |
| Red Hat Linux 5.0 | 2.0.32 | rtlinux-0.6-2.0.33-fp.tgz |
| Linux Central Red Hat Linux 5.0 | 2.0.32 | rtlinux-0.6-2.0.33-fp.tgz |
startxIf this doesn't work, don't despair. You can get this working later.
cd /usr/src
mount /dev/fd0 /mnt/floppy cp /mnt/floppy/rtlinux-0.V-2.0.XX-fp.tgz /usr/src umount /mnt/floppy
tar xzvf rtlinux-0.V-2.0.XX-fp.tgz
cd /usr/src/linuxApply the Real-Time Linux patch by following the instructions in the README file located in the rtlinux directory. Capture the output to a file, so you can see if the patch worked. This will be something like:
patch -p1 < /usr/src/rtlinux-0.V-2.0.XX/kernel_patch 1> patch.out 2> patch.errThe patch.out file will contain normal diagnostic output; the patch.err file will contain errors. Inspect them for signs like "hunk #1 failed". All parts of the patch should have been installed with no failures. If you do have failures, it means that the kernel and patch don't match. Consult the Real-Time Linux web page rtlinux.cs.nmt.edu/~rtlinux for more information.
make config OR make menuconfigIf you are running X Windows (i.e., startx worked when you ran it after logging in), you can configure Linux by running
make xconfigThe configuration program will let you customize hardware drivers and other operating system components. Unless you know what you are doing, you can leave everything at their defaults.
make dep ; make clean
make zImage
make modules
make modules_install
# install RT-Linux modules insmod /lib/modules/2.0.XX/fs/rt_fifo_new.o insmod /lib/modules/2.0.XX/misc/rt_prio_sched.o
cd /boot
cp /usr/src/linux/arch/i386/boot/zImage /boot/vmlinuz
/sbin/lilo
/sbin/reboot
/sbin/lsmodYou should see something like this:
Module Pages Used by rt_prio_sched 1 0 rt_fifo_new 2 0
cd /usr/src/rtlinux-0.V-2.0.XX/testing
mknod /dev/rtf0 63 0 mknod /dev/rtf1 63 1 mknod /dev/rtf2 63 2 mknod /dev/rtf3 63 3
cd /usr/src/rtlinux-0.V-2.0.XX/testing/2tasks make
/sbin/insmod ./rt_process.o ./appYou should see something like this:
FIFO 1: Frank FIFO 2: Zappa (more of the same)
int init_module(void)
{
rt_tasks = &rt_linux_task;
rt_current = &rt_linux_task;
rt_linux_task.priority = RT_LOWEST_PRIORITY;
rt_linux_task.next = 0;
rt_linux_task.state = RT_TASK_READY;
rt_linux_task.uses_fp = 1; /* ADD THIS LINE */
rt_request_timer(&rt_schedule);
return 0;
}
This tells the RT-Linux scheduler to save and restore the floating
point registers when suspending and resuming the Linux kernel. You'll
need to remake the modules, e.g.,
cd /usr/src/linux make modules make modules_install