如何修改Linux内核来改变uname返回的版本字符串?
Posted
技术标签:
【中文标题】如何修改Linux内核来改变uname返回的版本字符串?【英文标题】:How to modify the Linux kernel to change the version string that uname returns? 【发布时间】:2013-10-22 03:19:04 【问题描述】:我正在使用旧 (2.6.33.2) 版本的嵌入式 Linux,并且已被要求更改内核,以便可以区分不同的修补内核映像。目前,uname -v
输出例如"#1 Wed Sep 11 07:07:51 BST 2013
。
因此我想对此进行更改,以便任何后续补丁都将#1
部分更改为定义为补丁一部分的修订号(并将日期部分更改为最新内核补丁的日期),但我看不到这是在内核中的哪个位置设置的。
我应该查看哪些文件来执行此操作?
【问题讨论】:
也许你的内核源代码树中有一个.version
文件。
我很确定您可以在执行 "make menuconfig" 时更改此设置。有一个类似“本地版本字符串”的选项
有一个 CONFIG_LOCALVERSION,但这会让你设置 'uname -r' 显示的内容,而不是 'uname -v'。
有一个文件 include/generated/compile.h
包含 UTS_VERSION 的定义,其中包含时间戳。每次构建内核时都会生成此文件。如果你搜索这个定义,你会发现它在几个地方被用来形成内核的版本字符串。如果您必须更改此时间戳,那么您必须修改使用此定义的源文件并使用您自己的。您可以编辑.version
文件以更改您提到的#1
部分。
【参考方案1】:
尝试设置KBUILD_BUILD_TIMESTAMP
。默认是`date`
,所以可能是这样的
export KBUILD_BUILD_TIMESTAMP="r3 `date`"
开头的#1
来自.version
文件,每次配置/构建后递增。
有关详细信息,请参阅文件 scripts/mkcompile_h
。
【讨论】:
以上是关于如何修改Linux内核来改变uname返回的版本字符串?的主要内容,如果未能解决你的问题,请参考以下文章
当前linux所使用的内核在哪个文件夹,如何看当前使用的内核版本情况。
Linux如何查看内核版本并安装内核头文件linux-headers-generic