基于26内核的RTAI实时操作系统的构建.docx
《基于26内核的RTAI实时操作系统的构建.docx》由会员分享,可在线阅读,更多相关《基于26内核的RTAI实时操作系统的构建.docx(22页珍藏版)》请在冰点文库上搜索。
基于26内核的RTAI实时操作系统的构建
基于2.6内核的RTAI实时操作系统的构建
摘要1
1安装Linux操作系统2
1.1文件下载安装2
1.2配置网络参数2
2编译准备3
2.1rtai压缩包下载并解压3
2.2linux内核压缩包下载并解压4
2.3给内核打补丁5
2.4配置内核5
3安装内核7
3.1清除垃圾并执行编译7
3.2配置并安装模块7
3.3安装内核并备份8
4安装Rtai10
4.1下载安装MESA库文件10
4.2下载安装EFLTK包10
4.3配置rtai12
4.4编译并安装rtai12
4.5rtai实时性测试13
5总结15
6参考文献15
摘要
本文详细介绍了Linux内核编译前的准备工作、内核编译的具体步骤,使用电脑安装双系统的方式,在Window系统安装好的条件下完成的安装Ubuntu10.10,安装过程是通过它内置的wubi程序进行的系统配置,重启系统使Ubuntu安装完成后,在安装的系统中执行相关的操作。
关键字:
Ubuntu10.10,Linux内核,Rtai
1安装Linux操作系统
1.1文件下载安装
通过ubuntu官网(
在安装向导界面选择磁盘参数,然后点击安装,开始执行解压到选定的目录,直到文件执行完成,重启计算机。
进入系统前会看到在原来的仅有window系统的基础上,现在又多了Ubuntu,选择进入,如果是第一次则会执行安装程序,其中会涉及到磁盘分区以及软件设置等相关操作,但都已经自动完成,直到最后安装完成,重新启动以进入Linux系统,选中Ubuntu后进入了一个可选项显示Linux系统的版本,选择并直接进入。
1.2配置网络参数
通过系统->首选项->网络连接->有线->添加:
则弹出一个可以设置网络链接到窗口,可以自己定义一个网络连接名称(默认Autoeth0),选中自动连接复选框,选择IPv4设置tab项,连接方法选择手动,并输入原来在Window环境下可以上网的IP配置信息,点击应用并退出则可以上网。
其中截图快捷方式是通过系统->首选项->键盘快捷方式,从弹出的窗口中对窗口截图操作添加快捷方式。
配置好连接之后可以看到连接已经建立的弹出窗口提示:
2编译准备
2.1rtai压缩包下载并解压
解压到urs/src目录下,输入命令:
cd/usr/src
sudotar–bzip2–xvfrtai-3.8.tar.bz2
解压结果为在usr/src目录下创建了一个以rtai-3.8命名的文件夹,rtai文件被解压在里面了,为了以后命令输入方便,为新建的文件夹rtai-3.8创建一个名称为rtai的快截方式,输入命令:
rm–frtai
sudoln–fsrtai-3.8rtai
命令行窗口的解压结果如下图所示:
2.2linux内核压缩包下载并解压
支持rtai最新的内核版本为2.6.32.2的,从www.kernel.org网站上下载未被修改过的源代码压缩包(linux-2.6.32.2.tar.bz2)来构建自订制系统。
同样要解压到urs/src目录下,因为现在本身就在这个目录下,就不用转目录了,输入命令:
sudocpsuoxd/linux-2.6.37.1.tar.bz2/usr/src
sudotar–bzip2–xvflinux-2.6.32.2.tar.bz2
解压结果为在usr/src目录下创建了一个以linux-2.6.32.2命名的文件夹,linux内核的原文件被解压在里面了,为了以后命令输入方便,为新建的文件夹linux-2.6.32.2创建一个名称为linux的快截方式,并进入该文件夹,以后的操作就是在这个文件夹下了,输入命令:
rm–flinux
sudoln–fslinux-2.6.32.2linux
cdlinux
命令行窗口的解压结果如下图所示:
2.3给内核打补丁
进入rtai.3.8文件夹下,运行对应于当前要安装内核的补丁,因为当前在/usr/src/linux目录下,所以使用全路径来访问补丁文件,并返回linux目录,输入命令:
sudopatch–p1
cd/usr/src/linux
执行解压时出现错误,没装patch命令,则安装patch后,重新输入命令,安装补丁命令:
sudoapt-getinstallpatch
命令行窗口的patch安装和打补丁结果如下图所示:
2.4配置内核
经学习发现这个需要的东西有点多,配置需要涉及到中央处理器(CPU)类型及特性、块设备层、电源管理选项、总线选项、网络等硬件选项,以及设备驱动程序、文件系统、分析支持、内核hack选项、安全选项、加密选项、库子程序等系统的软件选项,其中包括多个配置工具,如:
Makeconfig的配置命令解释器:
对配置脚本中使用的配置命令进行解释;makexconfig命令的基于Xwindows图形界面的用户配置界面;Makemenuconfig的配置用户界面:
提供基于字符界面、基于Ncurses图形界面;事实上,由于Linux2.6.32开始引入了一个makelocalmodconfig用于简化kernel的配置,我没有过于繁重地选择内核的各个模块,怕选不好会影响到以后到编译及其它执行,使用命令拷贝当前系统配置。
执行命令:
sudomakeO=/home/build/kernellocalmodconfig,结果会不断要求确认设置不同的环境变量,还可以使用已经发布的配置文件,只是把系统的配置文件复制过来就可以了,输入命令:
sudocp–f/boot/config-2.6.35.22-generic.config
此处选择menuconfig进行学习使用,输入命令:
sudomakemenuconfig,出现错误提示,经过查找资料需要安装libncourses库,则执行命令:
sudoapt-getinstalllibncurses5
sudoapt-getinstalllibncurses5-dev
则自动下载并安装更新成功了相关的库文件,重新执行命令:
sudomakemenuconfig
结果显示:
…
YourdisplayistoosmalltorunMenuconfig!
Itmustbeatleast19linesby80columns.
make[1]:
***[menuconfig]错误1
提示信息为窗口太小,调整窗口大小后,重新输入命令执行:
sudomakemenuconfig
由于使用电脑为单核处理器,同时内存空间也相对较小,所以做些简单的修改:
截图结果如下:
3安装内核
3.1清除垃圾并执行编译
清除一些不必要的文件,这些文件可能会导致某些编译错误,但一般不执行也不会有什么问题,因为经过很多次重装并没有看到那里有文件,清除文件命令:
sudomakeclean
执行编译,输入命令:
sudomake
命令行窗口的编译结果如下图所示:
3.2配置并安装模块
配置模块输入命令:
sudomakemodules
命令行窗口的模块配置结果如下图所示:
有图可见有些问题,说有些不匹配,先不管,执行安装所有编译并配置好的模块,输入命令:
sudomakemodules_install
命令行窗口的模块安装结果如下图所示:
3.3安装内核并备份
输入命令:
sudomakeinstall
命令行窗口的内核安装结果如下图所示:
备份配置文件以备将来使用,输入命令:
sudocp-f.configconfig-my-rel2.6.32.2.txt
为了在下次编译新内核时不被覆盖掉,进入boot目录下备份内核镜象,虚拟磁盘镜象以及系统镜象文件,输入命令:
cd/boot
sudocp-fvmlinuz-2.6.32.2my-rel-2.6.32.2
sudocp-finitrd-2.6.32.2.imgmy-inrd-2.6.32.2.img
sudocp-fSystem.map-2.6.32.2System.map-my-rel2.6.32.2
备份后boot文件夹窗口截图:
4安装Rtai
4.1下载安装MESA库文件
官方文档说可以登录www.mesa3d.org网站下载mesalib库文件,这是一个通过OpenGL实现了的3D图像库,不过不知道为什么这里没找到下载连接,没有找到tar.gz扩展名到文件,下载到文件为tar.bz2的扩展名我是从csdn上(
sudocp/home/suoxd/MesaLib-7.3.tar.bz2/tmp
cd/tmp
sudotar-xjfMesaLib-7.3.tar.bz2
cdMesa-7.3
sudomakelinux-x86-static
sudomakeinstall
命令行窗口的MESA库安装结果如下图所示:
4.2下载安装EFLTK包
官方网站上讲可以通过执行代码:
cvs-d:
pserver:
anonymous@:
/cvsroot/edelogin(pressENTERwhenCVSasksforpassword)
cvs-z3-d:
pserver:
anonymous@:
/cvsroot/edecoefltk
则实现自动连接下载,但我没有能连上CVS源代码库服务器,所以执行很多次一直没能连接成功,结果都是连接超时,如图所示:
于是我自己下了个,下载地址是http:
//equinox-project.org/wiki/Download,不过一个官网(http:
//pkgs.org/package/efltk)也有多个版本下,经查资料它是由MikkoLahteenmaki开始的,在未正式发布FLTK2.0基础上开发的一个扩展分支,FLTK是一个轻量级的GUI开发库。
但这轻量级并不代表功能弱,FLTK在具有基本的GUI功能之外,还拥有一些特殊的功能,比如跨平台、内置OpenGL功能、速度更快、尺寸更小、协议宽松等。
EFLTK在它的基础上添加了对XML、Network和databased等功能的支持,在http:
//equinox-project.org/api/efltk有关于EFLTK的Modules、ClassHierarchy等详细文档说明。
但我在配置的时候一直没法成功,一直提示权限不够,但进入root权限还是不行,加sudo后的结果为没有configh.in的命令,所以这一步没能成功,以下为操作过程截图:
sudocp/home/suoxd/ede-1.2.tar.gz
sudocp/home/suoxd/efltk-2.0.8.tar.gz
cd/tmp
sudotarxzfede-1.2.tar.gz
sudotarxzfefltk-2.0.8.tar.gz
cdefltk
./efltk-config.in--prefix=/usr/local--multithread
./emake
./sudoemakeinstall
命令行窗口的配置结果如下图所示:
命令行窗口的emake结果如下图所示:
命令行窗口的emakeinstall结果如下图所示:
4.3配置rtai
进入rtai安装的文件夹,并执行配置,输入命令:
cd/usr/src/rtai
sudomakeconfig
命令行窗口的rtai配置结果如下图所示:
4.4编译并安装rtai
输入命令:
sudomake
sudomakeinstall
命令行窗口的rtai编译结果如下图所示:
命令行窗口的rtai安装结果如下图所示:
4.5rtai实时性测试
输入命令行:
cd/usr/realtime/testsuite/user/latency
sudo./run
输入命令行:
cd/usr/realtime/testsuite/user/preempt
sudo./run
还有一些其它的测试命令,如下:
cd/usr/realtime/testsuite/user/switches
./run
cd/usr/realtime/testsuite/kern/latency
./run
cd/usr/realtime/testsuite/kern/preempt
./run
cd/usr/realtime/testsuite/kern/switches
./run
以上这些命令有些因为库文件不存在没法成功执行,而且执行过程也非常慢,每次执行后会使电脑慢很多,所以这次又没成功,后来又试了几次都没能使rtaid在自己构建的系统上完整运行。
5总结
虽然经过多次尝试还是没能成功安装并实现Linux的实时性功能,但通过整个安装过程也对系统的基本结构有了初步的了解,也学到了不少东西,系统的编译和安装以及软件的安装和运行过程并不是同时完成的。
从内核源程序压缩文件的解压、编译才能安装,然后修改启动项后则可以通过重新启动系统进入自己构建的操作系统,整个Linux内核由很多模块组成,每个模块可以独立编译,然后用连接程序将它们连接在一起成为一个单独的目标程序。
这种结构的最大特点是内部结构简单,子系统易于访问,因此内核的工作效率较高。
虽然是第一次接触linux,但还是有些心得,下面是自己实验过程的部分心得:
1、编译之前需要先确认一些系统工具以及相关配置是否能够满足2.6内核的需要,然后根据需要进行配置;
2、编译时要可以联网,因为有好多程序是需要自动下载安装的;
3、对于要安装的软件,需要匹配相应的系统;
4、配置过程可以删除很多没必要的东西,使内核很小,则提高了安全性和效率,但如果误删了,就会编译失败,编译内核要正确进行,不然有些硬件就用不了,或进不了系统;
5、Linux的文件系统是区分大小写的,不像Windows的文件系统不区分大小写;
6、要尽可能使用系统官方文档,比如根目录下的READERME文件及官网说明。
当然作为初学者遇到的问题不止这些,但基本出错的地方也基本可以确定,所以大部分都可以通过google找到答案,虽然这次没能按要求完成作业,但这次经历让我有了很多学习,还是会自己去学习这门课程。
Linux是基于过程的结构,因此有助于不同的人参与不同过程的开发,同时Linux内核又是开放式的结构,它允许任何人对其进行修正、改进和完善,我相信随着更多的爱好者加入,Linux一定会越来越完美。
6参考文献
[1]毕伟宏,Linux内核与内核编译[J].福建电脑,2007,2:
4,16
[2]孙昌霞,郭玉峰,嵌入式Linux内核的编译与移植[J].计算机技术与自动化,2008,10:
30-31
[3]冉朝霞,利用实时应用程序接口RTAI增强Linux内核实时性[J].网络安全,2009,4:
22-24