diff -Naurp grub-cvs20050317/stage2/builtins.c grub-test/stage2/builtins.c
--- grub-cvs20050317/stage2/builtins.c	2005-02-15 23:05:07.000000000 +0100
+++ grub-test/stage2/builtins.c	2005-03-17 22:49:39.827209784 +0100
@@ -3079,7 +3079,7 @@ static struct builtin builtin_reboot =
 
 
 /* Print the root device information.  */
-static void
+void
 print_root_device (void)
 {
   if (saved_drive == NETWORK_DRIVE)
@@ -3112,6 +3112,38 @@ print_root_device (void)
   print_fsys_type ();
 }
 
+/* Print the current device information.  */
+void
+print_current_device (void)
+{
+  if (current_drive == NETWORK_DRIVE)
+    {
+      /* Network drive.  */
+      grub_printf (" (nd):");
+    }
+  else if (current_drive & 0x80)
+    {
+      /* Hard disk drive.  */
+      grub_printf (" (hd%d", current_drive - 0x80);
+      
+      if ((current_partition & 0xFF0000) != 0xFF0000)
+	grub_printf (",%d", current_partition >> 16);
+
+      if ((current_partition & 0x00FF00) != 0x00FF00)
+	grub_printf (",%c", ((current_partition >> 8) & 0xFF) + 'a');
+
+      grub_printf ("):");
+    }
+  else
+    {
+      /* Floppy disk drive.  */
+      grub_printf (" (fd%d):", current_drive);
+    }
+
+  /* Print the filesystem information.  */
+  print_fsys_type ();
+}
+
 static int
 real_root_func (char *arg, int attempt_mount)
 {
@@ -3289,8 +3321,16 @@ savedefault_func (char *arg, int flags)
     entryno = current_entryno;
 
   /* Open the default file.  */
-  saved_drive = boot_drive;
-  saved_partition = install_partition;
+  current_drive = saved_drive = savedefault_drive;
+  current_partition = saved_partition = savedefault_partition;
+
+  /* Debug */
+  grub_printf ("\nDefault file name: '%s'\n", default_file);
+  grub_printf (" will be open from ");
+  print_current_device();
+  grub_printf ("\n-- press a key ...\n");
+  getkey ();
+
   if (grub_open (default_file))
     {
       int len;
diff -Naurp grub-cvs20050317/stage2/disk_io.c grub-test/stage2/disk_io.c
--- grub-cvs20050317/stage2/disk_io.c	2004-05-23 18:45:45.000000000 +0200
+++ grub-test/stage2/disk_io.c	2005-03-17 22:49:39.829209480 +0100
@@ -91,6 +91,9 @@ struct fsys_entry fsys_table[NUM_FSYS + 
    are meant to be working values. */
 unsigned long current_drive = GRUB_INVALID_DRIVE;
 unsigned long current_partition;
+/* values for the /boot/grub/default file */
+unsigned long savedefault_drive = GRUB_INVALID_DRIVE;
+unsigned long savedefault_partition;
 
 #ifndef STAGE1_5
 /* The register ESI should contain the address of the partition to be
diff -Naurp grub-cvs20050317/stage2/shared.h grub-test/stage2/shared.h
--- grub-cvs20050317/stage2/shared.h	2004-06-20 15:48:47.000000000 +0200
+++ grub-test/stage2/shared.h	2005-03-17 22:49:39.825210088 +0100
@@ -632,6 +632,9 @@ extern int debug;
 extern unsigned long current_drive;
 extern unsigned long current_partition;
 
+extern unsigned long savedefault_drive;
+extern unsigned long savedefault_partition;
+
 extern int fsys_type;
 
 /* The information for a disk geometry. The CHS information is only for
@@ -863,6 +866,8 @@ struct builtin *find_command (char *comm
 void print_cmdline_message (int forever);
 void enter_cmdline (char *heap, int forever);
 int run_script (char *script, char *heap);
+void print_root_device (void);
+void print_current_device (void);
 #endif
 
 /* C library replacement functions with identical semantics. */
diff -Naurp grub-cvs20050317/stage2/stage2.c grub-test/stage2/stage2.c
--- grub-cvs20050317/stage2/stage2.c	2004-07-24 20:58:02.000000000 +0200
+++ grub-test/stage2/stage2.c	2005-03-17 22:49:39.823210392 +0100
@@ -886,6 +886,18 @@ cmain (void)
 	      char buf[10]; /* This is good enough.  */
 	      char *p = buf;
 	      int len;
+
+	      /* store savedefault partition location */
+	      savedefault_drive = current_drive;
+	      savedefault_partition = current_partition;
+
+	      /* Debug */
+	      grub_printf ("\nConfig file name: '%s'\n", config_file);
+	      grub_printf ("Default file name: '%s'\n", default_file);
+	      grub_printf (" will be open from ");
+	      print_current_device();
+	      grub_printf ("\n-- press a key ...\n");
+	      getkey ();
 	      
 	      len = grub_read (buf, sizeof (buf));
 	      if (len > 0)
