diff -urN linux/include/linux/uts.h linux-2.2.5-hostname/include/linux/uts.h
--- linux/include/linux/uts.h	Mon Jan  5 09:41:01 1998
+++ linux-2.2.5-hostname/include/linux/uts.h	Tue Apr  6 15:17:26 1999
@@ -13,7 +13,7 @@
 #endif
 
 #ifndef UTS_NODENAME
-#define UTS_NODENAME "(none)"	/* set by sethostname() */
+#define UTS_NODENAME "(none)"	/* set by sethostname() or hostname= boot param. */
 #endif
 
 #ifndef UTS_DOMAINNAME
diff -urN linux/init/main.c linux-2.2.5-hostname/init/main.c
--- linux/init/main.c	Thu Feb 25 00:27:54 1999
+++ linux-2.2.5-hostname/init/main.c	Tue Apr  6 15:16:15 1999
@@ -389,6 +389,17 @@
 		prof_shift = 2;
 }
 
+static void __init hostname_setup(char *str, int *ints)
+{
+	int len;
+
+	len = strlen(str);
+	if (len && len <= __NEW_UTS_LEN) {
+		strcpy(system_utsname.nodename, str);
+		system_utsname.nodename[len] = 0;
+	}
+	printk(KERN_INFO "hostname: %s\n", system_utsname.nodename);
+}
 
 static struct dev_name_struct {
 	const char *name;
@@ -540,6 +551,7 @@
 	{ "reserve=", pnp_reserve_setup },
 #endif
 	{ "profile=", profile_setup },
+	{ "hostname=", hostname_setup },
 #ifdef __SMP__
 	{ "nosmp", smp_setup },
 	{ "maxcpus=", smp_setup },
