1. tar -xvf linux-2.6.31.8.tar.gz
tar -xvf rtai-3.8.tar.tar
ln -s linux-2.6.31.8 linux
2. cd linux
patch -p1 <../rtai-3.8 /base/arch/x86/patches/hal-linux-2.6.31.8--.xx.patch
3. cp /boot/config-2.6.18-generic .config
4. 注意:如果不是第一次编译,那么需要移除/lib/modules/下相应的核心,并设置正确的时钟与日期
5. make menuconfig
这里面涉及到具体的选项,说法很多,可以参考内核配置选项分析一书,但这里由于要配合rtai,因此有些选项不能选,否则会影响系统的实时性,具体的参考配置文件放在我的邮箱网络存储里。
6. make clean(第一次时不使用)àmake bzImageàmake modulesàmake modules_install
7. mkinitrd --without-dmraid /boot/initrd-2.6.31.8-rtai.img 2.6.31.8
8. cp arch/x86/boot/bzImage /boot/vmlinuz-2.6.31.8-rtai
9. cp System.map /boot/System.map-2.6.31.8-rtai
10. ln -s /boot/System.map-2.6.31.8-rtai /boot/System.map
11. df -h àvim /boot/grub/menu.lst
root=/dev/sda3 %/dev/sda3 as the / directory
在ro root…后加入:ide=nodma 说明:关掉硬盘的DMA功能(不适用于SATA硬盘)。可通过hdparm -d /dev/had查看硬盘的DMA功能是否被关掉。
12. reboot
13. cd /usr/src/rtai-3.8 àmkdir build àcd build àmake -f ../makefile menuconfig
14. RTAI配置:Base systemsà
Other featuresà
[*]Mathfuns support in kernel
[*]C99 standard support
Machine x86à
[*]FPU Support
[1]Number of CPUS(SMP only)------if your cpu is uniprocessor
15. make àmake install
16. 关掉ipv6: vim /etc/modprobe.conf
添加两行:alias net-pf-10 off 和 alias ipv6 off
17. 取消休眠和屏保:系统à首选项à电源首选项à取消休眠
系统à首选项à屏幕保护程序à取消屏保
18. cp base/arch/i386/calibration/rtai_smi.ko /usr/realtime/modules/rtai_smi.ko
说明:对于Intel芯片主板一般都有SMI(System maintenance interrupt)这是一个实时杀手并导致100us以上的响应延迟,因此需要关掉SMI,但是根据Intel官方提供的风险报告称现代处理器上关掉此项SMI有可能导致CPU温度升高,就像没有散热一样,严重时会导致损害计算机,因此关闭SMI之前请认真评估风险性。
19. vim /etc/rc.d/rc.local
insmod /usr/realtime/modules/rtai_hal.ko
insmod /usr/realtime/modules/rtai_sched.ko
insmod /usr/realtime/modules/rtai_fifos.ko
insmod /usr/realtime/modules/rtai_shm.ko
insmod /usr/realtime/modules/rtai_sem.ko
insmod /usr/realtime/modules/rtai_math.ko
insmod /usr/realtime/modules/rtai_smi.ko
rmmod pcspkr %%(此项是声音模块,亦有可能导致延时,因此关掉。)
20. vim /etc/X11/xorg.conf
在Section “Device” 下添加 Option “Accel” “false”
在Section “Screen” 下添加 Option “NoMTRR”
21. reboot
22. cd /usr/realtime/testsuite/kern/lantency à./run
你会看到ovl max一项,这就是你的实时系统的最坏延时,单位是纳秒,一般来说10个us以内都是很不错的,可以和vxworks一较高下,同时注意overruns一项应该为零,不然就问题大了。
到这一步你已经完成了整个工作的80%,基本上满足你的需求了,但如果你是一位苛求完美的人的话,那么这还不够,还需要利用RTAI提供的工具测试和分析你的机器的各项参数,然后修正它们后就能够使你的系统发挥到极致,关于这些的内容将在接下来的一篇文章中得到说明。