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
> [email protected]
> 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
[email protected]
http://lists.gnu.org/mailman/listinfo/grub-devel