安装xenomai的记实

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

1. 环境准备

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

tar jvxf xenomai-2.6.2.tar.bz2

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

$ uname -a
Linux 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的记实_第1张图片
    大致的意思是说,要将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
    结果,在这里卡住了:
     安装xenomai的记实_第2张图片

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

    我在网上看到有人问同样的问题,但最终问题是解决了:
    安装xenomai的记实_第3张图片

    它指定了--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
    没有再报上次那个错误了,执行结果如下:
    安装xenomai的记实_第4张图片

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

    我用vim打开了其中的一个.patch文件,查看文件里面的内容:
    安装xenomai的记实_第5张图片
    这好像是以文本的形式描述文件的变更。比如:"-"开头的表示删除这行代码,"+"开头的表示新增这行代码。这么说来,.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
    这次,很顺利!

你可能感兴趣的:(centos,xenomai)