Ubuntu20.04 配置preempt_rt补丁过程(18.04类似)

安装环境

CPU 5600X 独立显卡6600XT
系统为Ubuntu20.04 内核主版本为5.13

下载linux内核源码

**现在在rt官网上已经可以下载到LTS内核版本的打好补丁的内核源码了**:
官网rt源码:http://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git
我下载了5.4.182-rt70
直接下载链接为https://git.kernel.org/pub/scm/linux/kernel/git/rt/linux-stable-rt.git/snapshot/linux-stable-rt-5.4.182-rt70.tar.gz

以下打补丁的步骤可以忽略了

在清华源下载5.4.138内核源码;
https://mirror.tuna.tsinghua.edu.cn/kernel/v5.x/linux-5.4.138.tar.xz
在如下镜像站中下载对应版本的preempt补丁
https://mirrors.edge.kernel.org/pub/linux/kernel/projects/rt/5.4/patch-5.4.138-rt62.patch.xz`
在Download(下载)目录下,

xz -cd linux-5.4.138.tar.xz | tar xvf -  # 解压
cd linux-5.4.138
xzcat ../patch-5.4.138-rt62.patch.xz | patch -p1  #打补丁

安装必要库和软件

sudo apt-get update
sudo apt-get install libncurses-dev
sudo apt-get install libssl-dev
sudo apt-get install libelf-dev
sudo apt-get install bison
sudo apt-get install flex

配置

解压命令:

tar -zxvf linux-stable-rt-v5.4-rt.tar.gz

在解压打补丁后的内核目录linux-stable-rt-v5.4-rt下:

make olddefconfig # 从ubuntu内核版本中拷贝config文件并兼容新的内核版本
# 上面这一步请注意,make olddefconfig或oldconfig的原理是复制你现在所处在内核的旧配置文件,
# 所以请处在一个UBUNTU发行版自带的内核环境下进行这一步。
# 或者自行cp /boot/config-{your version}- {your rt kernel}/.config
# 将配置文件拷贝并重命名
make menuconfig # 打开终端图形界面

在这里插入图片描述

大致找到General Setup -> Preemption Model(抢占模型)
用回车键勾选Fully Preemptible Kernel (RT) 完全抢占(这个版本的内核默认是非完全抢占,需要注意)

然后关掉General Setup -> Timers subsystem中的old idle dynticks config,保持第二项high resolution timer support开启

然后跳转到Kernel hacking,在Compile-time checks and compiler options中取消勾选第一项Compile the kernel with debug info,可以缩小内核尺寸,删除调试信息

接下来就是关掉大部分的和Debug有关的选项,之前分析是因为打开了内核调试选项,而导致编译出的rt系统system latency较高,我取消了大概这么些选项:(直接对照图),
主要就是将kernel hacking中能关闭都关掉,并打开高精度时钟,打开完全抢占模型

在这里插入图片描述
在这里插入图片描述

然后一直exit退出配置窗口

下一步很重要,不进行将会make出错:

在解压后的内核目录下:

gedit .config

在编辑器中搜索CONFIG_SYSTEM_TRUSTED_KEYS这一行,将值改为空字符串,即

CONFIG_SYSTEM_TRUSTED_KEYS=""

再搜索CONFIG_DEBUG_INFO,将值改为n或直接注释掉这一行,可以大幅减小编译的内核的体积。

新增:老师附加的一个配置
CONFIG_PCIEASPM_POWERSAVE=n
CONFIG_PCIEASPN_PERFORMANCE=y

构建和安装

make -j24							##编译,j几看电脑配置了,可以在terminal输入nproc查看处理器数目然后乘2
sudo make  modules_install -j24			
sudo make install -j12						##安装
sudo update-grub							##更新grub
sudo reboot                          ##重启 

重启注意事项

经过测试,这个版本的内核似乎不会自己设置自己为新的启动内核,需要在启动grub界面的时候 ,在advanced厘米选择rt内核. 如果是裸机,可能会没有grub界面,可以在

sudo gedit \etc\default\grub

中, 将一个=hidden的选项改为menu就可以了,然后设置延迟时间为15秒左右,然后再执行

sudo update-grub

测试

使用了stress 和 rt-tests两个工具,均可直接apt-get安装.

非实时内核

请添加图片描述
非实时内核,我只是apt-get install软件包就会产生较大的latency, stress的效应并没有被显现出来.

实时内核RT

sudo cyclictest -t -p99 -s

请添加图片描述
对于实时内核的测试,无论是安装程序,还是如图的stress压测,我简单地对cpu,内存,硬盘和io同时施压,我在截图的时候甚至都卡住十多秒,但所cyclictest还是保持稳定的max latency, 效果比较成功.

  • 4
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 13
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值