如何自定义或删除启动时显示的额外Linux内核版本详细信息?

时间:2014-05-02 08:47:43

标签: linux linux-kernel

对于此内核版本字符串(在引导时显示):

Linux版本3.12.18 (vagrant @ vagrant-ubuntu-trusty-64)(gcc版本4.8.2(Ubuntu 4.8.2-19ubuntu1))#1 SMP Thu May 1 18:56 :23 UTC 2014

如何在内核构建中删除或自定义粗体部分?

3 个答案:

答案 0 :(得分:3)

您可以通过设置以下定义来自定义您要编辑的版本字符串的部分(在启动时看到或通过调用命令cat /proc/version):

  • KBUILD_BUILD_USER改变你的“流浪汉”价值。
  • KBUILD_BUILD_HOST改变你的“vagrant-ubuntu-trusty-64”值。

您可能也对KBUILD_BUILD_TIMESTAMP感兴趣(更改“Thu May 1 18:56:23 UTC 2014”)和KBUILD_BUILD_VERSION(更改“#1”)。

完整的Linux流程标题已在init/version.c中完成。这些定义的值由scripts/mkcompile_h生成。您可以编辑这些文件中的任何一个以完全控制您的版本字符串,但您永远不知道这些附加信息何时可能有用;我建议只改变定义。另一个选项是make some changes your host system覆盖生成的值。通过这样做,您只需添加额外的构建维护来更改很少查询的值。

答案 1 :(得分:1)

内核通过uname调用仅向用户空间提供以下信息。您只能在自定义的uname二进制文件/内核中看到gcc版本 gcc版本4.8.2(Ubuntu 4.8.2-19ubuntu1)

man 2 uname

               struct utsname {
                   char sysname[];    /* Operating system name (e.g., "Linux") */
                   char nodename[];   /* Name within "some implementation-defined
                                         network" */
                   char release[];    /* Operating system release (e.g., "2.6.28") */
                   char version[];    /* Operating system version */
                   char machine[];    /* Hardware identifier */
               #ifdef _GNU_SOURCE
                   char domainname[]; /* NIS or YP domain name */
               #endif
               };

Fedora / Redhat不显示编译器信息。

[root@Shash Sasi]# uname -a
Linux Shash 3.13.10-200.fc20.x86_64 #1 SMP Mon Apr 14 20:34:16 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

vagrant @ vagrant-ubuntu-trusty-64 看起来像EXTRAVERSION是内核主要的makefile。

VERSION = 3
PATCHLEVEL = 15
SUBLEVEL = 0
EXTRAVERSION = -rc3

在init / version.c中:

const char linux_banner[] =
        "Linux version " UTS_RELEASE " (" LINUX_COMPILE_BY "@"
        LINUX_COMPILE_HOST ") (" LINUX_COMPILER ") " UTS_VERSION "\n";

const char linux_proc_banner[] =
        "%s version %s"
        " (" LINUX_COMPILE_BY "@" LINUX_COMPILE_HOST ")"
        " (" LINUX_COMPILER ") %s\n";

另请参阅fs / proc / version.c

答案 2 :(得分:0)

应该是:

make menuconfig -> General setup -> Local version - append to kernel release

CONFIG_LOCALVERSION文件中的.config