Centos内核升级解决eBPF脚本问题

在尝试执行eBPF脚本时遇到modprobe错误,原因是kernel和kernel-devel版本不匹配。通过检查发现内核版本为3.10.0-1062.9.1.el7.x86_64,而kernel-devel版本为3.10.0-1160.83.1.el7.x86_64。由于无法降级kernel-devel,选择升级内核到与kernel-devel相同的版本1160.83.1,包括修改启动顺序并重启系统,最终成功匹配内核版本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景介绍

最近在进行eBPF相关的尝试,在centos7中执行eBPF脚本时遇到如下错误:

modprobe: FATAL: Module kheaders not found.
chdir(/lib/modules/3.10.0-1062.9.1.el7.x86_64/build): No such file or directory
Traceback (most recent call last):
  File "./test.py", line 104, in <module>
    b = BPF(text=bpf_program)
  File "/usr/lib/python2.7/site-packages/bcc/__init__.py", line 325, in __init__
    raise Exception("Failed to compile BPF text")
Exception: Failed to compile BPF text

从网上找到原因,是因为kernel和kernel-devel工具版本不一致导致的。

解决问题

  1. 查看当前内核版本:

命令:uname -r

结果:3.10.0-1062.9.1.el7.x86_64

  1. 查看devel工具版本:

命令:rpm -qa|grep -i kernel | grep -i devel

结果:kernel-devel-3.10.0-1160.83.1.el7.x86_64

这里的版本一致性需要完全一致,小版本不一致也不行。

两种解决思路:devel降级或者kernel升级。

  1. 先尝试降级,安装一个低版本的devel。

命令:yum install "kernel-devel-uname-r == $(uname -r)"

结果:

Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
No package kernel-devel-uname-r == 3.10.0-1062.9.1.el7.x86_64 available.
Error: Nothing to do

说明没有该kernel版本的devel,所以只能尝试升级kernel的方案了。

  1. 查看现在系统可用内核版本 rpm -qa | grep kernel

kernel-headers-3.10.0-1062.9.1.el7.x86_64
kernel-devel-3.10.0-1160.83.1.el7.x86_64
kernel-debug-devel-3.10.0-1062.12.1.el7.x86_64
kernel-tools-libs-3.10.0-1062.9.1.el7.x86_64
kernel-3.10.0-957.12.2.el7.x86_64
kernel-3.10.0-1062.9.1.el7.x86_64
kernel-tools-3.10.0-1062.9.1.el7.x86_64

没有安装我们想要的版本,所以需要先安装。

  1. 查看内核仓库中可安装的内核包

yum list --showduplicate kernel*

能找得到kernel.x86_64 3.10.0-1160.83.1.el7,就看怎么来安装了。

6、安装指定版本kernel

yum -y install "kernel-uname-r == 3.10.0-1160.83.1.el7.x86_64"

7、查看内核版本的启动顺序

awk -F\' '$1=="menuentry " {print $2}' /etc/grub2.cfg

找到自己新安装的版本,一般最新安装的会是第一行

8、修改内核启动顺序

sudo vim /etc/default/grub

把GRUB_DEFAULT=saved改成GRUB_0=saved

运行命令重新生成内核配置

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

9、reboot重启,当前内核uname -r

3.10.0-1160.83.1.el7.x86_64

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值