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 },