开发环境为vm-ware创建的ubuntu 20.04虚拟机,4G内存,80G硬盘,4核处理器。

一、准备工作

1.内核与补丁下载:

  下载与Linux系统相近版本的内核源码(Linux系统版本可通过 uname -r 命令获取)

  内核下载网站:https://mirrors.edge.kernel.org/pub/linux/kernel/

  下载与内核源码对应版本的补丁

  补丁下载网站: https://mirrors.edge.kernel.org/pub/linux/kernel/projects/rt/

2.将下载的内核源码与补丁解压文件到对应的文件夹

  已经提前在 /usr/src 文件夹下创建文件夹 rtlinux

3.准备内核编译环境

  下载相应的资源包(后续编译过程报错,就根据报错内容继续安装)

apt-get -y update
apt-get install patch
apt-get install build-essential make gcc libncurses-dev libssl-dev libc6-dev libelf-dev bison dwarves zstd flex

二、配置RTLinux

1.将patch 复制到linux内核目录下

2.进入内核源码目录,给linux内核配置RT patch:(打补丁)

3.执行make clean 在编译前清除一下环境并拷贝与当前内核版本匹配的config文件到内核源码目录,并命名为.config

4. 执行make menuconfig 进行图形化内核配置

  ① "General setup" -> "Preemption Model" -> 选择 "Fully Preemptible Kernel(Real-Time)"

  ②"Device Drivers" -> 去掉"Staging drivers"(按空格)

  ③"Processor type and features"  ->  "Timer frequency" -> 选择"1000Hz "

5.编辑.config文件

删除或注释.config文件中CONFIG_SYSTEM_TRUSTED_KEYS与CONFIG_SYSTEM_REVOCATION_KEYS的配置参数

6.编译RTLinux内核(-jn表示n线程编译,n根据分配的处理器数量)

make -j4

  At least two hours later! 

7.进行各种install(如果没出错,80%概率已成功)

make modules_install -j4
make install 
update-grub

三、校验结果

cd /boot
ls

  查看/boot 目录下是否有生成的rt核心, 应该生成对应版本的config、System.map、initrd.img、vmlinuz文件。

  重启后查看内核版本:

reboot
uname -r

 

  内核版本已更新为 rt 版本。

四、启动设置(未成功)

  如果重启后直接开机,没有出现选择内核的页面,则在进入系统后,执行下面的命令:

sudo gedit /etc/default/grub

GRUB_TIMEOUT=10  %超时时间,单位s

GRUB_DEFAULT="1>2"  %1代表默认启动内核,2代表所启动内核位于列表中第2个(序号从0开始)

  然后更新grub

sudo update-grub

五、运行测试

  1.安装rt_test

sudo apt-get install rt-tests 

  2.运行测试(4个线程,线程优先级80,以ns显示时间)

sudo cyclictest -t 4 -p 80 -N

  测试结果含义:

T: 0     序号为0的线程
P: 80    线程优先级为80
I: 1000  时间间隔为1000微秒(us)
C: ~     计数器。线程的时间间隔每达到一次,计数器加1
Min:     最小延时(us)
Act:     最近一次的延时(us)
Avg:    平均延时(us)
Max:    最大延时(us)  

参考:

硬实时RTLinux安装配置详解 (一):准备工作_HowieXue的博客-CSDN博客_rtlinux

硬实时RTLinux安装配置详解 (二):编译运行RTLinux_HowieXue的博客-CSDN博客_rtlinux

Ubuntu 20.04安装RT-PREEMPT实时内核补丁_看他个锤子的博客-CSDN博客_ubuntu 实时补丁

编译linux的RT实时内核_「已注销」的博客-CSDN博客_rt内核

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐