Linux内核版本后缀+CONFIG_LOCALVERSION

Zep*_*hyr 8 compiling linux-kernel

在系统启动时,我目前从引导加载程序菜单中看到 Linux 4.0.0-rc6yy 和 4.0.0-rc6yy.old。我不确定他们来自哪里。我怀疑“yy”是任意的,但有人可以解释“.old”后缀吗?

也有人可以解释什么 CONFIG_LOCALVERSION 和 CONFIG_LOCALVERSION_AUTO 来自.config?我查过它们,但仍然不清楚它们的用途。非常感谢。

tal*_*zin 10

当您安装内核时,负责的脚本会复制kernel imageinitramfs放入您的/boot目录中。如果以前的同名内核映像已经存在,则通过在其名称后附加 .old 来重命名。

CONFIG_LOCALVERSION

在内核版本的末尾附加一个额外的字符串。例如,这将在您键入 uname 时显示。您在此处设置的字符串将按顺序附加在对象和源树中文件名与 localversion* 匹配的任何文件的内容之后。您的总字符串最多可包含 64 个字符。

这意味着如果您愿意,您可以为自定义内核提供一个特殊的版本号或名称。如果你输入“-MyNewKernel”内核应该是:Linux 4.0.0-MyNewKernel

CONFIG_LOCALVERSION_AUTO

这将尝试通过查找属于当前树顶版本的 git 标签来自动确定当前树是否是发布树。
-gxxxxxxxx 格式的字符串将添加到附加在任何匹配的本地版本1文件之后的本地版本中,以及在 CONFIG_LOCALVERSION 中设置的值之后。

1(这里使用的实际字符串是运行命令产生的前八个字符:

$ git rev-parse --verify HEAD

这是在脚本“scripts/setlocalversion”中完成的。)

这意味着如果启用,则由 setlocalversion(或 .scmversion)报告的唯一 SCM(源代码控制管理)标记将附加到内核版本(如果存在)。例如,如果找到一个 git 树,如果它存在,将附加修订号。结果可能看起来:Linux 4.0.0-MyNewKernel-ga2cfc42。有关更多信息,您可以查看您的源代码树 scipts/setlocalversion。