收藏 分享(赏)

Linux内核编译 实时性.doc

上传人:精品资料 文档编号:10872162 上传时间:2020-01-16 格式:DOC 页数:18 大小:1.51MB
下载 相关 举报
Linux内核编译 实时性.doc_第1页
第1页 / 共18页
Linux内核编译 实时性.doc_第2页
第2页 / 共18页
Linux内核编译 实时性.doc_第3页
第3页 / 共18页
Linux内核编译 实时性.doc_第4页
第4页 / 共18页
Linux内核编译 实时性.doc_第5页
第5页 / 共18页
点击查看更多>>
资源描述

1、 研 究 生 课 程 论 文(2009 -2010 学年第一学期)基于 2.6 内核和 RTAI 的实时 Linux 操作系统的构建研究生:xx提交日期:2010 年 03 月 09 日 研究生签名:xx学 号 xxxxxxxxxx 学 院 自动化科学与工程学院课程编号 S0811020 课程名称 嵌入式系统原理及应用学位类别 硕士 任课教师 xxx教师评语:成绩评定: 分 任课教师签名: 年 月 日基于 2.6 内核和 RTAI 的实时 Linux 操作系统的构建xx摘要:传统的桌面系统由于其面向用户的窗口系统,实时性在工业控制领域不能得到满足。RTAI 是一套用户可以使用的实时任务调用接口

2、,它的出现给人们带来了契机。本文首先简单介绍 Linux 操作系统,然后给出了基于 Linux-2.6.23内核的 RTAI-3.8 实时包安装过程,包括详细的内核配置修改及实时系统测试。关键词:Linux;RTAI;实时操作系统1 引言1.1 Linux 操作系统Linux 操作系统在短短的几年之内得到了非常迅猛的发展,这与 Linux 具有的良好特性是分不开的。Linux 包含了 Unix 的全部功能和特性。简单的说,Linux 具有开放性、多用户、多任务、良好的用户界面、设备独立性、提供了丰富的网络功能、可靠的系统安全、良好的可移植性。Linux 以它的高效性和灵活性著称。它能够在 PC

3、 计算机上实现全部的Unix 特性,具有多任务、多用户的能力。Linux 是在 GNU 公共许可权限下免费获得的,是一个符合 POSIX 标准的操作系统。Linux 操作系统软件包不仅包括完整的 Linux 操作系统,而且还包括了文本编辑器、高级语言编译器等应用软件。它还包括带有多个窗口管理器的 X-Windows 图形用户界面,如同我们使用Windows NT 一样,允许我们使用窗口、图标和菜单对系统进行操作。 Linux 之所以受到广大计算机爱好者的喜爱,主要原因有两个,一是它属于自由软件,用户不用支付任何费用就可以获得它和它的源代码,并且可以根据自己的需要对它进行必要的修改,无偿对它使用

4、,无约束地继续传播。另一个原因是,它具有 Unix 的全部功能,任何使用 Unix 操作系统或想要学习 Unix操作系统的人都可以从 Linux 中获益。1.2 实时 Linux 操作系统早期的 Linux 系统没有实时能力,就连基本的内核态任务抢占也没有。如果谈论 Real-Time Linux 系统,首先要谈论 RTLinux,它是第一个实时 Linux 系统,并且现在比较流行。RTAI 是 Real-Time Appication Interface 的缩写。从名称中可以看出 RTAI 是一套用户可以使用的实时任务调用接口。RTAI 实际上是RTLinux 的变种,由于 RTLinux

5、在移植时比较困难,因此 RTLinux 的一部分开发人员建立了 RTAI 系统。RTAI 也采用了架空 Linux 内核的机制。为了提供方便的移植结构,RTAI 非常小心的在 Linux 上定义了一组 RTHAL(Real-Time Hardware Abstraction Layer)。RTHAL 将 RTAI 需要在 Linux 中修改的部分定义成一组函数接口,RTAI 只使用这组接口和 Linux 沟通。这样可以使以后的移植工作中对 Linux 内核的代码修改量达到最低。RTAI 是完全开源的实时系统,它的源代码可以从 RTAI 官方网站免费获取。现在 RTAI 的使用范围比 RTLin

6、ux广泛的多。2 实时 Linux 操作系统实现步骤2.1 内核的编译内核,是个操作系统的核心。他负责管理系统的进程、内存、设备驱动程式、文档和网络系统,决定着系统的性能和稳定性。用户想要使用这些新特性,或想根据自己的系统度身定制一个更高效,更稳定的内核,就需要重新编译内核。更新的内核会支持更多的硬件,具备更好的进程管理能力,运行速度更快、更稳定,并且一般会修复老版本中发现的许多漏洞等,经常性地选择升级更新的系统内核是 Linux 使用者的必要操作内容。1) 安装 Linux 操作系统首先在计算机上安装 ubuntu9.10 系统,由于编译内核很难一次成功,需要多次编译,而编译过程中需要占用较

7、大的空间,故给了 20G 的硬盘空间,其中/boot 给了 256M,swap 给了 200M,其余全给/。2) 登陆 https:/www.rtai.org/下载最新的 RTAI 压缩包 rtai-3.8-tar.bz2,可以双击打开压缩包以查看里面内容,在这里主要查看与 RTAI 补丁包相匹配的内核包的型号,进入/rtai-3.8/base/arch/i386/patches/目录,查看当下文件,可以看到支持最新的内核的相关文件是 hal-linux-2.6.23-i386-1.12-03.patch。故需要下载 linux-2.6.23 版本内核。这里 i386 与 x86 之间的区别很

8、小,因为之间用过 x86中的相关内核 2.6.32 编译总出现错误,故在此选择 i386 中的 hal-linux-2.6.23-i386-1.12-03.patch。3) 登陆 http:/www.kernel.org/pub/linux/kernel/下载相关内核,现在我们就得到了 RTAI 压缩包和内核压缩包了。接下来将两个压缩包拷到 /usr/src 文件夹里面,这里需要 root 根用户权限,为以后能更方便的以管理员身份操作文件,这里安装一个软件,它的功能是用右键点击文件夹会出现“以管理员身份打开”选项,否则直接复制会出现“移动文件出错:Permission denied”提示。在终

9、端输入 sudo apt-get install nautilus-gksu 便可以安装。4) 现在 /usr/src 文件夹中有两个压缩包,分别是:rtai-3.8.tar.bz2 和 linux-2.6.23.2.tar.bz2。下面开始内核的编译工作:5) 切换到 root 权限,并准备基本的编译工具:wr-laptop:# sudo -irootwr-laptop:# apt-get install build-essential kernel-package ncurses-dev 6) 进入/usr/src 目录,以后的操作都是在这个目录中进行,解压缩 rtai 补丁包:rootw

10、r-laptop:# cd /usr/src rootwr-laptop:/usr/src# tar jxvf rtai-3.8.tar.bz2 7) 解压缩后会在 /usr/src 目录下出现 rtai-3.8 文件夹。也可以在此查看 rtai支持的 Linux 内核版本,如下图所示:图 2.1 rtai-3.8 支持的 Linux 内核版本8) 解压缩内核,并进入到 linux-2.6.23 文件夹目录中:rootwr-laptop:/usr/src# tar jxvf linux-2.6.23.tar.bz2 rootwr-laptop:/usr/src# cd linux-2.6.23

11、图 2.2 解压缩后的文件夹9) 给内核打上相应的 RTAI 补丁,注意补丁与内核要匹配:rootwr-laptop:/usr/src/linux-2.6.23# patch -p1 -b Local version-a ppend to kernel release = -rtai-3.8 本地版本-附加内核发行版本,此处填-rtai-3.8-wr,表明我们已经给新内核配置了RTAI,这样会在新内核的启动向导中出现 2.6.23rtai-3.8-wr 的选项,General setup -Create deprecated sysfs files (NEW) -no(3). Enable l

12、oadable module support - (允许可装载的模块支持)- Module versioning support (模块支持的版本) =no 不同的内核在使用同一模块时区别于塔原有的模块,此处不选。Enable loadable module support-Module unloading(模块卸载) 这个选项可以卸载不再使用的模块,如果不选将不能卸载任何模块。(4).Processor type and features -(处理器的类型和特性) - Symmetric multi-processing support(对称多处理器支持) =no 如果有多个 CPU 或者使

13、用的是多核 CPU 就选上.此时“Enhanced Real Time Clock Support“选项必须开启,“Advanced Power Management“选项必须关闭Processor type and features - Interrupt pipeline =yesProcessor type and features - Subarchitecture Type(子构架类型) =PC-compatible 标准的 PC 或兼容机。Processor type and features - Processor family(处理器系列)=core 2/newer xeon

14、根据实际 CPU 选择Processor type and features -Generic x86 support(通用 x86 支持)=no CPU 能在上述”Processor family” 中找到就可不选Processor type and features -Multi-core scheduler support(针对多核 CPU进行调度策略优化) =yesProcessor type and features -Preemption Model(内核抢占模式)-Preemptible Kernel (Low-Latency Desktop)(适合运行实时程序的主动内核抢占)-

15、yes(5). Power management options (ACPI, APM) - Power Management support(电源管理选项) =no 电源管理有 APM 何 ACPI 两种标准且不能同时使用,即使关闭该选项,X86 上运行的 Linux 也会在空闲时发出 HLT 指令将CPU 进入睡眠状态。Power management options (ACPI, APM) - CPU Frequency scaling(CPU变频控制)- CPUF requency scaling Power management options =no CPU 变频控制允许在运行中改

16、变 CPU 主频,达到省电和降温的目的,但是这个驱动不会自动改变 CPU 的时钟速度,选择 no。其他的设置可以保持默认,保存设置,也可备份一份配置文件,文件为/usr/src/linux-2.6.23/.config。若要更进一步精简内核,则需要对配置的各类信息和自己的计算机硬件有详细的了解。实际上也可以使用 xconfig 对内核进行配置,用起来会更加方便。先得装依赖包。如下:rootwr-laptop:/usr/src/linux-2.6.23# aptitude install libqt3-headers libqt3-mt-dev libqt3-compat-headers lib

17、qt3-mtrootwr-laptop:/usr/src/linux-2.6.23# make xconfig图 2.4 xconfig 内核配置界面12) 编译和安装内核:rootwr-laptop:/usr/src/linux-2.6.23# make-kpkg cleanrootwr-laptop:/usr/src/linux-2.6.23# make-kpkg -initrd kernel_image kernel_headers图 2.5 内核编译中图 2.6 内核编译完成当编译结束后,会在/usr/src 目录下生成两个文件,分别是镜像文件和头文件,如下图所示,然后需要安装这两个文

18、件。图 2.7 编译后生成的镜像文件和头文件13) 安装相应的镜像文件和头文件:rootwr-laptop:/usr/src/linux-2.6.23# cd /usr/srcrootwr-laptop:/usr/src# dpkg -i linux-headers-2.6.23-rtai-3.8-wr_2.6.23-rtai-3.8-wr-10.00.Custom_i386.deb rootwr-laptop:/usr/src# dpkg -i linux-image-2.6.23-rtai-3.8-wr_2.6.23-rtai-3.8-wr-10.00.Custom_i386.deb图 2

19、.8 安装完镜像文件和头文件安装后将得到了三个非常重要的文件,分别是 System.map,config 和vmlinuz,其具体的文件名字是这三个文件名后接上内核版本还有个性化定制的名字,这三个文件应该已经被拷贝到/boot/路径下,如下图所示:图 2.9 安装成功后生成的三个文件14) 重启系统rootwr-laptop:/usr/src# reboot选择进入刚刚编译的新内核,相应的选项应该为:linux-2.6.23-rtai-3.8-wr。因为 ubuntu 是硬盘安装,故开机画面无截图。2.2 编译 RTAI启动新内核后,打开终端,接下来编译 RTAI,对新内核进行实时配置。1)

20、配置 RTAIwr-laptop:# sudo -irootwr-laptop:# cd /usr/src/rtai-3.8rootwr-laptop:/usr/src/rtai-3.8# make menuconfig图 2.10 RTAI 配置界面配置中只需改动以下选项:General Linux source tree = /usr/src/linux-2.6.23此处是对新内核进行 RTAI 配置,故路径选择是新内核的绝对路径/usr/src/linux-2.6.23Machine(x86) Number of CPUs (SMP-only) =2由于我的电脑是双核,故此处选择的是 2

21、。其他的配置是选择默认的。2) 编译 RTAIrootwr-laptop:/usr/src/rtai-3.8# make3) 安装 RTAIrootwr-laptop:/usr/src/rtai-3.8# make install图 2.11 安装 RTAI 中4) 测试 Linux-RTAIrootwr-laptop:/usr/src/rtai-3.8# cd /usr/realtime/time/testsuite/kern/latencyrootwr-laptop:/usr/realtime/time/testsuite/kern/latency# ./run图 2.12 测试中可按 C

22、trl-C 停止运行。2.3 出现的问题与解决1) CPU 核过多,出现以下提示(之前编译 2.6.32 所出现的问题):GEN include/linux/bounds.hCC arch/x86/kernel/asm-offsets.sIn file included from include/linux/sched.h:62,from arch/x86/kernel/asm-offsets_32.c:8,from arch/x86/kernel/asm-offsets.c:2:include/linux/ipipe.h:76:2: error: #error “CONFIG_NR_CPUS

23、 is too large, please lower it.“make1: * arch/x86/kernel/asm-offsets.s 错误 1make: * prepare0 错误 2解决方法:首先尝试在网上搜索,是需要将 CPU 的个数支持降低,但是按步骤修改后,仍然出现上述错误,最后的解决方案是:在配置内核时将Processor type and features - Symmetric multi-processing support 关掉。2) 可能是寄存器错误,出现以下提示:图 2.13 错误提示解决方法:其实对问题的根源不是很清楚,在网站上查到了解决方案,打开文件 arch

24、/i386/boot/boot.h 所在行用“=q“ 替换“=r“即可,如下图所示:图 2.14 修改 boot.h 文件3) 编译成功后进入新内核提示以下错误:udev: missing sysfs features; please update the kernel or disable the kernels CONFIG_SYSFS_DEPRECATED option;解决方法:在 .config 文件中查到 CONFIG_SYSFS_DEPRECATED 一行,将之关闭。3 总结与感受在编译内核之前只是用过 Linux 操作系统,却从未编译过内核,这也是一段较为漫长的学习过程,操作习

25、惯还未适应,遇到很多问题,只能到网上查找资料来学习,也花了很多时间。也正是编译内核的过程中学到了很多东西,操作也逐渐的熟练。本次编译尝试了多种内核的编译,最后在 linux-2.6.23 内核编译成功,很难说清楚中间有什么问题,因为尽管是相同的内核配置,也会出现不同的问题,只有详细了解自己的计算机硬件配置才能更好的配置内核。之前的编译内核命令用的是:make clean & make & make modules_install & make install,然后 update-grub,后来发现这种方法比较麻烦,镜像文件还需要手工生成,于是又使用另一种方法即:make-kpkg -initr

26、d kernel_image kernel_headers 来生成镜像文件和头文件,然后安装,它会自动更新启动菜单。具体的编译和配置过程大概持续了近 20 天,参考了许多资料,有很多情况是编译完后出现的问题,然后回过头来重新配置,重新编译,然后可能再出现新问题,又回到起点,中间过程非常漫长,尤其需要耐心和细心,但收获也异常丰富,对编译内核也有些经验,如果编译内核后总是出现问题不成功,可以尝试使用不同的内核版本或者不同的计算机,相对而言,低版本的 ubuntu(如ubuntu8.04) ,不太新的计算机(CPU 非双核)编译内核的成功率要大一些。参考资料:1 RTAI Installation Complete GuideLink: https:/www.rtai.org/RTAICONTRIB/RTAI_Installation_Guide.pdf2 How-to Install RTAI in Ubuntu HardyLink: https:/woc.uc.pt/deec/getFile.do?tipo=2&id=56903 Linux 2.6.19.x 内核编译配置选项简介Link: http:/ 鸟哥 等. 鸟哥的 Linux 私房菜, 基础学习篇(第二版)M北京: 人民邮电出版社, 2008

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报