1 // SPDX-License-Identifier: GPL-2.0-only 2 /* 3 * linux/init/version.c 4 * 5 * Copyright (C) 1992 Theodore Ts'o 6 * 7 * May be freely distributed as part of Linux. 8 */ 9 10 #include <generated/compile.h> 11 #include <linux/build-salt.h> 12 #include <linux/elfnote-lto.h> 13 #include <linux/export.h> 14 #include <linux/init.h> 15 #include <linux/printk.h> 16 #include <linux/uts.h> 17 #include <linux/utsname.h> 18 #include <linux/proc_ns.h> 19 20 static int __init early_hostname(char *arg) 21 { 22 size_t bufsize = sizeof(init_uts_ns.name.nodename); 23 size_t maxlen = bufsize - 1; 24 size_t arglen; 25 26 arglen = strlcpy(init_uts_ns.name.nodename, arg, bufsize); 27 if (arglen > maxlen) { 28 pr_warn("hostname parameter exceeds %zd characters and will be truncated", 29 maxlen); 30 } 31 return 0; 32 } 33 early_param("hostname", early_hostname); 34 35 const char linux_proc_banner[] = 36 "%s version %s" 37 " (" LINUX_COMPILE_BY "@" LINUX_COMPILE_HOST ")" 38 " (" LINUX_COMPILER ") %s\n"; 39 40 BUILD_SALT; 41 BUILD_LTO_INFO; 42 43 /* 44 * init_uts_ns and linux_banner contain the build version and timestamp, 45 * which are really fixed at the very last step of build process. 46 * They are compiled with __weak first, and without __weak later. 47 */ 48 49 struct uts_namespace init_uts_ns __weak; 50 const char linux_banner[] __weak; 51 52 #include "version-timestamp.c" 53 54 EXPORT_SYMBOL_GPL(init_uts_ns); 55