03-xenomai编译及环境搭建
·
3 - xenomai编译环境搭建
一、环境准备
本文档基于 Ubuntu 24.04 版本,x86平台进行讲解。
二、获取源码
1. 下载 Linux 内核源码(Dovetail 版本)
按照以下步骤获取 Linux 内核源码:
- 使用浏览器打开:https://gitlab.com/Xenomai/linux-dovetail/-/tree/v6.12.y-dovetail
- 点击 Download 按钮,下载 ZIP 压缩包
- 下载完成后解压:
unzip linux-dovetail-v6.12.y-dovetail.zip
cd linux-dovetail-v6.12.y-dovetail
2. 下载 Xenomai 源码
按照以下步骤获取 Xenomai 源码:
- 使用浏览器打开:https://gitlab.com/Xenomai/xenomai3/xenomai/-/tree/xenomai-stable-v3.3.x
- 点击 Download 按钮,下载源码包:
tar -xf xenomai-xenomai-stable-v3.3.x.tar.gz
cd xenomai-xenomai-stable-v3.3.x
三、安装编译依赖
sudo apt install -y build-essential libncurses-dev libssl-dev flex bison libelf-dev bc git xz-utils autoconf automake libtool debhelper
四、打补丁
cd /path/to/xenomai-xenomai-stable-v3.3.x
# 初始化构建系统
./scripts/bootstrap
# 提取并应用补丁(/path/to 需要替换成自己的路径)
./scripts/prepare-kernel.sh --linux=/path/to/linux-dovetail-v6.12.y-dovetail --arch=x86_64
五、内核配置与编译
1. 配置内核
cd /path/to/linux-dovetail-v6.12.y-dovetail
cp /boot/config-$(uname -r) .config
make oldconfig
make menuconfig
执行 make menuconfig 后,可以看到 Xenomai 相关的配置选项已经出现。
为消除警告,需修改以下选项:
| 配置路径 | 选项 | 操作 |
|---|---|---|
| General setup → Preemption Model | Voluntary Kernel Preemption (Desktop) | 改为:Preemptible Kernel (Low-Latency Desktop) |
| Processor type and features → Multi-core scheduler support | CPU core priorities scheduler support | 取消勾选 |
| Power management and ACPI options → CPU Frequency scaling | CPU Frequency scaling | 取消勾选 |
| Power management and ACPI options → ACPI (Advanced Configuration and Power Interface) Support | Processor | 取消勾选 |
| Power management and ACPI options → CPU Idle | CPU idle PM support | 取消勾选 |
| Memory Management options | Contiguous Memory Allocator | 取消勾选 |
| Memory Management options | Allow for memory compaction | 取消勾选 |
| Memory Management options | Page migration | 取消勾选 |
修改完后回到主页面,可以发现警告消失。
为什么要修改这些选项?
| 选项 | 原因 |
|---|---|
| Preemption Model | 选择更低延迟的抢占模型,提高实时性 |
| CPU core priorities scheduler support | 该功能与 Xenomai 冲突,需要关闭 |
| CPU Frequency scaling | 动态调频会导致延迟抖动,实时系统需要关闭 |
| ACPI Processor | ACPI 电源管理会引入不确定性 |
| CPU idle PM support | CPU 空闲管理会引入延迟 |
| Contiguous Memory Allocator | CMA 内存管理会影响实时内存分配 |
| Memory compaction / Page migration | 内存压缩和迁移会引入不可预测的延迟 |
2. 编译内核
make bindeb-pkg -j$(nproc)
编译完成后会在上级目录生成 deb 安装包。

六、安装 deb 包
cd ..
sudo dpkg -i linux-libc-dev_6.12.67-9_amd64.deb
sudo dpkg -i linux-headers-6.12.67_6.12.67-9_amd64.deb
sudo dpkg -i linux-image-6.12.67_6.12.67-9_amd64.deb
七、重启验证与 Xenomai 库编译
1. 重启系统
sudo reboot
2. 验证内核安装
重启后验证内核和 Xenomai 是否正确安装:
uname -r
cat /proc/xenomai/version
3. 编译 Xenomai 库和工具
重启后需要从 Xenomai 源码编译出库文件以及各种脚本,具体步骤如下:
# 进入 Xenomai 源码目录
cd /path/to/xenomai-xenomai-stable-v3.3.x
# 初始化构建系统
./scripts/bootstrap
# 配置构建环境
./configure --enable-pshared --enable-smp --with-core=cobalt
#该步骤可能会遇到如下报错信息
#syntax error near unexpected token 'FUSE,'
#PKG_CHECK_MODULES(FUSE, fuse)
#此时需要执行
sudo apt install -y pkg-config libfuse-dev
#安装后需重新执行1 2步骤
# 创建构建目录
mkdir -p build
# 编译并安装到构建目录
make -j$(nproc) DESTDIR=`pwd`/build install
# 将编译出来的库和可执行文件全部拷贝至 /usr/ 目录下
sudo cp build/usr/xenomai /usr/ -r
4. 配置环境变量
安装完成后,需要配置环境变量以便系统能够找到 Xenomai 库:
# 添加 Xenomai 库路径到 ldconfig
sudo sh -c 'echo "/usr/xenomai/lib" > /etc/ld.so.conf.d/xenomai.conf'
sudo ldconfig
# 可选:添加到系统路径
export PATH=$PATH:/usr/xenomai/bin
5. 验证 Xenomai 库安装
验证库文件是否正确安装:
# 查看 Xenomai 库文件
ls -la /usr/xenomai/lib/
# 查看 Xenomai 工具
ls -la /usr/xenomai/bin/
# 测试 Xenomai 版本信息
cat /proc/xenomai/version
八、提高系统实时性的建议
1. BIOS 设置

2. GRUB 启动参数

3. 内核配置

后续会再单独出一篇实时性验证的文章
下篇预告: 第一个程序 Hello World编译运行
更多推荐


所有评论(0)