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]

Reply via email to