双内核架构 Xenomai 4 安装教程
Xenomai 4是一种双内核架构, 继承了Xenomai系列的特点,通过在Linux内核中嵌入一个辅助核心(companion core),来提供实时能力。这个辅助核心专门处理那些需要极低且有界响应时间的任务。
本文将在官网教程(https://evlproject.org/core/build-steps/)的基础上, 更详细地介绍如何编译和构建双内核 Xenomai 4.
概述
我是在vmware 的ubuntu 24.04的虚拟机上安装该内核的, 别的版本没测试过, 22.04 应该也行. 再之前的版本可能构建工具链太老, 会出现一些问题.
- vmware workstation pro 17
- ubuntu 24.04 (8核, 8G内存, 80G硬盘)
这里需要注意的是需要保证硬盘空间大于50G, 之前设置为40G时,编译到一半空间不足.
安装该双内核架构, 大体上分为两个步骤, 一个是常规的编译内核的部分, 这个步骤和编译其他的linux内核差不多. 另一个是编译libevl这个库,用来测试双内核是否安装成功.
0. 前置依赖软件
大体上是这些, 如果哪里有报错缺什么包, 再补充.
sudo apt update
sudo apt install cmake make git flex bison libncurses5-dev gcc exuberant-ctags bc libssl-dev meson ninja-build libelf-dev libbpf-dev
1. 编译内核
获取内核源码
git clone https://git.xenomai.org/xenomai4/linux-evl.git
禁用两个config, 以防后面make 报错 (来源于:https://askubuntu.com/questions/1329538/compiling-kernel-5-11-11-and-later)
cd linux-evl
scripts/config --disable SYSTEM_TRUSTED_KEYS
scripts/config --disable SYSTEM_REVOCATION_KEYS
然后设置开启evl-core,
make menuconfig
选择`Processor type and features

选中 EVL real-time core

然后选择save 后退出, 开始make, 需要注意的是make -j 会把所有核都拿去编译, 造成系统卡死, make一半就退出了, 建议留几个核, 比如:
make -j4
然后等待一段时间后, 安装内核
sudo make modules_install install
更新grub, 这样可以在开机时按shift+tab或者shift 进入boot, 选择新的双内核启动
sudo update-grub2
至此, 带有evl功能的内核就安装好了.
2. 编译libevl
获取libevl
git clone https://git.xenomai.org/xenomai4/libevl.git
使用meson一套来进行编译:
mkdir libevl_build
# meson setup -Duapi=[刚刚安装的内核源码目录] $builddir $srcdir
meson setup -Duapi=./linux-evl ./libevl_build ./libevl
cd libevl_build
meson compile
ninja install
由于默认把libevl 动态库安装到了/usr/local/lib/x86_64-linux-gnu/ 目录下, 我们需要做些额外工作来让evl 能找到这个共享库
所以需要做如下操作:
sudo vim /etc/ld.so.conf.d/custom_libs.conf
将下面这行添加到/etc/ld.so.conf.d/custom_libs.conf 里
/usr/local/lib/x86_64-linux-gnu/
然后保存退出,再执行如下命令:
sudo ldconfig
3. 验证evl core的安装
重启虚拟机, 在开启时进入boot (按shift),选择内核linux 6.11 进入

运行命令 sudo evl test ,如果出现如下结果说明安装成功了.

中间可能会出现这样的错误, 但是官网(https://evlproject.org/core/testing/)说是正常的,不用紧张.
../libevl/tests/sched-quota-accuracy.c:213: FAILED: evl_control_sched(44, &p, &q, test_cpu) (=Operation not supported)
sched-quota-accuracy: no kernel support
../libevl/tests/sched-tp-accuracy.c:222: FAILED: evl_control_sched(45, p, ((void *)0), test_cpu) (=Operation not supported)
sched-tp-accuracy: no kernel support
../libevl/tests/sched-tp-overrun.c:220: FAILED: evl_control_sched(45, p, ((void *)0), test_cpu) (=Operation not supported)
参考链接:
- https://evlproject.org/core/
相关文章:
双内核架构 Xenomai 4 安装教程
Xenomai 4是一种双内核架构, 继承了Xenomai系列的特点,通过在Linux内核中嵌入一个辅助核心(companion core),来提供实时能力。这个辅助核心专门处理那些需要极低且有界响应时间的任务。 本文将在官网教程(https://evlproject.org/…...
【redis的使用、账号流程、游戏服Handler的反射调用】1.自增id 2.全局用户名这样子名字唯一 3.
一、web服 1)账号注册 // 用于唯一命名服务 com.xinyue.game.center.business.account.logic.AccountRegisterService#accountRegister public void accountRegister(AccountEntity account) {accountManager.checkUsername(account.getUsername());accountManager.checkPass…...
neo4j 图表数据导入到 TuGraph
neo4j 图表数据导入到 TuGraph 代码文件说明后文 前言:近期在引入阿里的 TuGraph 图数据库,需要将 原 neo4j 数据导入到新的 tugraph 数据库中。预期走csv文件导入导出,但因为格式和数据库设计问题,操作起来比较麻烦(可能是个人没…...
启动报错java.lang.NoClassDefFoundError: ch/qos/logback/core/status/WarnStatus
报错信息图片 日志: Exception in thread "Quartz Scheduler [scheduler]" java.lang.NoClassDefFoundError: ch/qos/logback/core/status/WarnStatus先说我自己遇到的问题,我们项目在web设置了自定义的log输出路径,多了一个 / 去…...
【ubuntu18.04】ubuntu18.04挂在硬盘出现 Wrong diagnostic page; asked for 1 got 8解决方案
错误日志 [ 8754.700227] usb 2-3: new full-speed USB device number 3 using xhci_hcd [ 8754.867389] usb 2-3: New USB device found, idVendor0e0f, idProduct0002, bcdDevice 1.00 [ 8754.867421] usb 2-3: New USB device strings: Mfr1, Product2, SerialNumber0 [ 87…...
kubeadm安装K8s高可用集群之集群初始化及master/node节点加入calico网络插件安装
系列文章目录 1.kubeadm安装K8s高可用集群之基础环境配置 2.kubeadm安装K8s集群之高可用组件keepalivednginx及kubeadm部署 3.kubeadm安装K8s高可用集群之集群初始化及master/node节点加入集群calico网络插件安装 kubeadm安装K8s高可用集群之集群初始化及master/node节点加入ca…...
游戏何如防抓包
游戏抓包是指在游戏中,通过抓包工具捕获和分析游戏客户端与服务器之间传输的封包数据的过程。抓包工具可实现拦截、篡改、重发、丢弃游戏的上下行数据包,市面上常见的抓包工具有WPE、Fiddler和Charles Proxy等。 抓包工具有两种实现方式,一类…...
【LeetCode】每日一题 2024_12_19 找到稳定山的下标(模拟)
前言 每天和你一起刷 LeetCode 每日一题~ 最近力扣的每日一题出的比较烂,难度过山车,导致近期的更新都三天打鱼,两天断更了 . . . LeetCode 启动! 题目:找到稳定山的下标 代码与解题思路 先读题:最重要…...
运维 mysql、redis 、RocketMQ性能排查
MySQL查看数据库连接数 1. SHOW STATUS命令-查询当前的连接数 MySQL 提供了一个 SHOW STATUS 命令,可以用来查看服务器的状态信息,包括当前的连接数。 SHOW STATUS LIKE Threads_connected;这个命令会返回当前连接到服务器的线程数,即当前…...
[SAP ABAP] 将内表数据转换为HTML格式
从sflight数据库表中检索航班信息,并将这些信息转换成HTML格式,然后下载或显示在前端 开发步骤 ① 自定义一个数据类型 ty_sflight 来存储航班信息 ② 声明内表和工作区变量,用于存储表头、字段、HTML内容和航班详细信息以及创建字段目录lt…...
LLM大语言模型私有化部署-使用Dify与Qwen2.5打造专属知识库
背景 Dify 是一款开源的大语言模型(LLM) 应用开发平台。其直观的界面结合了 AI 工作流、 RAG 管道、 Agent 、模型管理、可观测性功能等,让您可以快速从原型到生产。相比 LangChain 这类有着锤子、钉子的工具箱开发库, Dify 提供了更接近生产需要的完整…...
使用C语言连接MySQL
在C语言中连接MySQL数据库,通常需要使用MySQL提供的C API。以下是使用C语言连接MySQL数据库的基本步骤和示例代码: 步骤 1: 安装MySQL C API 首先,确保你的系统上安装了MySQL数据库,并且安装了MySQL C API库。在大多数Linux发行版…...
PyTorch 2.0 以下版本中设置默认使用 GPU 的方法
PyTorch 2.0 以下版本中设置默认使用 GPU 的方法 在 PyTorch 2.0以下版本中,默认情况下仍然是使用 CPU 进行计算,除非明确指定使用 GPU。在 PyTorch 2.0 以下版本中,虽然没有 torch.set_default_device 的便捷方法,但可以通过显式…...
信号槽【QT】
文章目录 对象树字符集信号槽QT坐标系信号与槽connect自定义槽自定义信号disconnect 对象树 #ifndef MYLABEL_H #define MYLABEL_H#include<QLabel> class MyLabel : public QLabel { public:// 构造函数使用带 QWidget* 版本的.// 确保对象能够加到对象树上MyLabel(QWi…...
【UE5 C++课程系列笔记】10——动态单播/多播的基本使用
目录 概念 申明动态委托 一、DECLARE_DYNAMIC_DELEGATE 二、DECLARE_DYNAMIC_MULTICAST_DELEGATE 绑定动态委托 一、BindDynamic 二、AddDynamic 三、RemoveDynamic 执行动态委托 一、Execute 二、ExecuteIfBound 三、IsBound 四、Broadcast 动态单播使用示…...
点击展示大图预览
原文链接在table表格里能够实现,点击里面的图片实现大图预览的效果; 一、先安装viewer — 使用npm安装 npm install v-viewer --save二、在main.js中引入 import Viewer from v-viewer //点击图片大图预览 import viewerjs/dist/viewer.css Vue.use(…...
【C++】分书问题:深入解析、回溯法高级应用与理论拓展
博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 💯前言💯题目描述💯思路与算法回溯法理论基础 💯代码实现与解析完整代码代码关键步骤解析 💯时间复杂度与空间复杂度分析💯理论拓展&…...
java开发入门学习五-流程控制
流程控制语句 if, if...else, if..else if..else 与前端相同 略 switch case 与前端不同的是case不能使用表达式,使用表达式会报错 class TestSwitch {public static void main(String[] args) {// switch 表达式只能是特定的数据类型…...
【FFmpeg 教程 一】截图
本章使用 ffmpeg 实现观影中经常会用到的功能,截图。 以下给出两种方式。 课程需具备的基础能力:Python 1. 使用 subprocess 调用 FFmpeg 命令 import subprocess def extract_frame(video_path, output_image_path, timestamp"00:00:05")&qu…...
北邮,成电计算机考研怎么选?
#总结结论: 基于当前提供的24考研复录数据,从报考性价比角度,建议25考研的同学优先选择北邮计算机学硕。主要原因是:相比成电,北邮计算机学硕的目标分数更低,录取率更高,而且北邮的地理位置优势明显。对于…...
保姆级教程:在YOLOv8中手把手集成Coordinate Attention注意力模块(附完整配置文件)
零基础实战:在YOLOv8中集成Coordinate Attention注意力模块全流程解析 当你第一次看到Coordinate Attention(坐标注意力)这个名词时,可能会被它高大上的论文术语吓到。但别担心,今天我们就用最接地气的方式࿰…...
s2-pro免配置镜像教程:无需Python环境,直接运行Web语音合成工具
s2-pro免配置镜像教程:无需Python环境,直接运行Web语音合成工具 1. 产品简介 s2-pro是Fish Audio开源的专业级语音合成模型镜像,它让语音合成变得前所未有的简单。这个工具最大的特点就是完全免配置 - 你不需要安装Python环境,不…...
Claude Code能控制电脑了!开发全程不离终端,全无人值守模式启动
在官方演示中,只甩一个指令过去,AI就自己启动正在开发的应用,自己复现bug,自己修复,自己测试修复效果。 Claude Code上线Computer Use,直接捅破开发效率天花板。 在官方演示中,只甩一个指令过…...
暗黑破坏神3自动化工具:智能技能管理与效率提升解决方案
暗黑破坏神3自动化工具:智能技能管理与效率提升解决方案 【免费下载链接】D3keyHelper D3KeyHelper是一个有图形界面,可自定义配置的暗黑3鼠标宏工具。 项目地址: https://gitcode.com/gh_mirrors/d3/D3keyHelper 在暗黑破坏神3的冒险旅程中&…...
ai辅助硬件设计:让快马智能解析并生成db9接口与mcu连接的完整原理图与代码
在硬件开发中,DB9接口的设计与连接是个常见但容易出错的环节。最近我在一个嵌入式项目里需要实现STM32与DB9接口的RS-232通信,发现传统设计流程存在几个痛点: 引脚定义容易混淆 DB9公头和母头的引脚定义是相反的,比如母头的2号引脚…...
【大英赛】2009-2026年大英赛ABCD类历年真题、样卷、听力音频及答案PDF电子版
2026年大英赛将于4月12日9:00—11:00举行,开始倒计时啦!小编整理了最新的2009-2026年大学生英语竞赛(大英赛NECCS)ABCD类历年真题、样卷、听力音频及答案解析,PDF电子版,可下载打印! 资料下载&a…...
有偿求助 如何使用openclaw 来实现办公自动化
本地部署openclaw 需要让他帮我下载企业微信里的客户聊天记录...
Z-Image-Turbo在艺术创作中的实战:将文字灵感转化为超写实画作
Z-Image-Turbo在艺术创作中的实战:将文字灵感转化为超写实画作 你是否曾经有过绝妙的创意画面,却苦于无法将其具现化?Z-Image-Turbo极速云端创作室正是为解决这一痛点而生。这个基于先进AI技术的文生图工具,能够将你的文字描述在…...
2026年,山东专业联想服务器解决方案,涵盖SR858 V3等众多型号!
在当今数字化飞速发展的时代,服务器作为企业数据处理和存储的核心设备,其性能和可靠性至关重要。联想服务器凭借其卓越的性能、丰富的功能和广泛的应用场景,成为众多企业的首选。今天,我们就来详细了解一下联想SR858 V3服务器。联…...
GitHub协作开发:AnythingtoRealCharacters2511动漫转真人开源项目实践
GitHub协作开发:AnythingtoRealCharacters2511动漫转真人开源项目实践 1. 项目介绍与准备 AnythingtoRealCharacters2511是一个专门将动漫角色转换为真实人像的开源项目,基于先进的AI图像生成技术。这个项目在GitHub上开源,让开发者可以共同…...
