信息: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参数