Am Sonntag, den 06.12.2009, 23:30 -0800 schrieb David Miller:
> I was trying to figure out why the kernel image paths generated
> automatically for me by grub-mkconfig were not correct.
> 
> I have /boot on a seperate partition, but in the generated config
> files it uses paths like /boot/vmlinux-2632 etc.
> 
> The problem is grub-mkrelpath and it's usage in the scrips such as
> "10_linux".
> 
> "/boot" is given to "grub-mkrelpath", and this results in
> the identical "/boot" in rel_dirname.
> 
> So all the paths emitted by 10_linux end up being "/boot" based
> instead of "/" based.
> 
> grub-mkrelpath seems to do the right thing if I pass it a full path,
> f.e. giving it "/boot/vmlinux" emits the correct "/vmlinux"

The one mount point case is now fixed in r1917
See Subject: `handling mount points in grub-mkrelpath' from me for the
patch.

> Casually inspecting make_system_path_relative_to_its_root() shows what
> appears to be another bug.  It seems to immediately break from the
> loop when a different device number than "/"'s is seen, but what if I
> have:
> 
> /one/two/three
> 
> Where / is /dev/hda1, /one/two is /dev/hda2 and /one/two/three is yet
> another mount from /dev/hda3.  It seems like the premature loop exit
> in this function will give us the wrong result here.
> 
> The loop needs to remember the string prefix point at which every
> device number change occurs, and once the whole path has been
> traversed it should unwind back to that point in order to emit
> the result.

Multiple mount points are an interesting case. Haven't thought about
them.
But they should be now handled correctly too.

-- 
Felix Zielcke
Proud Debian Maintainer and GNU GRUB developer



_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/grub-devel

Reply via email to