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 |
Materials required:
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
boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
timeout=50
image=/boot/vmlinuz
label=linux
root=/dev/hda1
read-only
Add a line after the last entry for the image, to specify an
amount of memory 1 megabyte less than your total amount of physical
memory. The extra 1 megabyte will be used for EMC communication. For a
32-megabyte system, this line is append="mem=31m", as shown in bold below:
boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
timeout=50
image=/boot/vmlinuz
label=linux
root=/dev/hda1
read-only
append="mem=31m"
For a 64-megabyte system, this line is append="mem=63m", as shown in bold below:
boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
timeout=50
image=/boot/vmlinuz
label=linux
root=/dev/hda1
read-only
append="mem=63m"
If you are interested in using shared memory for your own programming,
see Using
Shared Memory in Real-Time Linux for details.
/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 c 63 0 mknod /dev/rtf1 c 63 1 mknod /dev/rtf2 c 63 2 mknod /dev/rtf3 c 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