信息:x86工控机
1,查看系统内核版本
我的ubuntu20.04.5(22.11.08)
内核是5.15.0(uname -a)
2,下载内核源码和preempt_rt补丁
选择5.15.0版本,注意,下载的网页没有点0,只有5.15就是我们要的5.15.0
内核源码:
https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-5.15.tar.gz
preempt_rt实时补丁:
https://mirrors.edge.kernel.org/pub/linux/kernel/projects/rt/5.15/older/patch-5.15-rt17.patch.xz
解压:tar.gz
tar.gz解压解压
tartar -zxvf linux-5.15.tar.gz
xz解压文件方法或命令
xz -d patch-5.15-rt17.patch.xz
创建tar.xz文件:只要先 tar cvf xxx.tar xxx/ 这样创建xxx.tar文件先,然后使用 xz -z xxx.tar 来将 xxx.tar压缩成为 xxx.tar.xz
解压tar.xz文件:先 xz -d xxx.tar.xz 将 xxx.tar.xz解压成 xxx.tar 然后,再用 tar xvf xxx.tar来解包。
3,安装必要环境
sudo apt install autoconf automake libtool make libncurses-dev flex bison libelf-dev libssl-dev zstd net-tools
cd linux-5.15
patch -p1 < ../patch-5.15-rt17.patch
4,内核配置
make localmodconfig
make menuconfig
- CONFIG_PREEMPT_RT_FULL
- CONFIG_CPU_FREQ=n
- CONFIG_CPU_IDLE=n
- CONFIG_NO_HZ_FULL=y
- CONFIG_RCU_NOCB_CPU=y
- 频率250调成1000hz
Tip: While you are in the menuconfig, type “/” and you can type to find the place of a configuration parameter. Exit with ESC
5,编译内核
make -j4
sudo make modules_install -j4
sudo make install -j4
6,配置GRUB启动项
sudo vim /etc/default/grub
1,注释掉下面这行将会显示引导菜单
#GRUB_TIMEOUT_STYLE=hidden
2,适当修改超时时间
GRUB_TIMEOUT=5 超时时间,单位s
3,默认启动项
GRUB_DEFAULT=”1> 4″
其中1代表第一页菜单(序号从0开始),2代表第二页菜单(序号从0开始),从上往下数。
注意大于号后面与4之间有空格
4,更新启动项配置
sudo update-grub
sudo reboot
7,实时性能测试
sudo apt install rt-tests
sudo cyclictest -t 4 -p 80
测试命令里面4是4个线程的意思,处理器是4核4线程,我安装的版本比较老,如果数量写大于4就报错如下:
FATAL: invalid cpu passed to numa_node_of_cpu(4)
解决办法是手动从源码编译rt-tests就可以了。
数据显示单位是us,如果想显示ns,可以加-N参数
声明:
本文采用
BY-NC-SA
协议进行授权,如无注明均为原创,转载请注明转自
走着的小站
本文地址: Ubuntu20.04编译内核安装preempt_rt实时补丁
本文地址: Ubuntu20.04编译内核安装preempt_rt实时补丁