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

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.kler.cn/a/448775.html

相关文章:

  • 2.Couchbase 的增量查询优化
  • LabVIEW实现WiFi通信
  • MFC/C++学习系列之简单记录13
  • OpenCV putText增加中文支持
  • go面试问题
  • 数据结构大作业——家谱管理系统(超详细!完整代码!)
  • 接口测试Day-02-安装postman项目推送Gitee仓库
  • Git配置公钥步骤
  • workman服务端开发模式-应用开发-gateway长链接端工作原理
  • List反转的方法
  • SpringBoot01
  • LeetCode 704.二分查找
  • AI的进阶之路:从机器学习到深度学习的演变(三)
  • 前端调试实践
  • Android 蓝牙Bluedroid线程池设计思路介绍
  • 浅谈怎样系统的准备前端面试
  • 【珠江电缆】创新驱动质量升级,树立行业新标杆
  • 题海拾贝:力扣 86.分隔链表
  • 【Redis经典面试题三】Redis有哪些数据类型?
  • 如何在Ubuntu下通过Docker部署PSQL服务器
  • SPringBoot--第二核心--AOP
  • frp内网穿透笔记
  • 工作与学习方向
  • 本地部署webrtc应用怎么把http协议改成https协议?
  • 青少年编程与数学 02-004 Go语言Web编程 10课题、中间件
  • 13 次小生成树