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

Axe*_*ine 6 linux linux-kernel

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

Linux版本3.12.18 (vagrant @ vagrant-ubuntu- trusty -64)(gcc版本4.8.2(Ubuntu 4.8.2-19ubuntu1))#1 SMP 2014年5月1日星期四18:56:23 UTC

如何将粗体部分删除或自定义为内核构建的一部分?

Sas*_*i V 1

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

男人 2 姓名

               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
               };
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

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

VERSION = 3
PATCHLEVEL = 15
SUBLEVEL = 0
EXTRAVERSION = -rc3
Run Code Online (Sandbox Code Playgroud)

在 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";
Run Code Online (Sandbox Code Playgroud)

另请参阅 fs/proc/version.c