3 - xenomai编译环境搭建

一、环境准备

本文档基于 Ubuntu 24.04 版本,x86平台进行讲解。

二、获取源码

1. 下载 Linux 内核源码(Dovetail 版本)

按照以下步骤获取 Linux 内核源码:

  1. 使用浏览器打开:https://gitlab.com/Xenomai/linux-dovetail/-/tree/v6.12.y-dovetail
  2. 点击 Download 按钮,下载 ZIP 压缩包
  3. 下载完成后解压:
unzip linux-dovetail-v6.12.y-dovetail.zip
cd linux-dovetail-v6.12.y-dovetail

2. 下载 Xenomai 源码

按照以下步骤获取 Xenomai 源码:

  1. 使用浏览器打开:https://gitlab.com/Xenomai/xenomai3/xenomai/-/tree/xenomai-stable-v3.3.x
  2. 点击 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 ModelVoluntary Kernel Preemption (Desktop)改为:Preemptible Kernel (Low-Latency Desktop)
Processor type and features → Multi-core scheduler supportCPU core priorities scheduler support取消勾选
Power management and ACPI options → CPU Frequency scalingCPU Frequency scaling取消勾选
Power management and ACPI options → ACPI (Advanced Configuration and Power Interface) SupportProcessor取消勾选
Power management and ACPI options → CPU IdleCPU idle PM support取消勾选
Memory Management optionsContiguous Memory Allocator取消勾选
Memory Management optionsAllow for memory compaction取消勾选
Memory Management optionsPage migration取消勾选

修改完后回到主页面,可以发现警告消失。

为什么要修改这些选项?

选项原因
Preemption Model选择更低延迟的抢占模型,提高实时性
CPU core priorities scheduler support该功能与 Xenomai 冲突,需要关闭
CPU Frequency scaling动态调频会导致延迟抖动,实时系统需要关闭
ACPI ProcessorACPI 电源管理会引入不确定性
CPU idle PM supportCPU 空闲管理会引入延迟
Contiguous Memory AllocatorCMA 内存管理会影响实时内存分配
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编译运行

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐