当前位置: 首页 > news >正文

Ubuntu 安装实时内核指南

在运行需要高精度和低延迟响应的机器人驱动程序时,安装一个具备实时内核(Real-Time Kernel)的 Ubuntu 系统是至关重要的。若缺乏实时系统的支持,高频率的控制指令可能会导致机器人运动轨迹不流畅,甚至产生抖动现象。以下是如何在 Ubuntu 上安装实时内核的详细步骤。

1. 安装编译所需工具

首先,确保你已经安装了编译内核所需的工具链和库文件。可以通过以下命令进行安装:

sudo apt-get update
sudo apt-get install build-essential bc ca-certificates gnupg2 libssl-dev wget gawk flex bison
2. 检查当前内核版本

在下载实时内核源代码之前,检查当前系统的内核版本:

uname -r

例如,输出可能是 4.15.0-62-generic

3. 创建临时文件夹

由于内核编译会占用大量磁盘空间(至少 25GB),建议创建一个临时文件夹来存放内核源代码和编译产物。你可以在 /home 目录下创建一个临时文件夹:

mkdir -p ${HOME}/rt_kernel_build
cd ${HOME}/rt_kernel_build
4. 下载实时内核源代码和补丁

选择一个与你当前内核版本相近的实时内核版本。例如,如果当前内核是 4.15,你可以选择 4.14 的实时内核版本(注意实时补丁仅适用于特定的内核版本)。

下载内核源代码、实时补丁以及它们的签名文件:

wget https://cdn.kernel.org/pub/linux/kernel/projects/rt/4.14/patch-4.14.139-rt66.patch.xz
wget https://cdn.kernel.org/pub/linux/kernel/projects/rt/4.14/patch-4.14.139-rt66.patch.sign
wget https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.14.139.tar.xz
wget https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.14.139.tar.sign

解压文件:

xz -dk patch-4.14.139-rt66.patch.xz
xz -d linux-4.14.139.tar.xz
5. 验证文件完整性

为了验证下载的文件的完整性,你需要导入内核开发人员和补丁作者的公钥,并验证签名。

gpg2 --locate-keys torvalds@kernel.org gregkh@kernel.org

然后验证签名:

gpg2 --verify linux-4.14.139.tar.sign
gpg2 --verify patch-4.14.139-rt66.patch.sign
6. 编译实时内核

解压内核源代码并应用实时补丁:

tar xf linux-4.14.139.tar
cd linux-4.14.139
xzcat ../patch-4.14.139-rt66.patch.xz | patch -p1

配置内核选项,选择“完全抢占内核”(Fully Preemptible Kernel)作为抢占模型,其他选项使用默认值即可:

make oldconfig

配置完成后,开始编译内核:

make -j `getconf _NPROCESSORS_ONLN` deb-pkg

编译完成后,在父文件夹中安装 linux-headerslinux-image 包:

sudo apt install ../linux-headers-4.14.139-rt66_*.deb ../linux-image-4.14.139-rt66_*.deb
7. 设置用户权限以执行实时任务

为了允许用户以实时优先级运行线程,需要修改 /etc/security/limits.conf 文件。建议创建一个新的组(如 realtime),然后将用户添加到该组:

sudo groupadd realtime
sudo usermod -aG realtime $(whoami)

/etc/security/limits.conf 中添加以下内容:

@realtime soft rtprio 99
@realtime soft priority 99
@realtime soft memlock 102400
@realtime hard rtprio 99
@realtime hard priority 99
@realtime hard memlock 102400
8. 设置 GRUB 引导默认内核

更新 GRUB 配置,将新的实时内核设置为默认引导项。首先,通过以下命令找到新内核的 GRUB 菜单项名称:

awk -F\' '/menuentry |submenu / {print $1 $2}' /boot/grub/grub.cfg

然后,修改 /etc/default/grub 文件,将 GRUB_DEFAULT 设置为新内核的菜单项名称:

sudo sed -i 's/^GRUB_DEFAULT=.*/GRUB_DEFAULT="Advanced options for Ubuntu>Ubuntu, with Linux 4.14.139-rt66"/' /etc/default/grub
sudo update-grub
9. 重启并验证

重启计算机,验证是否成功引导到新的实时内核:

uname -v | cut -d" " -f1-4

输出应该类似于 #1 SMP PREEMPT RT,表示实时内核已成功安装并运行。

通过以上步骤,你就可以在 Ubuntu 上安装并运行实时内核,为你的机器人驱动程序提供高精度和低延迟的保障。

http://www.lryc.cn/news/507865.html

相关文章:

  • MySQL 主从复制与高可用
  • RCE总结
  • 基于UNITY3D的照片墙演示项目技术分享
  • 随手记:小程序兼容后台的wangEditor富文本配置链接
  • maven项目运行时NoSuchMethodError问题排查记录(依赖冲突解决)
  • ECharts关系图-关系图11,附视频讲解与代码下载
  • 【C语言】动态内存管理:详解malloc和free函数
  • EGO Swarm翻译
  • Linux根目录
  • SAP-SD-参照退货订单补货时带不出行项目
  • 12-C语言单向链表
  • 2024年11月 蓝桥杯青少组 STEMA考试 Scratch真题
  • FFmpeg 4.3 音视频-多路H265监控录放C++开发二十一.2,RTP协议-RTP协议概述,协议详情
  • Linux系统编程——系统内核中的信号
  • delve调试环境搭建—golang
  • shell脚本的循环-----while和for循环
  • 【游戏设计原理】21 - 解谜游戏的设计
  • 【漏洞复现】Wordpress GutenKit 插件 远程文件写入致RCE漏洞复现(CVE-2024-9234)
  • 深度学习任务简介:分类、回归和生成
  • 【测试】Unittest
  • java 根据路径下载文件转换为MultipartFile,并且上传到服务器
  • Onvif服务端开发
  • 【jvm】主要参数
  • 【优选算法】—移动零(双指针算法)
  • PostgreSQL标识符长度限制不能超过63字节
  • 嵌入式硬件面试题
  • 深度解析 OneCode 混合编译:创新驱动的开发变革
  • [文献阅读] Unsupervised Deep Embedding for Clustering Analysis (无监督的深度嵌入式聚类)
  • ajax中get和post的区别,datatype返回的数据类型有哪些?web开发中数据提交的几种方式,有什么区别。
  • 网络七层杀伤链