Ubuntu16.04 实时内核 RT Preempt 安装

时间:2022-07-24
本文章向大家介绍Ubuntu16.04 实时内核 RT Preempt 安装,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

上一篇已经介绍了关于Ubuntu18.04 实时内核的安装,此处介绍Ubuntu16.04的实时内核具体安装情况。

RTOS

1 安装依赖项

apt-get install build-essential bc curl ca-certificates fakeroot gnupg2 libssl-dev lsb-release libelf-dev bison flex

2 内核版本

要找到您当前正在使用的那个,请使用uname -r。实时补丁仅适用于部分内核版本,请参阅:

https://www.kernel.org/pub/linux/kernel/projects/rt/

kernel

我们建议选择最接近您当前使用的版本。以下命令假定带有4.14.12-rt10补丁的4.14.12内核版本。如果选择其他版本,只需替换数字即可。确定版本后,使用curl下载源文件:

curl -SLO https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.14.12.tar.xz
curl -SLO https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.14.12.tar.sign
curl -SLO https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patch-4.14.12-rt10.patch.xz
curl -SLO https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patch-4.14.12-rt10.patch.sign

并使用以下命令解压缩它们:

xz -d linux-4.14.12.tar.xz

xz -d patch-4.14.12-rt10.patch.xz

3 编译内核

一旦确定文件下载正确,就可以提取源代码并应用补丁:

tar xf linux-4.14.12.tar
cd linux-4.14.12
patch -p1 < ../patch-4.14.12-rt10.patch

下一步是配置内核:

make oldconfig

这将打开一个基于文本的配置菜单。当要求提供抢占模型时,选择完全可抢占内核:

Preemption Model

1. No Forced Preemption (Server) (PREEMPT_NONE)

2. Voluntary Kernel Preemption (Desktop) (PREEMPT_VOLUNTARY)

3. Preemptible Kernel (Low-Latency Desktop) (PREEMPT__LL) (NEW)

4. Preemptible Kernel (Basic RT) (PREEMPT_RTB) (NEW)

> 5. Fully Preemptible Kernel (RT) (PREEMPT_RT_FULL) (NEW)

我们建议将其他选项保留为默认值。之后,您就可以编译内核了。因为这是一个漫长的过程,所以将多线程选项-j设置为您的CPU内核数:

fakeroot make -j4 deb-pkg

最后,您准备安装新创建的软件包。确切的名称取决于您的环境,但是您正在寻找没有dbg后缀的headers和images包。
sudo dpkg -i ../linux-headers-4.14.12-rt10_*.deb ../linux-image-4.14.12-rt10_*.deb
重新启动系统。

4 验证

Grub引导菜单现在应该允许您选择新安装的内核。要查看当前正在使用哪一个,请查看uname -a命令的输出。它应包含字符串PREEMPT RT和您选择的版本号。此外,/ sys / kernel / realtime应该存在并且包含数字1。

5 允许用户为其进程设置实时权限

sudo addgroup realtime
sudo usermod -a -G realtime $(whoami)

然后,将以下限制添加到的实时组中/etc/security/limits.conf:

@realtime soft rtprio 99

@realtime soft priority 99

@realtime soft memlock 102400

@realtime hard rtprio 99

@realtime hard priority 99

@realtime hard memlock 102400