无法获取准确的Centos内核版本

qlfbtfca  于 2022-11-07  发布在  其他
关注(0)|答案(1)|浏览(186)

uname -a表示“内核版本”为3.10.0

[root@iZbp16uggk8lf3x949ewxiZ ~]# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
[root@iZbp16uggk8lf3x949ewxiZ ~]# uname -a
Linux iZbp16uggk8lf3x949ewxiZ 3.10.0-957.21.3.el7.x86_64 #1 SMP Tue Jun 18 16:35:19 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

LINUX_VERSION_CODE还表示当前内核版本为3.10.0

[root@iZbp16uggk8lf3x949ewxiZ ~]# grep -rni "LINUX_VERSION_CODE" /usr/include/
/usr/include/linux/version.h:1:#define LINUX_VERSION_CODE 199168

但是当我发现一个核函数tcp_rtx_synack存在时

[root@iZbp16uggk8lf3x949ewxiZ ~]# cat /proc/kallsyms | grep tcp_rtx_synack
ffffffff952a0700 t tcp_rtx_synack.part.26
ffffffff952a0730 T tcp_rtx_synack
ffffffff95721f90 r __ksymtab_tcp_rtx_synack
ffffffff95739e78 r __kcrctab_tcp_rtx_synack
ffffffff95765c36 r __kstrtab_tcp_rtx_synack

3.17存在https://elixir.bootlin.com/linux/v3.17/A/ident/tcp_rtx_synack函数tcp_rtx_synack
3.16 https://elixir.bootlin.com/linux/v3.17/A/ident/tcp_rtx_synack函数tcp_rtx_synack不存在
这意味着我的centos内核版本至少是3.17,而不是3.10
我正在编写eBPF,它需要更准确的内核版本信息,因为每个内核版本的函数和数据结构都不同。
我在不同的云配置程序上购买了两个虚拟机,两个虚拟机都显示如上。

llmtgqce

llmtgqce1#

CentOS与RHEL一样,包含对旧内核版本的各种补丁(特性、修复等)的后向移植。因此,您不能依赖内核版本来了解哪些特性或功能可用。
相反,您可以从用户空间探测可用的特性(例如,使用bpftool feature probe),或者使用CO-RE通过BTF检测它。

相关问题