我需要在 Ubuntu RT Linux 上运行实时应用程序,并且正在阅读有关使 Linux 充当 RT 系统的方法,我学会了两种方法来做到这一点
- preemptive_rt 内核补丁
- 在内核中启用
CONFIG_RT_GROUP_SCHED
标志。
我已经尝试过第一种方法 Install RT Linux patch for Ubuntu
但是,除了 uname -r
显示 #1 SMP PREEMPT RT
之外,我没有其他证据表明它实际上是一个 RT 系统,因此想尝试第二个方法。在内核中启用 CONFIG_RT_GROUP_SCHED
标志并查看其性能。
我读到我们可以通过以下命令确认内核是否已经有标志:
# zcat /proc/config.gz | grep RT_GROUP
CONFIG_RT_GROUP_SCHED=y
但是,我的系统在 proc 中甚至没有 config.gz 文件,所以我相信我的内核没有启用它。 我对 Linux 内核比较陌生,所以这可能很天真,但我如何在内核中启用它?
最佳答案
第一步
从 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
第四步
安装内核构建依赖
$ 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
配置如下图:
转到常规设置
─> Kernel .config support
并通过/proc/config.gz 启用对
.config
的访问
第七步
编译内核
$ 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 重启
第 10 步
通过以下命令验证系统:
# zcat /proc/config.gz | grep RT_GROUP
CONFIG_RT_GROUP_SCHED=y
关于linux - 如何在 Ubuntu 中启用 CONFIG_RT_GROUP_SCHED 使其成为 RT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56189710/