【问题标题】:How to modify the Linux kernel to change the version string that uname returns?如何修改Linux内核来改变uname返回的版本字符串?
【发布时间】: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 部分。

标签: linux linux-kernel version patch uname


【解决方案1】:

尝试设置KBUILD_BUILD_TIMESTAMP。默认是`date`,所以可能是这样的

export KBUILD_BUILD_TIMESTAMP="r3 `date`"

开头的#1来自.version文件,每次配置/构建后递增。

有关详细信息,请参阅文件 scripts/mkcompile_h

【讨论】:

    猜你喜欢
    • 2015-04-25
    • 2012-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多