Xenomai for Debian Jessie

安装内核源码包

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多,还可以!

时间: 2024-12-16 23:50:27

Xenomai for Debian Jessie的相关文章

NVIDIA GeForce Driver Installation on Debian Jessie Linux 8 64bit

The easiest way to install NVIDIA GeForce Driver on Debian Linux 8 ( Jessie ) ( for Debian 9 Stretch visit: How to install the latest NVIDIA drivers on Debian 9 Stretch Linux) is to use official contrib and non-free debian repository. First, add the

Debian Jessie安装youdaodict(deb包)

1.安装方式及安装命令: 安装以下依赖:(来自于http://cidian.youdao.com/index-linux.html) python3:自带,无需安装 python3-pyqt5: 注意,sudo apt-get install python3-pyqt5*,安装一些诸如python3-pyqt5.xx的软件包,否则运行时会不无法看到图形界面,出现各种"Import QTxxx"问题! python3-requests: 库里面有,sudo apt-get install

【Linux】debian jessie版本安装1.9 svn

今天封装使用官方mysql docker镜像时,发现svn版本有问题.需要更新到1.9版本.方法如下. Subversion 1.9 on Debian Jessie November 4, 2015 Views: 250ArticlesDebian, Subversion, WanDisco If you would like to use the latest version of Subversion and prefer using the package manager like me

Debian (Jessie 8.0) 的修复pip AttributeError: &#39;module&#39; object has no attribute &#39;PROTOCOL_SSLv3&#39;

升级到最新的stable后,python的pip还是老的. 在安装一些包的时候,报错了 Traceback (most recent call last): File "/usr/bin/pip", line 9, in <module> load_entry_point('pip==1.5.6', 'console_scripts', 'pip')() File "/usr/lib/python2.7/dist-packages/pkg_resources.py

【翻译】如何删除debian jessie 的systemd

译者注:debian官方内部围绕systemd发生过激烈的争论,最终换来了妥协.debian jessie 默认使用systemd作为init程序,但是保留了sysv,二者不可同时存在.如果你想让debian依然使用sysv,可以参照下面的办法. 首先安装sysv init软件包 apt-get update apt-get install sysvinit-core sysvinit sysvinit-utils 重启机器,删除和systemd相关的软件包. 注意:下面的命令会删除依赖syst

debian jessie install note

Debian支持非常多的硬件,包括arm/mips/ppc/x86,于是想安装个Debian看看,也不想总屈服在canonical的ubuntu下面. 光盘镜像太多了 纯社区版的安装总是没有想像得那么好,首先安装镜像居然有3个iso,让我们不想刻光盘的同志怎么办,难道弄3个U盘去.还好有一个网络安装版的,才300M,这个不错,下载下来也挺小了,但是ultroiso写进去不好使,windiskimage写进去也不好使,换到Linux下面写进去就好使了(我是用Centos的UI写进去的,据说cat

virtualbox 5.0.6 在debian jessie amd64启动报错

通过dmesg发现vboxdrv启动报错: [ 18.844888] systemd[1]: [/lib/systemd/system/vboxdrv.service:5] Failed to add dependency on $syslog.service, ignoring: Invalid argument 修改/lib/systemd/system/vboxdrv.service文件 After=$syslog.service 修改为: After=syslog.service 就可以

Debian (Jessie 8.0) 的一些升级后的修复工作, virtualbox不能启动。

需要重新编译下virtualbox的内核 dpkg-reconfigure virtualbox-dkms 不工作的话检查下最新的内核安装了没有. dpkg -l | grep headers-3.16 没有就安装 apt-get install linux-headers-`uname -r` 然后重新编译下dkms模块就可以正常启动了 dpkg-reconfigure virtualbox-dkms

Debian (Jessie 8.0) 的一些升级后的修复工作, xfce4.10 面板的图标都左对齐了。

如图. 要修复这个, 是因为xfce的一个临时的功能性的欠缺 只有一个临时的解决方案, 去panel属性里面新加一个分割符,然后点分隔符的属性,选中expand就可以了.