安装内核源码包

apt install linux-source-3.16

安装其他编译需要的工具: apt install build-essential libc-dev libc6-dev pkg-config ncurses-dev

安装好的内核源码和config文件在 /usr/src中,linux-source-3.16.tar.xz是源码压缩包(找个地方解压下,下面称解压的linux源码根目录为 $linux-tree),而linux-config-3.16中有需要的config文件,找一个和 uname -r 输出相似的config,对于32位的Debian来说应该是 config.i386_none_686-pae.xz,解压之后重命名为 .config放到 $linux-tree中去,现在可以编译下内核试试了

  • make menuconfig (输入 / 开始搜索,然后输入localversion,按1选择本地版本,输入一个自己能识别的后缀)
  • make bzImage modules
  • sudo make modules_install
  • sudo make install

这样编译好的内核就自动安装到 /boot/ 目录下去了,而模块在 /lib/modules/3.16.36xxx 下面了

简单运行下 grub2-mkconfig -o /boot/grub2/grub.cfg 就可以将新编译的内核放到开机的grub菜单中去了(赶紧试试吧)

下载Xenomai和I-pipe

https://xenomai.org/downloads/xenomai/stable/latest/ 我下载的是 3.0.3 版本,解压,后面称xenomai源码根目录为 $xeno-tree

还要下载对应版本的 I-pipe 补丁,我下载的是这个 https://xenomai.org/downloads/ipipe/v3.x/x86/older/ipipe-core-3.16-x86-3.patch (后面我发现好像有未发布的对应 3.16.36版本的i-pipe补丁,不过我没有再试)

安装编译工具:apt install autoconf automake libltdl-dev

(注意:必须安装 libltdl-dev,否则bootstrap都通不过,参见 https://xenomai.org/faq/ )

Patch内核

虽然Xenomai3也可以在正常的linux下运行,但那当然不是我们想要的,我们还是要双内核架构的 cobalt,首先就要把patch打内核上去,由于我们没有对应到内核小版本的补丁,所以这一步还需要手动来调整一下

  • cd $linux-tree
  • patch -p1 < ipipe-core-3.16-x86-3.patch

会出现一些失败,还有一些偏移后成功的项,根据我这次的经验,直接显示成功的就不用管了,fuzz后成功的要注意下,偏移太多了要重点检查,很有可能就错了,如果失败了,会生成一个 .rej 文件,所以在 $linux-tree 目录,执行 find . -name *.rej 就能找到这些失败的位置了。每个 @@表示一个patch块的开始,而同行最后一个@@后面表示当前的context(即在修改块上面的代码,可以先搜索到这个位置,再看),下面没有+或-的也是改动的未改变的上下文,-表示删除 +表示添加,仔细看看,一般失败的情况也很好判断出应该如何修正,极少会遇到函数更名的情况,需要注意一下,建议大家手动来一遍。

把所有的rej都搞定了之后,再根据xenomai的说明来准备内核,即执行 scripts/prepare-kernel.sh --linux=$linux-tree --arch=x86

OK下面就是配置内核了, make menuconfig,你可能会看到 Xenomai下面有一堆warning,根据这个网页来配置就可以了 https://xenomai.org/2014/06/configuring-for-x86-based-dual-kernels/,即

  • CONFIG_CPU_FREQ – Disable
  • CONFIG_APM – Disable
  • CONFIG_ACPI_PROCESSOR – Disable
  • CONFIG_CPU_IDLE – Disable
  • CONFIG_INTEL_IDLE – Disable
  • CONFIG_INPUT_PCSPKR – Disable
  • MIGRATION/COMPACTION -Disable

如果还有其他的warning,请自行尝试把warning消除,多看看help,有一些项被其他项所选择,不能直接改变,要先改选择了它的项。另外注意ACPI不能全部都不选择,那样会启不了机,或者启机特别慢(我的是PCI IRQ错误,并且USB都不好使),ACPI只把 PROCESSOR选掉。

好了,重新编译内核吧 make bzImage modules && sudo make modules_install && sudo make install

重新启动,不出意外的话就可以启机了,启动后 dmesg | grep Xenomai,应该会有一些输出,否则就是有问题了。另外,有一个smi的问题,这个需要修改grub的启动参数,给内核参数后面加上 xenomai.smi=enabled,不过这项可能会导致硬件损坏,比如CPU过热烧掉了(看这里 https://xenomai.org/2014/06/configuring-for-x86-based-dual-kernels/dealing-with-x86-smi-troubles ),自己看着办吧。

编译xenomai库

  • cd $xeno-tree
  • scripts/bootstrap
  • mkdir build
  • cd build
  • ../configure --with-core=cobalt --enable-smp --enable-pshared  (基本上大家应该都是多核处理器,默认内核都打开了SMP)
  • make
  • sudo make install

安装完的库在 /usr/xenomai 文件夹中,执行 sudo /usr/xenomai/bin/xeno-test 即可,注意必须用root才能运行测试,另外这个测试默认不会自己结束,必须 Ctrl+C结束, 看看 /usr/xenomai/bin/latency --help,就知道 latency 测试的参数了。

PS:我的T410i本子跑个实时任务还是不错的,50us轮循周期,最大latency为11us多,还可以!

Xenomai for Debian Jessie的更多相关文章

  1. 【Linux】debian jessie版本安装1.9 svn

    今天封装使用官方mysql docker镜像时,发现svn版本有问题.需要更新到1.9版本.方法如下. Subversion 1.9 on Debian Jessie November 4, 2015 ...

  2. 解决从dockerhub上下载debian:jessie失败

    解决从dockerhub上下载debian:jessie失败 笔者使用docker build 构建镜像出现下面的错误 Step 1/12 : FROM debian:jessie Get https ...

  3. Debian Jessie升级至Stretch小记

    昨天Debian Stretch正式发布.为了尝新,昨天晚上便从Jessie升到了Stretch.结果,早上起来发现系统已无法进入X视窗环境,且NVIDIA的官方驱动无法成功编译和安装.看来,每次系统 ...

  4. debian jessie install note

    Debian支持非常多的硬件,包括arm/mips/ppc/x86,于是想安装个Debian看看,也不想总屈服在canonical的ubuntu下面. 光盘镜像太多了 纯社区版的安装总是没有想像得那么 ...

  5. debian jessie 网络设置

    从stable更换到testing后,更新系统apt-get dist-upgrade,然后是等待, 然后不耐烦了不等了,关机! 第二天早上开机apt-get update,找不到源! 用ifconf ...

  6. virtualbox 5.0.6 在debian jessie amd64启动报错

    通过dmesg发现vboxdrv启动报错: [ 18.844888] systemd[1]: [/lib/systemd/system/vboxdrv.service:5] Failed to add ...

  7. debian:jessie 安转percona mysql

    dpkg -r percona-server-server-5.6 dpkg -r percona-server-client-5.6 dpkg -r libperconaserverclient18 ...

  8. Debian 8.0(Jessie) 无线网卡,ATI显卡驱动和输入法等安装记录。

    转载请注明作者与出处!谢谢! 最近准备彻底转换到Linux平台,之前一直用的是Red Hat,对Debian不是很熟悉,花了不少时间摸索.下面记录一下安装的过程以便备忘,顺便给他人能做个参考. 我的是 ...

  9. Debian 8 升级到 9 Debian 9 How to upgrade Debian 8 Jessie to Debian 9 Stretch

    How to upgrade Debian 8 Jessie to Debian 9 Stretch Contents 1. Objective 2. What's New 3. Preparatio ...

随机推荐

  1. HH去散步(bzoj 1875)

    Description HH有个一成不变的习惯,喜欢饭后百步走.所谓百步走,就是散步,就是在一定的时间 内,走过一定的距离. 但是同时HH又是个喜欢变化的人,所以他不会立刻沿着刚刚走来的路走回. 又因 ...

  2. Java中Collections的sort方法和Comparable与Comparator的比较

    一.Comparable 新建Student1类,类实现Comparable接口,并重写compareTo方法 public class Student1 implements Comparable& ...

  3. 练习题 求a[i]到a[j]累积和为最大的部分

    原文发布时间为:2009-03-09 -- 来源于本人的百度文章 [由搬家工具导入] 1、有一个数组a[n],里面的数只有两种:-1或1。i,j是两个整数,假设0<=i<=j<=n- ...

  4. Using adb over wifi

    Step1 : phone & pc connect the same wifi. Step2 : phone use usb cable to connect pc. Step 3 : $ ...

  5. vmware tools安装过程

    每次通过vmware安装Ubuntu的时候,总是会多多少少出点问题.好容易披荆斩棘把镜像安好了,然而屏幕却只有小小一个,不能显示大屏,我就知道肯定是缺少了vmware tools.于是点击左上方菜单中 ...

  6. LeetCode OJ-- Longest Palindromic Substring **

    https://oj.leetcode.com/problems/longest-palindromic-substring/ 给一个string,求它的最长回文子串. 定义一个二维数组bool is ...

  7. z-index 基础详解

    关于z-index网上其实有不少博文,写得也不错,不过有些帖子比较旧,而IE也已经更新到了IE11了,所以还是重新总结一下.由于 z-index 的属性表现和层级有关,有些特点在某些层级下才表现出来, ...

  8. 【转】又一次线上 OOM 排查经过

    又一次线上OOM排查经过 最近线上一个服务又出现了频繁Full GC的情况,导致提供的业务经常超时.问题出现非常不稳定,经过两周的时候,终于又捕捉到了一次Full GC,于是联系运维做Heap Dum ...

  9. Ruby on rails初体验(一)

    接触ruby on rails 已经有一段时间了,想记录一下自己的rails历程.自己写一些小例子来帮助学习.  Rails 适用于那些以数据为中心的应用,很多应用的核心部分包括一个数据库,这些引用的 ...

  10. main函数参数

    方法1. C/C++语言中的main函数,经常带有参数argc,argv,如下: int main(int argc, char** argv) int main(int argc, char* ar ...