diff -Naur grub-0.97.orig/stage2/boot.c grub-0.97/stage2/boot.c
--- grub-0.97.orig/stage2/boot.c	2004-03-30 06:44:08.000000000 -0500
+++ grub-0.97/stage2/boot.c	2006-07-08 07:37:35.000000000 -0400
@@ -280,8 +280,9 @@
 	errnum = ERR_WONT_FIT;
       else
 	{
-	  grub_printf ("   [Linux-%s, setup=0x%x, size=0x%x]\n",
-		       (big_linux ? "bzImage" : "zImage"), data_len, text_len);
+         if (!quiet_boot)
+	   grub_printf ("   [Linux-%s, setup=0x%x, size=0x%x]\n",
+		        (big_linux ? "bzImage" : "zImage"), data_len, text_len);
 
 	  /* Video mode selection support. What a mess!  */
 	  /* NOTE: Even the word "mess" is not still enough to
@@ -487,7 +488,8 @@
   mbi.syms.a.addr = 0;
   mbi.syms.a.pad = 0;
 
-  printf ("   [%s-%s", str2, str);
+  if (!quiet_boot)
+    printf ("   [%s-%s", str2, str);
 
   str = "";
 
@@ -495,8 +497,9 @@
     {
       if (flags & MULTIBOOT_AOUT_KLUDGE)
 	str = "-and-data";
-
-      printf (", loadaddr=0x%x, text%s=0x%x", cur_addr, str, text_len);
+     
+      if (!quiet_boot)
+        printf (", loadaddr=0x%x, text%s=0x%x", cur_addr, str, text_len);
 
       /* read text, then read data */
       if (grub_read ((char *) RAW_ADDR (cur_addr), text_len) == text_len)
@@ -733,6 +736,7 @@
 
   if (! errnum)
     {
+    if (!quiet_boot)
       grub_printf (", entry=0x%x]\n", (unsigned) entry_addr);
       
       /* If the entry address is physically different from that of the ELF
@@ -836,7 +840,8 @@
   moveto -= 0x10000;
   memmove ((void *) RAW_ADDR (moveto), (void *) cur_addr, len);
 
-  printf ("   [Linux-initrd @ 0x%x, 0x%x bytes]\n", moveto, len);
+  if (!quiet_boot)
+    printf ("   [Linux-initrd @ 0x%x, 0x%x bytes]\n", moveto, len);
 
   /* FIXME: Should check if the kernel supports INITRD.  */
   lh->ramdisk_image = RAW_ADDR (moveto);
diff -Naur grub-0.97.orig/stage2/builtins.c grub-0.97/stage2/builtins.c
--- grub-0.97.orig/stage2/builtins.c	2005-02-15 16:58:23.000000000 -0500
+++ grub-0.97/stage2/builtins.c	2006-07-08 13:53:51.000000000 -0400
@@ -75,6 +75,8 @@
 int grub_timeout = -1;
 /* Whether to show the menu or not.  */
 int show_menu = 1;
+/* Whether to quiet boot messages or not. */
+int quiet_boot = 1;
 /* The BIOS drive map.  */
 static unsigned short bios_drive_map[DRIVE_MAP_SIZE + 1];
 
@@ -248,6 +250,7 @@
   cleanup_net ();
 #endif
   
+  grub_printf("Starting up ...\n");
   switch (kernel_type)
     {
     case KERNEL_TYPE_FREEBSD:
@@ -342,7 +345,8 @@
     }
 
   /* Notify the configuration.  */
-  print_network_configuration ();
+  if (!quiet_boot)
+    print_network_configuration ();
 
   /* XXX: this can cause an endless loop, but there is no easy way to
      detect such a loop unfortunately.  */
@@ -1599,6 +1603,23 @@
   "Hide the menu."
 #endif
 };
+
+/* quietboot */
+static int
+quietboot_func (char *arg, int flags)
+{
+  quiet_boot = 1;
+  return 0;
+}
+
+static struct builtin builtin_quietboot =
+{
+  "quiet",
+  quietboot_func,
+  BUILTIN_CMDLINE | BUILTIN_HELP_LIST,
+  "quietboot",
+  "Quiet boot messages."
+};
 
 
 /* hide */
@@ -1663,8 +1686,8 @@
       errnum = ERR_BAD_ARGUMENT;
       return 1;
     }
-  
-  print_network_configuration ();
+  if (!quiet_boot)
+    print_network_configuration ();
   return 0;
 }
 
@@ -3019,7 +3042,8 @@
     }
 
   /* Notify the configuration.  */
-  print_network_configuration ();
+  if (!quiet_boot)
+    print_network_configuration ();
   return 0;
 }
 
@@ -3109,7 +3133,8 @@
   /* Print the filesystem information.  */
   current_partition = saved_partition;
   current_drive = saved_drive;
-  print_fsys_type ();
+  if (!quiet_boot)
+    print_fsys_type ();
 }
 
 static int
@@ -3120,10 +3145,13 @@
   char *next;
 
   /* If ARG is empty, just print the current root device.  */
-  if (! *arg)
+  if (!quiet_boot)
     {
-      print_root_device ();
-      return 0;
+  	if (! *arg)
+    	  {
+     	    print_root_device ();
+      	    return 0;
+    	  }
     }
   
   /* Call set_device to get the drive and the partition in ARG.  */
@@ -3165,7 +3193,8 @@
 	return 1;
       
       /* Print the type of the filesystem.  */
-      print_fsys_type ();
+      if (!quiet_boot)
+        print_fsys_type ();
     }
   
   return 0;
@@ -4578,8 +4607,8 @@
       errnum = ERR_BAD_ARGUMENT;
       return 1;
     }
-
-  print_network_configuration ();
+  if (!quiet_boot)
+    print_network_configuration ();
   return 0;
 }
 
@@ -4851,6 +4880,7 @@
 #ifdef GRUB_UTIL
   &builtin_quit,
 #endif /* GRUB_UTIL */
+  &builtin_quietboot,
 #ifdef SUPPORT_NETBOOT
   &builtin_rarp,
 #endif /* SUPPORT_NETBOOT */
diff -Naur grub-0.97.orig/stage2/char_io.c grub-0.97/stage2/char_io.c
--- grub-0.97.orig/stage2/char_io.c	2005-02-01 15:51:23.000000000 -0500
+++ grub-0.97/stage2/char_io.c	2006-07-08 14:07:53.000000000 -0400
@@ -237,9 +237,6 @@
 init_page (void)
 {
   cls ();
-
-  grub_printf ("\n    GNU GRUB  version %s  (%dK lower / %dK upper memory)\n\n",
-	  version_string, mbi.mem_lower, mbi.mem_upper);
 }
 
 /* The number of the history entries.  */
diff -Naur grub-0.97.orig/stage2/cmdline.c grub-0.97/stage2/cmdline.c
--- grub-0.97.orig/stage2/cmdline.c	2004-08-16 19:23:01.000000000 -0400
+++ grub-0.97/stage2/cmdline.c	2006-07-08 07:37:35.000000000 -0400
@@ -229,16 +229,22 @@
 	}
 
       /* Find a builtin.  */
+      
       builtin = find_command (heap);
       if (! builtin)
 	{
+	 if(!quiet_boot)
+	 {
 	  grub_printf ("%s\n", old_entry);
 	  continue;
+	 }
 	}
 
       if (! (builtin->flags & BUILTIN_NO_ECHO))
-	grub_printf ("%s\n", old_entry);
-
+	{
+	      if (!quiet_boot)
+		  grub_printf ("%s\n", old_entry);
+	}
       /* If BUILTIN cannot be run in the command-line, skip it.  */
       if (! (builtin->flags & BUILTIN_CMDLINE))
 	{
diff -Naur grub-0.97.orig/stage2/shared.h grub-0.97/stage2/shared.h
--- grub-0.97.orig/stage2/shared.h	2004-06-19 12:40:09.000000000 -0400
+++ grub-0.97/stage2/shared.h	2006-07-08 07:37:35.000000000 -0400
@@ -854,6 +854,7 @@
 
 extern kernel_t kernel_type;
 extern int show_menu;
+extern int quiet_boot;
 extern int grub_timeout;
 
 void init_builtins (void);
diff -Naur grub-0.97.orig/stage2/stage2.c grub-0.97/stage2/stage2.c
--- grub-0.97.orig/stage2/stage2.c	2005-03-19 12:51:57.000000000 -0500
+++ grub-0.97/stage2/stage2.c	2006-07-08 07:37:35.000000000 -0400
@@ -717,12 +717,15 @@
   
   while (1)
     {
+     if (!quiet_boot)
+     {
       if (config_entries)
 	printf ("  Booting \'%s\'\n\n",
 		get_entry (menu_entries, first_entry + entryno, 0));
       else
 	printf ("  Booting command-list\n\n");
-
+      }
+      
       if (! cur_entry)
 	cur_entry = get_entry (config_entries, first_entry + entryno, 1);
 
