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 <generated/utsrelease.h> 19 #include <linux/proc_ns.h> 20 21 static int __init early_hostname(char *arg) 22 { 23 size_t bufsize = sizeof(init_uts_ns.name.nodename); 24 size_t maxlen = bufsize - 1; 25 size_t arglen; 26 27 arglen = strlcpy(init_uts_ns.name.nodename, arg, bufsize); 28 if (arglen > maxlen) { 29 pr_warn("hostname parameter exceeds %zd characters and will be truncated", 30 maxlen); 31 } 32 return 0; 33 } 34 early_param("hostname", early_hostname); 35 36 const char linux_proc_banner[] = 37 "%s version %s" 38 " (" LINUX_COMPILE_BY "@" LINUX_COMPILE_HOST ")" 39 " (" LINUX_COMPILER ") %s\n"; 40 41 BUILD_SALT; 42 BUILD_LTO_INFO; 43 44 /* 45 * init_uts_ns and linux_banner contain the build version and timestamp, 46 * which are really fixed at the very last step of build process. 47 * They are compiled with __weak first, and without __weak later. 48 */ 49 50 struct uts_namespace init_uts_ns __weak; 51 const char linux_banner[] __weak; 52 53 #include "version-timestamp.c" 54 55 EXPORT_SYMBOL_GPL(init_uts_ns); 56