【发布时间】:2014-06-18 21:41:35
【问题描述】:
对于这个内核版本字符串(在启动时显示):
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
如何将粗体部分删除或自定义为内核构建的一部分?
【问题讨论】:
标签: 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
如何将粗体部分删除或自定义为内核构建的一部分?
【问题讨论】:
标签: linux linux-kernel
您可以通过设置以下定义来自定义您希望编辑的部分版本字符串(在启动时或通过调用命令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 覆盖生成的值。通过这样做,您添加了额外的构建维护,只是为了更改很少查询的值。
【讨论】:
git log %H 之外我找不到它:-(
内核通过 uname 调用仅向用户空间提供以下信息。您只能在自定义的 uname 二进制/内核中看到 gcc 版本 gcc 版本 4.8.2 (Ubuntu 4.8.2-19ubuntu1)。
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
【讨论】:
应该是:
make menuconfig -> General setup -> Local version - append to kernel release
即.config 文件中的CONFIG_LOCALVERSION。
【讨论】: