在内核空间中获取完整的内核版本

Posted

技术标签:

【中文标题】在内核空间中获取完整的内核版本【英文标题】:fetch full kernel version in kernel space 【发布时间】:2017-11-24 18:25:02 【问题描述】:

内核定义了两个宏LINUX_VERSION_CODEKERNEL_VERSION,可以用来检查内核版本。但是它不允许检查版本字符串是否有EXTRAVERSION 后缀,例如4.11.0-rc8

我需要在编译时进行此类检查。除了上面提到的宏,我还能看什么?

谢谢。

【问题讨论】:

【参考方案1】:

你可以阅读include/config/kernel.release,就像内核的makefile所说:

# Read KERNELRELEASE from include/config/kernel.release (if it exists)
KERNELRELEASE = $(shell cat include/config/kernel.release 2> /dev/null)
KERNELVERSION = $(VERSION)$(if $(PATCHLEVEL),.$(PATCHLEVEL)$(if $(SUBLEVEL),.$(SUBLEVEL)))$(EXTRAVERSION)

并且在编译过程中Makefile会导出内核的版本信息,也许你可以使用它。

【讨论】:

以上是关于在内核空间中获取完整的内核版本的主要内容,如果未能解决你的问题,请参考以下文章

Linux删除内核

linux的内核版本表示是怎样的

linux 编译内核 /boot空间不足?

如何获取嵌入式设备的内核版本信息

linux 内核版本 4.12.8 中未定义的 copy_to_user

如何在CentOS/RHEL上安装或升级新的内核版本