麒麟v10安装PREEMPT_RT实时补丁

项目里需要对麒麟v10打实时补丁(PREEMPT_RT),但安装elrepo源时提示nothing provides system-release < 8 needed by elrepo-release-7.0-6...的问题,试了几个elrepo版本都没有解决。后改用源码打补丁的方式编译安装通过,这里记录安装过程。此方法也适用升级内核或打其他内核补丁的场景。

首先查看当前内核版本号,例如下面的4.19.90。我们这次并不想升级内核版本因此后面将使用相同版本号:

> uname -a
Linux bogon 4.19.90-24.4.v2101.ky10.x86_64 #1 SMP Thu Dec 19 15:21:06 
CST 2024 x86_64 x86_64 x86_64 GNU/Linux

下载Linux内核源码和实时补丁并解压缩,它们的版本号要完全相同,否则patch时会失败:

wget https://mirrors.aliyun.com/linux-kernel/v4.x/linux-4.19.90.tar.gz
wget https://cdn.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patch-4.19.90-rt35.patch.gz

tar zxvf linux-4.19.90.tar.gz
gunzip patch-4.19.325-rt140.patch.gz

对源码打实时补丁:

cd linux-4.19.90
patch -p1 < patch-4.19.325-rt140.patch

安装必要的依赖:

yum install ncurses-devel bison flex elfutils-devel openssl-devel

配置内核参数:

make menuconfig
  • General setup -> Preemption Model里修改选项为Fully Preemptible Kernel
  • Timer subsystem里确认启用了High Resolution Timer Support
  • 保存为默认的.config文件退出

file

编译和安装内核:

# 4为线程数,根据cpu线程数配置
make -j4
make modules_install -j4
make install -j4

更新grub2:

grub2-mkconfig -o /boot/grub2/grub.cfg

重启服务器并在开机画面选择新内核验证效果;如果是远程操作可以先grub2-reboot 0实现一次性修改默认启动项,然后reboot重启系统进入新内核。

验证内核是否已打好PREEMPT_RT实时补丁:

> uname -a
Linux bogon 4.19.90-rt35 #1 SMP PREEMPT RT Thu Dec 19 16:57:18 
CST 2024 x86_64 x86_64 x86_64 GNU/Linux
欢迎转载
请保留原始链接:https://bjzhanghao.com/p/3481

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注