On Fri, May 11, 2007 at 12:15:57PM -0300, Otavio Salvador wrote:
> Robert Millan <[EMAIL PROTECTED]> writes:
>
> > On Fri, May 11, 2007 at 11:06:12AM -0300, Otavio Salvador wrote:
> >> Robert Millan <[EMAIL PROTECTED]> writes:
> >>
> >> >> > After upgrading to the newer version of Grub2, postinst runs
> >> >> > update-grub which
> >> >> > uses hooks in /etc/grub.d/. If /boot is mounted on separate partition
> >> >> > the
> >> >> > grub.cfg still retains /boot/vmlinuz-* as the location for the kernel
> >> >> > and
> >> >> > similarly for initrd. This renders the system unbootable.
> >> >>
> >> >> This bug has already been fixed on development version.
> >> >
> >> > Are you sure? I don't see any updates in SVN or CVS that indicate this
> >> > is
> >> > fixed.
> >>
> >> I said that since you said you have spoted it out. That's why.
> >
> > I spotted it, but since it's not trivial I left it for later. Sorry :-)
>
> Can you explain what you've found?
Sure. 10_linux adds linux / initrd images with absolute paths, just as they're
found. However, when /boot is a separate partition, the path relative to grub's
root will not contain "/boot". So instead of:
linux /boot/vmlinuz-2.6.18-4-amd64 ...
we should have:
linux /vmlinuz-2.6.18-4-amd64 ...
To do this portably, I think the best is a C program that, for a given path,
climbs to its parent directory iteratively untill a directory that belongs to
another filesystem is found. If we reach / and this didn't happen, then we
can use absolute paths.
grub-probe (or the biosdisk functions it uses) already has code to check
which filesystem does a file belong to. Maybe the same interfaces can be
shared.
--
Robert Millan
My spam trap is [EMAIL PROTECTED] Note: this address is only intended
for spam harvesters. Writing to it will get you added to my black list.
--
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]