So on Fedora and other Redhat systems /dev/root is an actual device
node (in this case my root partition is sda1):

[EMAIL PROTECTED] grub2]# ls -l /dev/root
brw------- 1 root root 8, 1 Feb 17 13:11 /dev/root
[EMAIL PROTECTED] grub2]# ls -l /dev/sda1
brw-r----- 1 root disk 8, 1 Feb 17 13:12 /dev/sda1

The problem here is once grub sees this it has no idea what /dev/root
is so it cannot properly resolve it to /dev/sda1. So the best thing to
do is if you see /dev/root to just move on until you find the device
node with the real name.

Attached is the patch..along with a change log.

Signed-off-by: Jerone Young <[EMAIL PROTECTED]>


On 2/14/07, Jerone Young <[EMAIL PROTECTED]> wrote:
Interesting. I will try this again. I was working with I believe
fedora core 6. I noticed this was happening. It is not a symlink on
fedora core 6. This may have something to do with udev.

On 2/14/07, Yoshinori K. Okuji <[EMAIL PROTECTED]> wrote:
> On Monday 12 February 2007 08:42, Jerone Young wrote:
> > This patch fixes the situation with i386-pc where grub-probe &
> > grube-setup are searching for the root fs for grub files  and they
> > happen to be on the same file system as the root ("/") filesystem. If
> > this is the case if when probing /dev , if the partition is a sd* it
> > will not find it because it will find /dev/root first (this is a
> > mistake).
>
> I don't understand. In my system, /dev/root is a symlink, and find_root_device
> skips symlinks. Why does any problem happen?
>
> Thanks,
> Okuji
>
>
> _______________________________________________
> Grub-devel mailing list
> Grub-devel@gnu.org
> http://lists.gnu.org/mailman/listinfo/grub-devel
>

diff -r cca565f3c398 util/i386/pc/getroot.c
--- a/util/i386/pc/getroot.c	Sun Feb 11 09:48:36 2007 -0600
+++ b/util/i386/pc/getroot.c	Sun Feb 11 19:02:00 2007 -0600
@@ -192,6 +192,13 @@ find_root_device (const char *dir, dev_t
 	  strip_extra_slashes (res);
 	  free (cwd);
 
+	  /* /dev/root is not a real block device keep looking, takes care
+	     of situation where root filesystem is on the same partition as
+	     grub files */
+
+	  if (strcmp(res, "/dev/root") == 0)
+		continue;
+
 	  if (chdir (saved_cwd) < 0)
 	    grub_util_error ("Cannot restore the original directory");
 
diff -r e6e15bb2da5c ChangeLog
--- a/ChangeLog	Sat Feb 17 16:31:30 2007 -0600
+++ b/ChangeLog	Sat Feb 17 20:22:53 2007 -0600
@@ -1,3 +1,7 @@ 2007-02-12  Hollis Blanchard  <[EMAIL PROTECTED]
+2007-02-17  Jerone Young <[EMAIL PROTECTED]>
+	* util/i386/pc/getroot.c: Update so that if root device is /dev/root
+	  continue on and look for device node with real device name.
+
 2007-02-12  Hollis Blanchard  <[EMAIL PROTECTED]>
 
 	* include/grub/ieee1275/ieee1275.h: Update copyright.
_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/grub-devel

Reply via email to