当前位置:首页 > Linux > 正文

查看Linux内核版本源码方法

查看Linux内核源码根目录下的 Makefile文件开头部分,定位 VERSIONPATCHLEVELSUBLEVELEXTRAVERSION变量定义,组合其值即可得到完整内核版本号。

如何从源码里查看Linux内核版本

在Linux开发与调试工作中,直接通过源代码确定内核版本是开发者必备的核心技能,这一操作对于验证代码兼容性、定位问题根源或进行内核移植至关重要,以下是四种经过验证的专业方法:


通过顶层Makefile查看(最可靠)

内核源码根目录下的Makefile明确记录了版本信息:

cd /path/to/linux-kernel-source
head -n 5 Makefile

示例输出:

VERSION = 5
PATCHLEVEL = 15
SUBLEVEL = 0
EXTRAVERSION = -rc3
NAME = Trick or Treat

解析规则

  • VERSION.PATCHLEVEL.SUBLEVEL 构成基础版本号(示例中为 15.0
  • EXTRAVERSION 表示额外标识(如-rc3代表候选版本)
  • NAME 是当前版本的开发代号

通过version.h头文件查看

内核构建过程中自动生成版本头文件:

查看Linux内核版本源码方法  第1张

grep -E "LINUX_VERSION_CODE|KERNEL_VERSION" include/generated/uapi/linux/version.h

示例输出:

#define LINUX_VERSION_CODE 265728
#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))

解码技巧

  • LINUX_VERSION_CODE转换为十六进制:0x41000
  • 版本号计算:(0x41 >> 16).((0x41 >> 8) & 0xFF).(0x41 & 0xFF)15.0

通过Git仓库标签确认

若内核源码通过Git管理,版本标签直接关联发布版本:

git describe --tags | awk -F'-' '{print $1}'

示例输出:v5.15-rc3

适用场景
仅适用于使用Git管理的源码树,且需保留历史提交记录


使用内核自带的scripts工具

内核提供专用脚本验证版本:

cd /path/to/linux-kernel-source
make kernelversion  # 输出基础版本(如5.15.0)
make kernelrelease  # 输出完整版本(如5.15.0-rc3)

优势
直接调用编译系统接口,避免手动解析错误


方法 可靠性 复杂度 适用场景
Makefile 所有源码版本
version.h 已配置编译环境
Git标签 Git管理的源码
编译脚本 已安装编译工具链的环境

关键提示
当需要精确版本信息时,优先采用Makefile解析法,因其直接关联源码版本定义,若需获取构建后的完整版本标识,则选用make kernelrelease命令更高效。


为什么需要从源码确认版本?

  1. 开发调试:验证补丁与特定内核版本的兼容性
  2. 安全审计:确认破绽修复版本是否已集成
  3. 驱动编译:确保内核模块与目标版本匹配
  4. 系统移植:交叉编译前检查基础版本依赖

引用说明
本文方法参照Linux内核官方文档《Kernel Build System》及内核源码中的Documentation/process/howto.rst,版本编码规则依据内核维护者Greg Kroah-Hartman的版本管理规范。

0