ubuntu20.04安装实时内核补丁PREEMPT_RT

复制代码
参考:
Ubuntu 18.04安装 RT-PREEMPT 实时内核及补丁【过程记录】_ubuntu18.04 preempt rt linux 5.6.19-CSDN博客
https://github.com/UniversalRobots/Universal_Robots_ROS_Driver/blob/master/ur_robot_driver/doc/real_time.md

当前内核:5.15.0-94-generic

安装实时内核:5.15.148

通过Index of /pub/linux/kernel/v5.x/ 我下载linux-5.15.148.tar.xz和linux-5.15.148.tar.sign

通过realtime:preempt_rt_versions [Wiki]下载实时内核补丁,我下载patch-5.15.148-rt74.patch.sign和patch-5.15.148-rt74.patch.xz

解压

xz -dk patch-5.15.148-rt74.patch.xz

xz -d linux-5.15.148.tar.xz

tar xf linux-5.15.148.tar

cd linux-5.15.148.tar

xzcat ../patch-5.15.148-rt74.patch.xz | patch -p1

安装:

复制代码
sudo apt-get install build-essential bc ca-certificates gnupg2 libssl-dev wget gawk flex bison

创建rt_kernal文件夹,linux-5.15.148文件夹放进去

复制代码
进入linux-5.15.148文件夹,执行以下指令,配置内核:
make oldconfig

我这选4,看名字,其他都默认

之后一直回车

构建内核:

复制代码
make -j `getconf _NPROCESSORS_ONLN` deb-pkg

1)报错fatal error: libelf.h: No such file or directory

复制代码
sudo apt-get install libelf-dev

2)

重新编译前需要移除,不然会报错

复制代码
rm vmlinux-gdb.py

报错:

dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2

通过以下指令看具体报错并输出日志到make.log:make -j1 deb-pkg 2>&1 | tee ~/make.log

(j1我理解为一个线程,原本是多线程一起编译,导致看不到报错在哪里比较乱。这里可以继续j12之类的多线程,然后去make.log里找error,这样比较快)

可以看到以上问题

修改linux-5.15.148/include/config/auto.conf文件中以下两个参数为空格

原:

复制代码
CONFIG_SYSTEM_TRUSTED_KEYS="debian/canonical-certs.pem"

CONFIG_SYSTEM_REVOCATION_KEYS="debian/canonical-revoked-certs.pem"

改为:

CONFIG_SYSTEM_TRUSTED_KEYS=""

CONFIG_SYSTEM_REVOCATION_KEYS=""

解决这个问题

3)

把auto.conf中改CONFIG_DEBUG_INFO_BTF=N

安装sudo apt-get install dwarves

4)

zstd: not found make[5]: *** [arch/x86/boot/compressed/Makefile:143: arch/x86/boot/compressed/vmlinux.bin.zst] Error 127 make[5]: *** Deleting file 'arch/x86/boot/compressed/vmlinux.bin.zst'

解决:sudo apt install zstd

5)

再一次成功

安装生成的四个deb

复制代码
sudo dpkg -i  xxx.deb

比较幸运没遇到问题,重启进入后,启动页面没有变化,还是进入ubuntu,但是查看内核版本已经自动变到5.15.148

测试成功安装实时补丁

测试:

参考关于Linux安装RT-PREEMPT实时补丁-CSDN博客

使用ur10,发现launch后改为报错

error:unseccessful in setting main thread realtime prriority.

error,Main thread: Scheduling is NOT SCHED_FIFO!

做以下内容,重启,成功

相关推荐
小小管写大大码4 小时前
如何让vscode变得更智能?vscode接入claude实现自动编程
运维·ide·vscode·自动化·编辑器·ai编程·腾讯云ai代码助手
嵩山小老虎4 小时前
Windows 10/11 安装 WSL2 并配置 VSCode 开发环境(C 语言 / Linux API 适用)
linux·windows·vscode
Fleshy数模5 小时前
CentOS7 安装配置 MySQL5.7 完整教程(本地虚拟机学习版)
linux·mysql·centos
zhang133830890755 小时前
CG-09H 超声波风速风向传感器 加热型 ABS材质 重量轻 没有机械部件
大数据·运维·网络·人工智能·自动化
a41324475 小时前
ubuntu 25 安装vllm
linux·服务器·ubuntu·vllm
Fᴏʀ ʏ꯭ᴏ꯭ᴜ꯭.6 小时前
Keepalived VIP迁移邮件告警配置指南
运维·服务器·笔记
物联网软硬件开发-轨物科技6 小时前
【轨物洞见】告别“被动维修”!预测性运维如何重塑老旧电站的资产价值?
运维·人工智能
程序员允诺6 小时前
[DevOps实战] 彻底解决依赖地狱:如何编译全静态、可移植的 Xorriso 工具
运维·devops
酣大智6 小时前
接口模式参数
运维·网络·网络协议·tcp/ip
一只自律的鸡7 小时前
【Linux驱动】bug处理 ens33找不到IP
linux·运维·bug