博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
安装xenomai的记实
阅读量:6414 次
发布时间:2019-06-23

本文共 2445 字,大约阅读时间需要 8 分钟。

hot3.png

    我写这篇日志的目的是记录我在CentOS上安装xenomai的过程。

1. 环境准备

    我从www.xenomai.org网站上下载了源码包 xenomai-2.6.2.tar.bz2。下载到本地,然后解压:

tar jvxf xenomai-2.6.2.tar.bz2

    而我本地CentOS内核版本是通过执行uname -a查看的:

$ uname -aLinux hevakelcj-notebook 2.6.32-279.19.1.el6.i686 #1 SMP Wed Dec 19 04:30:58 UTC 2012 i686 i686 i386 GNU/Linux
    在本地的 /usr/src/kernel 下没有内核的源码,看xenomai安装说明上说的要重新编译内核。所以必须要安装内核源码包:
sudo yum install kernel-devel.686
    安装完后,在 /usr/src/kernel 目录下就多了一个内核路径:2.6.32-279.19.1.el6.i686,这就是内核源码。
    配置内核还需要执行make menuconfig命令,而当前系统没有安装ncurses或没有库。执行命令时出错,要求安装一个ncurses-devel.686,于是安装:
sudo yum install ncurses-devel.i686

    安装完之后,再执行 make menuconfig 就正常了。

2. 开始安装

    在上一节,安装了kernel内核包、ncurses。现在,我们进行解压后了xenomail目录,打开工程下的README.INSTALL文件,我只看如何安装:

    
    大致的意思是说,要将xenomai集成到Linux内核中去,就必须运行上述指令:scripts/prepare-kernel.sh ...
    --linux=<linux-srctree> 参数是用于指定咱们内核源代码的路径。
    --adeos=<adeos-patch>是用来指定与内核源码对应的adeos补丁文件路径,如果补丁已经被安装,则不再需要指定。
    --arch=<target-arch>是用于指定是哪个平台的参数,这里我们指定为x86。

    OK, let me have a try. 我kernel源码安装在目录 /usr/src/kernels/2.6.32-279.19.1.el6.i686 下,所以我执行的命是:

$ scripts/prepare-kernel.sh --linux=/usr/src/kernels/2.6.32-279.19.1.el6.i686
    结果,在这里卡住了:
    

    说什么,不能从/dev/null读取I-pipe patch?什么情况?怎么解决?

    我在网上看到有人问同样的问题,但最终问题是解决了:

   

    它指定了--adeos与--arch参数,我也来试一下。我查到 ./ksrc/arch/x86/patches/ 目录下也有两个.patch文件:

    ipipe-core-3.2.21-x86-2.patch
    ipipe-core-3.5.3-x86-2.patch
    ipipe-core-3.4.6-x86-2.patch
    我随意选了一个,命令如下:

sudo scripts/prepare-kernel.sh --linux=/usr/src/kernels/2.6.32-279.19.1.el6.i686                                --adeos=./ksrc/arch/x86/patches/ipipe-core-3.2.21-x86-2.patch                                --arch=x86
    没有再报上次那个错误了,执行结果如下:
   

    这是成功了还是失败了?好像是失败了。

    我用vim打开了其中的一个.patch文件,查看文件里面的内容:

   
    这好像是以文本的形式描述文件的变更。比如:"-"开头的表示删除这行代码,"+"开头的表示新增这行代码。这么说来,.patch 文件是用于告诉程序我们该如何对kernel源码进行修改。如此说来,不同版本的内核代码必须使用对应版本的.patch文件才正确。
    我们内核的版本是 2.6.32-279.19.1.el6.i686,上面查了的。而我现在随便找的一个 ipipe-core-3.2.21-x86-2.patch 文件,完全牛头不对马嘴!So, 我们必须找到2.6.32对应的.patch文件。

    看来是我下载的xenomai源码的版本与我系统内核的版本不一致引起的。

    由于我下载的xenomai源码路径 xenomai-2.6.2/ksrc/arch/x86/patches 上有3个补丁文件:
    * ipipe-core-3.2.21-x86-2.patch
    * ipipe-core-3.5.3-x86-2.patch
    * ipipe-core-3.4.6-x86-2.patch
    所以,我猜想这个版本的xenomai应该对3.4.6的kernel支持。所以,我在www.kernel.org中下载了 linux-3.4.6.tar.bz2 。
    解压到相前目录下: tar xvf linux-3.4.6.tar.bz2
    然后再次执行:

scripts/prepare-kernel.sh --linux=../kernel/linux-3.4.6                           --adeos=./ksrc/arch/x86/patches/ipipe-core-3.6.4-x86-2.patch                           --arch=x86
    这次,很顺利!

转载于:https://my.oschina.net/hevakelcj/blog/106280

你可能感兴趣的文章
七:Mysql的乐观锁与悲观锁机制
查看>>
CSS滤镜及渐变 (filter样式表属性)
查看>>
调用上面的@InitBinder 解决客户端上传时间参数转换的问题
查看>>
net.sf.json.JSONException: There is a cycle in the hierarchy异常,解决方法
查看>>
Android自动化测试方向
查看>>
QT中常用数据之间转换
查看>>
向量的内积,长度,正交性
查看>>
app包中的fragment和v4包中的fragment的使用的区别
查看>>
Http协议与缓存
查看>>
监测超过特定内存阀值进程并结束
查看>>
Linux Centos 查询信息
查看>>
android adb命令
查看>>
python “双”稀疏矩阵转换为最小联通量“单”矩阵
查看>>
揭秘天猫双11背后:20万商家600万张海报,背后只有一个鹿班
查看>>
重置mysq root密码脚本
查看>>
我的友情链接
查看>>
MHA配置参数
查看>>
深入理解Lock
查看>>
vim的块选择
查看>>
HTML --块
查看>>