一、Linux内核打实时补丁

1、将下载的Linux和xenomai安装包放在/usr/src目录下,并解压文件包,命令如下

tar xjf  Linux-3.8.13.tar.bz2

  tar xjf  xenomai-2.6.3.tar.bz2

2、利用/xenomai-2.6.3/scripts目录下的prepare-kernel.sh脚本进行打补丁,命令如下

cd /usr/src/xenomai-2.6.3/srcipts/prepare-kernel.sh  --arch=x86  --linux=/usr/src/linux-3.8.13

执行后,输出结果如下

patching file arch/x86/Kconfig
patching file arch/x86/include/asm/apic.h
patching file arch/x86/include/asm/apicdef.h
[...]
patching file mm/mmu_context.c
patching file mm/mprotect.c
patching file mm/vmalloc.c

Xenomai  提供了一个与 Linux  无缝结合地实时子系统,所以首先要做的是将Xenomai 作为目标内核的一部分进行编译。Xenomai  提供了一个脚本文件scripts/prepare-kernel.sh  用来进行目标内核的编译。这个脚本文件同样能够应用于Adeos 对于内核的补丁。脚本文件使用方法如下: 
$scripts/preparekernel.sh 
–linux=<linuxsrctree>[adeos=<adeospatch>][arch=<targetarch>] 
--linux 选项指定了目标内核源代码树路径。 
--adeos 选项指定了与目标内核版本很相匹配的Adeos补丁的路径。如果Adeos

已经安装在目标内核中,这个参数选项可以忽略。如果系统侦测到以前安装过Adeos补丁,将不再安装。 
--arch 选项给脚本文件指定了目标板的结构。如果没有说明该选项,编译系统将会侦测并推荐一个合理的默认值。

打完补丁后的效果图

二、配置内核

参考:http://qiuhanstar.blog.163.com/blog/static/3085469520104610215649/

http://news.gmane.org/gmane.linux.real-time.xenomai.users

https://code.google.com/p/jhu-lcsr-ros-pkg/wiki/UbuntuXenomai

1、依次使用如下命令

1、cd /usr/src/linux-3.8.13
2、cp /boot/config-3.8.0-generic  .config
3、make menuconfig

在make menuconfig 中设置一下3个选项

1、
General setup -->
   <*> Kernel .config support
      [*]  Enable access to .config through /proc/config.gz/

2、
Processor type and features -->
    Processor family (Core 2/newer Xeon) -->
3、
Processor type and features -->
    Preemption Model  -->
        (X) Preemptible Kernel (Low-Latency Desktop)
三、内核编译

依次执行(一下命令最好在超级用户模式下输入)

make dep
make clean
make bzImage
make modules
make modules_install
make install

编译uImage时 出现错误  

解决方法:

http://www.360doc.com/content/14/0925/15/18578054_412271561.shtml
这段时间比较长  2到3个小时左右

四、建立虚拟文件系统
mkinitramfs –o /boot/initrd-3.8.13.img 3.8.13
五、添加组和用户
sudo addgroup xenomai
sudo usermod -a -G xenomai YOURUSERNAME
六、修改启动项

通过修改grub启动项来启动新的内核,修改grub.cfg之前要修改文件的属性以便顺利的写文件


chmod 777 /boot/grub/grub.cfg

打开grub.cfg文件
vim /boot/grub/grub.cfg
修改如下所示内容
menuentry 'Ubuntu, with Linux 2.6.32-21-generic' --class ubuntu --class gnu-linux --class gnu --class os {
        recordfail
        insmod ext2
        set root='(hd0,1)'
        search --no-floppy --fs-uuid --set 97129b6f-598b-4b8c-9c44-e0dec8bb26d6
        linux   /boot/vmlinuz-2.6.32-21-generic root=UUID=97129b6f-598b-4b8c-9c44-e0dec8bb26d6 ro   crashkernel=384M-2G:64M,2G-:128M quiet splash
        initrd  /boot/initrd.img-2.6.32-21-generic
}
 
menuentry 'Ubuntu, with Linux 3.8.13-xenomai-generic' --class ubuntu --class gnu-linux --class gnu --class os {
        recordfail
        insmod ext2
        set root='(hd0,1)'
        search --no-floppy --fs-uuid --set 97129b6f-598b-4b8c-9c44-e0dec8bb26d6
        linux   /boot/vmlinuz-3.8.13 root=UUID=97129b6f-598b-4b8c-9c44-e0dec8bb26d6 ro   crashkernel=384M-2G:64M,2G-:128M quiet splash
        initrd  /boot/initrd-3.8.13.img
}

这里有2个启动项,第二个启动项是我们需要添加的,更改的部分是linux和initrd部分UUID以及其他部分保持不变。

然后重启,启动时按住shift键进入grub选择新的内核启动。

七、验证启动的新内核
uname –a

会出现如下信息可以看到3.8.13表示是新的内核


Linux wujing 3.8.13 #1 SMP PREEMPT Wed May 8 18:43:42 CST 2016 i686 GNU/Linux

   接下来要关闭之后 重启,就如原来的系统,执行以下命令。由于我最后还是有问题(进入新内核之后无法操作,输入命令没有效果,无法访问目录,shutdown命令也不能实现)
重启进入原来系统之后 查看如下信息(在超级用户模式下进行以下命令)
root@wujing:/usr/src/linux-3.8.13# dmesg | grep I-pipe
[    0.000000] I-pipe 2.8-04: pipeline enabled.
[    3.080321] I-pipe: Domain Xenomai registered.
root@wujing:/usr/src/linux-3.8.13# dmesg | grep I-pipe
[    0.000000] I-pipe 2.8-04: pipeline enabled.
[    3.080321] I-pipe: Domain Xenomai registered.
root@wujing:/usr/src/linux-3.8.13# dmesg | grep Xenomai
[    3.080321] I-pipe: Domain Xenomai registered.
[    3.080367] Xenomai: hal/i386 started.
[    3.080757] Xenomai: scheduling class idle registered.
[    3.080772] Xenomai: scheduling class rt registered.
[    3.081321] Xenomai: real-time nucleus v2.6.0 (Movin' On) loaded.
[    3.081333] Xenomai: debug mode enabled.
[    3.082899] Xenomai: starting native API services.
[    3.082923] Xenomai: starting POSIX services.
[    3.083330] Xenomai: starting RTDM services. 
root@wujing:/usr/src/linux-3.8.13# cat /proc/ipipe/version
 4
root@yangjia-desktop:/usr/src/linux-3.8.13# cat /proc/xenomai/version
 2.6.3

如出现以上信息表明补丁已经打好。

八、配置和编译xenomai 

/*是否增加--enable-x86-sep --enable-x86-tsc需要查看cpu的信息:用命令cat /proc/cpuinfo,如果在flag中出现则添加*/


cd /usr/src/xenomai-2.6.3
./configure  --enable-shared  --enable-smp  --enable-posix-auto-mlockall  --enable-dlopen-skins  --enable-x86-sep  -–enable-x86-tsc
make
sudo make install
我用cat/proc/cpuinfo/在flag中没有看到--enable-x86-sep --enable-x86-tsc
第一次没有加--enable-x86-sep --enable-x86-tsc
报错为--enable-dlopen-skins --enable-posix-auto-mlockall 没有
第二次加了--enable-x86-sep --enable-x86-tsc
仍报错为--enable-dlopen-skins   --enable-posix-auto-mlockall  没有

接下来执行以下命令
cd /usr/xenomai/bin/
export LD_LIBRARY_PATH=/usr/xenomai/lib/
./cyclictest
./latency
正常情况会出现如下结果,我没有出现
== Sampling period: 100 us
== Test mode: periodic user-mode task
== All results in microseconds
warming up...
RTT|  00:00:01  (periodic user-mode task, 100 us period, priority 99)
RTH|----lat min|----lat avg|----lat max|-overrun|---msw|---lat best|--lat worst
RTD|     -1.449|      2.415|     19.886|       0|     0|     -1.449|     19.886
RTD|     -1.470|      2.412|     19.979|       0|     0|     -1.470|     19.979
RTD|     -1.456|      2.384|     15.410|       0|     0|     -1.470|     19.979
RTD|     -1.668|      2.401|     20.585|       0|     0|     -1.668|     20.585
RTD|     -1.445|      2.364|     18.106|       0|     0|     -1.668|     20.585
RTD|     -1.671|      2.377|     18.016|       0|     0|     -1.671|     20.585
RTD|     -1.475|      2.384|     19.541|       0|     0|     -1.671|     20.585
RTD|     -1.470|      2.356|     17.344|       0|     0|     -1.671|     20.585
RTD|     -1.483|      2.418|     20.039|       0|     0|     -1.671|     20.585
RTD|     -1.469|      2.374|     14.998|       0|     0|     -1.671|     20.585
(Contrôle-C)
---|-----------|-----------|-----------|--------|------|-------------------------
RTS|     -1.671|      2.388|     20.585|       0|     0|    00:00:10/00:00:10


xenomai安装的更多相关文章

  1. Xenomai 安装准备工作

    一些安装xenomai的参考资料: http://my.oschina.net/hevakelcj/blog/124290 http://blog.sina.com.cn/s/blog_60b9ee1 ...

  2. 【xenomai内核解析】系列文章大纲

    xenomai内核解析 本博客为本人学习linux实时操作系统框架xenomai的一些记录,主要剖析xenomai内核实现,以及与linux相关的知识.方便读者定位具体文章,现列出本博客大纲,后续会陆 ...

  3. Xenomai for Debian Jessie

    安装内核源码包 apt install linux-source-3.16 安装其他编译需要的工具: apt install build-essential libc-dev libc6-dev pk ...

  4. kernel build &amp; preempt-rt patch &amp; xenomai

    提前准备好 linux 内核源代码,假设是 x86 系统.能够去下载原生内核(Vanilla kernel): wget https://www.kernel.org/pub/linux/kernel ...

  5. xenomai内核解析--双核系统调用(三)--如何为xenomai添加一个系统调用

    版权声明:本文为本文为博主原创文章,转载请注明出处.如有错误,欢迎指正. @ 目录 一.添加系统调用 二.Cobalt库添加接口 三.应用使用 一.添加系统调用 下面给xenomai添加一个系统调用g ...

  6. 【原创】xenomai内核解析--双核系统调用(二)--应用如何区分xenomai/linux系统调用或服务

    版权声明:本文为本文为博主原创文章,转载请注明出处.如有错误,欢迎指正. 1. 引出问题 上一篇文章xenomai内核解析--双核系统调用(一)以X86处理器为例,分析了xenomai内核调用的流程, ...

  7. 【原创】xenomai 在X86平台下中断响应时间测试

    1.中断响应时间 实时操作系统的意义就在于能够在确定的时间内处理各种突发的事件,而中断这些事件.系统抢占调度的触发点,因而衡量嵌入式实时操作系统的最主要.最具有代表性的性能指标参数无疑是中断响应时间. ...

  8. docker——容器安装tomcat

    写在前面: 继续docker的学习,学习了docker的基本常用命令之后,我在docker上安装jdk,tomcat两个基本的java web工具,这里对操作流程记录一下. 软件准备: 1.jdk-7 ...

  9. 网络原因导致 npm 软件包 node-sass / gulp-sass 安装失败的处理办法

    如果你正在构建一个基于 gulp 的前端自动化开发环境,那么极有可能会用到 gulp-sass ,由于网络原因你可能会安装失败,因为安装过程中部分细节会到亚马逊云服务器上获取文件.本文主要讨论在不变更 ...

随机推荐

  1. Ibatis -- 一次执行多条SQL

    <statement id="DeleteAccount" parameterClass="Account"> BEGIN DELETE FROM ...

  2. TYVJ P1403 [NOIP2010]关押罪犯

    TYVJ的编译器总是要搞点岔子出来,上次是double必须用f输出而不能用lf,这次又不知道为何CE 于是去了洛谷P1525测试,AC 题目描述 S 城现有两座监狱,一共关押着N 名罪犯,编号分别为1 ...

  3. Yii查看执行的SQL

    开户debug 修改配置文件 :protected/config/main.php, 'log' => array(            'class' => 'CLogRouter', ...

  4. java 打包jar文件以在没有安装JDK或JRE的机子上运行

    前言: java号称“一次编译,到处运行”,但这有个前提,那就是你的机子上得安装java环境.对于开发人员或其他一些比较懂计算机的人来说这没什么,但是对于一些不懂计算机的人来说这会很麻烦,他们更希望的 ...

  5. 神器Alfred使用

    神器官网:http://www.alfredapp.com/ 许多人装好了之后就再也没有怎么使用过,这软神器, 一直不明白它为什么叫神器,最近研究了一下,真的是,很多东西我们没有好好利用 部分使用功能 ...

  6. 利用ps橡皮擦工具快速抠图

    原图 最终效果 1.打开图片,ctrl+j得到图层1,点击红圈处,创建图层2,放于图层1与背景层之间,填充白色作为检查效果和新的背景. 2.按图示给出的参数,用背景橡皮擦在图层1里擦吧,注意擦的时候尽 ...

  7. javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection

    客户端向服务器发送数据时,份两种情况,SSL单向验证和SSL双向验证 1.SSL单向验证时 代码如下: import java.io.IOException; import java.util.Has ...

  8. eclipse-统计代码行数

    使用Eclipse可以方便的统计工程或文件的代码行数,方法如下: 1.点击要统计的项目或许文件夹,在菜单栏点击Search,然后点击File...  2.选中正则表达式(Regular express ...

  9. Oracle 11g客户端在Linux系统上的配置步骤详解

    Oracle 11g客户端在Linux系统上的配置步骤详解 2011-07-26 10:47 newhappy2008 CSDN博客 字号:T | T 本文我们主要介绍了Oracle 11g客户端在L ...

  10. C++标准库异常类

    C++标准库异常类 2012-12-24 16:27 5269人阅读 评论(1) 收藏 举报  分类: c/c++(36)  C++标准库异常类继承层次中的根类为exception,其定义在excep ...