上层界面“Setting” -> “Device information”会显示 Kernel version:
怎么来的呢?
cat /proc/version
Linux version 2.6.35.7-g02ddeae-dirty (hostname@rdjdz110043) (gcc version 4.4.3 (GCC) ) #2 PREEMPT Fri Oct 19 14:03:35 CST 2012
static int version_proc_show(struct seq_file *m, void *v)
{
seq_printf(m, linux_proc_banner,
utsname()->sysname,
utsname()->release,
utsname()->version);
return 0;
}
const char linux_proc_banner[] =
"%s version %s"
" (" LINUX_COMPILE_BY "@" LINUX_COMPILE_HOST ")"
" (" LINUX_COMPILER ") %s\n";
proc中的version信息, 是在fs/proc/version.c的version_proc_show()显示的linux_proc_banner[], 这个数组定义在kernel/init/version.c 里面有UTS_RELEASE,UTS_RELEASE之外,还包含UTS_MACHINE,UTS_VERSION等,
这个生成的文件是在include/generated/compile.h,它是由init/Makefile调用script/mkcompile_h来生成的。
mkcompile_h中对上述几个宏进行赋值。
编译后会自动生成include/generated/compile.h utsrelease.h