如何在Ubuntu中启用CONFIG_RT_GROUP_SCHED使其成为RT

时间:2019-05-17 15:44:16

标签: linux ubuntu real-time cgroups

我需要在Ubuntu RT Linux上运行实时应用程序,并且正在阅读有关使Linux充当RT系统的方法,并且我学习了两种方法来实现

  1. preemptive_rt内核修补程序
  2. 在内核中启用CONFIG_RT_GROUP_SCHED标志。

我已经尝试过第一种方法Install RT Linux patch for Ubuntu

但是,除了显示uname -r的{​​{1}}之外,我没有其他证据证明它实际上是RT系统,因此想尝试第二种方法。在内核中启用#1 SMP PREEMPT RT标志并查看其性能。

我读到我们可以通过以下命令确认内核是否已经有该标志:

CONFIG_RT_GROUP_SCHED

但是,我的系统甚至在proc中都没有config.gz文件,因此我相信我的内核没有启用此功能。 我对Linux内核比较陌生,所以这可能很幼稚,但是如何在内核中启用呢?

1 个答案:

答案 0 :(得分:0)

第1步
https://www.kernel.org/pub/linux/kernel/下载linux内核。出于此PoC的目的,我们从上面的链接中下载了linux-4.16.18.tar.gz内核。

第2步 解压缩内核

$ tar -xzvf linux-4.16.18.tar.gz

第3步

移至内核源目录

$ cd linux-4.16.18

第4步

安装内核构建依赖项

$ sudo apt install git build-essential kernel-package fakeroot libncurses5-dev libssl-dev ccache bison flex

第5步

运行内核配置

$make menuconfig

步骤6

转到General setup─> Control Group Support─> CPU controller─> Group scheduling for SCHED_RR/FIFO配置,如下所示:

enter image description here

转到General setup─> Kernel .config support并启用通过.config/proc/config.gz的访问权限

第7步

编译内核

$ make -j20

制作模块并安装

$ sudo make modules_install -j20
$ sudo make install -j20

第8步

打开grub.cfg文件以验证是否已安装内核

$ vim /boot/grub/grub.cfg

使用menuentry 'Ubuntu, with Linux linux-4.16.18'

查找菜单项

如果它不是您的默认内核,则将GRUB_DEFAULT=0的值更改为您的内核

第9步

重新启动系统

sudo reboot

步骤10

通过以下命令验证系统:

# zcat /proc/config.gz | grep RT_GROUP

CONFIG_RT_GROUP_SCHED=y