码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • ubuntu18.04平台上基于xenomai3.2对Linux内核的实时化改造


    Linux系统工业化应用的场景中,实时性不足是一个很重要的缺陷和问题,传统的LINUX实时性改造有多种,下面博客分别介绍了两种方案:

    给ubuntu18.04系统内核升级rt-patch补丁_papaofdoudou的博客-CSDN博客_ubuntu安装patch

    利用RT-Thread VMM组件实现对Linux实时性改造的实践_papaofdoudou的博客-CSDN博客

    这里在介绍并实践一种更加“高级”一点的方案,就是基于XENOMAI的LINUX实时性改造。

    环境平台:

    资源下载

    xenomai-stable-v3.2.x.tar.bz2,下载链接:

    Files · stable/v3.2.x · xenomai / xenomai · GitLab

    xenomai内核补丁:

    https://xenomai.org/downloads/dovetail/patch-5.10.89-dovetail1.patch.bz2

    要选择和补丁对应的Linux内核版本,linux-5.10.89

    https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-5.10.89.tar.gz

    首先验证一下原版LINUX内核是否能够启动,参考如下文档:

    Ubuntu18.04 Linux内核编译升级_papaofdoudou的博客-CSDN博客_ubuntu18.04升级内核

    升级后,使用linux-5.10.89的内核可以正常启动UBUTNU18.04.6的文件系统,内核可以用。

    xenomai环境搭建

    首先是打xenomai补丁,解压内核并用GIT进行版本管理,方便我们查询每一步都变化了什么。

    解压XENOMAI补丁:

    bzip2 -d patch-5.10.89-dovetail1.patch.bz2

    解压xenomai-stable-v3.2.x.tar.bz2

    打补丁:

    进入linux-5.10.89目录,执行如下命令将XENOMAI实时补丁打上:

    ../xenomai-stable-v3.2.x/scripts/prepare-kernel.sh --arch=x86_64 --dovetail=../patch-5.10.89-dovetail1.patch

    补丁的改动还是非常大的:

    编译内核

    make menuconfig,可以看到XENOMAI配置选项已经出现: 

     将CONFIG_SYSTEM_TRUSTED_KEYS和CONFIG_SYSTEM_REVOCATION_KEYS置空,否则会遇到编译错误。之后执行make -j4开始编译:

    最终内核链接的时候,出现链接错误,其中udp_sock是XENOMAI引入的符号。

    根据报错线索,BTFIDS是新版内核增加的功能,我们可以将其关闭,方法是需要将CONFIG_DEBUG_INFO_BTF关闭,不进行这一步的检查.

    或者:

    sudo scripts/config --disable CONFIG_DEBUG_INFO_BTF

    配置

    1. General setup --->
    2. Preemption Model (Preemptible Kernel (Low-Latency Desktop)) --->
    3. (X) Low-Latency Desktop
    4. (-xeno-3.2.1)Local version - append to kernel release
    5. Processor type and features --->
    6. Processor family (Core 2/newer Xeon) --->
    7. (X) Core 2/newer Xeon
    8. [*] Multi-core scheduler support
    9. [ ] CPU core priorities scheduler support
    10. Power management and ACPI options --->
    11. CPU Frequency scaling --->
    12. [ ] CPU Frequency scaling
    13. [*] ACPI (Advanced Configuration and Power Interface) Support --->
    14. < > Processor
    15. CPU Idle --->
    16. [ ] CPU idle PM support
    17. Memory Management options --->
    18. [ ] Contiguous Memory Allocator
    19. [ ] Transparent Hugepage Support
    20. [ ] Allow for memory compaction
    21. [ ] Page migration

    这样做后可以正常编译链接通过。

    执行sudo make modules_install, sudo make headers_install, sudo make install之后,新内核安装完毕:

    之后重启,执行dmesg|grep Xenomai查看Xenomai加载情况:

    xenomai正常加载。

    编译xenomai用户态库:

    安装依赖:

    sudo apt install automake libtool m4 autoconf

    生成配置文件

    ./scripts/bootstrap

    编译:

    sudo ./configure --with-pic --with-core=cobalt --enable-smp --disable-tls --enable-dlopen-libs --disable-clock-monotonic-raw

    编译:

     How to Run Xenomai in qemu - F.J Kong's Blog

    latency必须在启用xenomai的内核系统上跑,否则会出现如下的报错:


    结束

  • 相关阅读:
    Java反射工具类
    【动态规划】Leetcode 279. 完全平方数【中等】
    Google Earth Engine ——把reducer统计的数据分别放在不同的列表中打印出来,使用unzip()函数
    wordpress制作主题步骤
    HDFS学习笔记(五):Yarn架构原理
    LeetCode每日一题——2562. Find the Array Concatenation Value
    VirtualLab Fusion全局选项中的性能设置
    手机银行体验性测试:如何获取用户真实感受
    JMeter入门教程(16)——非GUI运行
    企业如何利用APS排程软件建立起精益供应链与生产体系
  • 原文地址:https://blog.csdn.net/tugouxp/article/details/125468790
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号