- 论坛徽章:
- 0
|
终于把RTLinux实时内核配置成功了,总的时间加起来大约有一天半左右,当成功那一刻,内心真的是激动极了,要知道这中间我反复编译,不知道面对多少次因不成功而造成了死机的情形,中间甚至有了放弃的念头,但最终我还是坚持了下来,并取得了令人欢心鼓舞的成功。
由于研究需要,在实时操作系统中我选择了RTLinux,它与windowsRTX、VxWorks等实时操作系统相比的诸多好处在此处不必多说,我选择了虚拟机来进行实验,一方面躲开了linux2.4内核不支持SATA硬盘的问题,另一方面可以更方便的进行实验研究,但代价是在配置过程中遇到了更多的问题,一度使我决定放弃虚拟机,而改为用实体操作系统进行研究,不过好在我认真分析了问题的所在,并参考了网络上其他人遇到的和我类似的情况,认为问题应该不是出在虚拟机上,而是和本身的内核配置有关系,只要反复尝试更改可疑的内核配置选项,就能够会取得成功,正是这一分析使我走到了最后,看到了黎明的太阳。
下面简要说说配置过程,以备日后参考。Linux操作系统我选择了Red Hat 9.0系列,内核为2.4.20-8,需要从
www.kernel.org中下载到2.4.20
的内核源代码。rtlinux相应的选择了rtlinux-rtl3.2-pre3,其下载地址为
ftp://ftp.rtlinux-gpl.org/pub/rtlinux/。这两个文件下载后放到/usr/src目录下。
1. 把下载到的内核linux-2.4.20.tar.bz2解压到/usr/src目录下,解压后为linux-2.4.20,并建立一个链接文件指向它:
cd /usr/src
tar jxvf linux-2.4.20.tar.bz2
ln –s linux-2.4.20 linux
2. 解压rtlinux,解压后为rtlinux-3.2-pre3:
tar jxvf rtlinux-rtl3.2-pre3.tar.bz2
ln –s /usr/src/linux-2.4.20 rtlinux-3.2-pre3/linux (建立链接文件)
3. 为了方便,把rtlinux-3.2-pre3目录patches下的相应内核patch复制到/usr/src下
cp rtlinux-3.2-pre3/patches/kernel-2.4.20-patch rtlinux-patch
4. 进入到linux内核目录下,进行patch:
cd linux
patch –p1
5. 内核配置,这一步最为关键,如果最后失败,就是从这步重新开始,更改可疑的内核配置选项。需要说明三点,第一是由于选用的是虚拟机(后面验证要想通过RTlinux各个模块的测试,也需要加上这个选项),所以需要在scsi support中选择相应的Buslogic xxx support。第二是在File Systems中选择所有带有ext3的选项,选y表示直接编译进内核。第三是在处理器选型上很关键,选的不对,就会早成死机,我最后能够成功也是因为在这里进行了修改。
除此之外,还有以下几点需要注意:
Loadable module support->
Enable loadable module support,RTLinux使用模块功能来加载实时任务,此功能必须存在。
General setup->
(Direct) PCI access mode,嵌入式系统的BIOS可能很简化,甚至没有初始化PCI设备,此选项使Linux绕过BIOS自行配置PCI设备。
[] Advanced Power Management BIOS,机器的APM功能一定要关闭,它会抢夺RTLinux对硬件的控制。
Memory Technology Devices(MTD)->
Memory Technology Devices(MTD) support 此选项使RTLinux支持电子盘(SolidStateFlashDisk),大多数嵌入式系统都是用此类设备作为外存。如果实际使用的是IDE接口的电子盘,则不需要该选项。
File systems->
Compressed ROM file system support,支持压缩的ROM文件系统,对于存储空间比较紧张的嵌入式系统建议使用。
/proc file system support
make xconfig
选择更改
Save and exit
6. 编译内核
make dep
make clean(在重新进行内核配置时进行,第一次不必)
make bzImage
make modules
make modules_install
7. 进行内核启动相关设置
cp arch/i386/boot/bzImage /boot/rtzImage
cd /lib/modules/2.4.20-rtl3.2-pre3/kernel/drivers/
mkdir scsi
cd /usr/src/linux
cp drivers/scsi/Buslogic.o /lib/modules/2.4.20-rtl3.2-pre3/kernel/drivers/scsi/
cd /boot
mkinitrd initrd-2.4.20-rtl3.2-pre3.img 2.4.20-rtl3.2-pre3
8.在grub中添加启动新内核的选项
vi /etc/grub.conf
添加如下:
title rtlinux
root(hd0,0)
kernel /rtzImage ro root=/dev/sda2 (可用df –u查看根目录信息)
initrd /initrd-2.4.20-rtl3.2-pre3.img
然后按ESC键,再:q退出。
8. 重新启动并选择rtlinux系统
reboot
9. 进入系统后进入rtlinux目录编译
cd /usr/src/rtlinux-3.2-pre3
10. rtlinux实时内核配置,可选择默认选项
make xconfig
存盘退出
11. 编译rtlinux内核
make dep
make
make install
12. 测试Rtlinux和模块,若出现OK则成功,否则表现为死机,需重新更改内核配置并编译
make regression
成功则显示为:Testing multiple loads of rtl.o… [OK]
……………………………………………
13. 启动rtlinux:rtlinux start
查看rtlinux:rtlinux status
关闭rtlinux:rtlinux stop
14 haha,good luck for you!
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/102467/showart_2015516.html |
|