Bug#548648: grub-pc jumps straight to rescue and prints error: no such disk / file not found

Josip Rodin joy at debbugs.entuzijast.net
Wed Feb 3 19:50:36 UTC 2010


On Sat, Jan 02, 2010 at 03:00:39PM +0100, Josip Rodin wrote:
> On Sat, Jan 02, 2010 at 02:29:36PM +0100, Josip Rodin wrote:
> > I've got two disks and a software RAID setup on the partition that holds
> > the /boot directory. I have several Linux software RAID partitions, based
> > on this scheme:
> > 
> > sda2+sdb2	-> Linux amd64 /
> > sda3+sdb3	-> Linux i386 /
> > sda5+sdb5	-> Linux swap
> > sda6+sdb6	-> Linux /home
> > 
> > The first two become md0, differentiated by old GRUB menu entries -
> > Linux parameters raid=noautodetect and md0=first,second ... settings.
> > The second two become md1 and md2, respectively, and the fourth array
> > is simply left unassembled on the non-applicable architecture.
> 
> my autogenerated menu entry for the amd64 root partition seemed to have
> the wrong UUID in the 'search' command. That sounds like a userland issue,
> because:
> 
> % sudo grub-probe -d /dev/sda1 -t fs_uuid
> 1460509560508002
> % sudo grub-probe -d /dev/sda2 -t fs_uuid
> 18515dea-973e-473b-bddf-74d1cb58e15a
> % sudo grub-probe -d /dev/sda3 -t fs_uuid
> 7e6cdce7-8136-41f0-8a66-997b89ea00fe
> 
> And yet after running the update-grub command on the amd64 machine
> I still get:
> 
> % grep search /boot/grub/grub.cfg | sort -u
>         search --no-floppy --fs-uuid --set 1460509560508002
>         search --no-floppy --fs-uuid --set 7e6cdce7-8136-41f0-8a66-997b89ea00fe
> 
> It's supposed to detect the amd64 partition (sda2) at least once :)
> but it seems to be fixating on the i386 one (sda3).

This behaviour seems to be a problem with grub-probe and its usage by the
default config scripts, because the simple most straightforward test fails
for one of the RAID devices:

% sudo tune2fs -l /dev/md0 | grep UUID
Filesystem UUID:          18515dea-973e-473b-bddf-74d1cb58e15a
% sudo grub-probe --device /dev/md0 --target=fs_uuid
7e6cdce7-8136-41f0-8a66-997b89ea00fe

% sudo tune2fs -l /dev/md2 | grep UUID
Filesystem UUID:          222e0fc1-800d-4be4-89fa-96a876aca441
% sudo grub-probe --device /dev/md2 --target=fs_uuid
222e0fc1-800d-4be4-89fa-96a876aca441

What it thinks to be /dev/md0 isn't actually what the rest of the system
knows to be /dev/md0 (nor is it actually what grub sees as md0 on boot time,
as it happens).

The --device option is used by /usr/lib/grub/grub-mkconfig_lib's
prepare_grub_to_access_device() function, invoked in turn by
/etc/grub.d/10_linux's linux_entry() function.
When I omit that parameter, I get:

% sudo grub-probe /dev/md0 --target=fs_uuid
grub-probe: error: cannot find a device for /dev/md0.

I'm not really sure what to make of util/grub-probe.c's usage of
util/getroot.c' grub_guess_root_device() at least under Linux...
is it supposed to resolve canonical names out of input device names?

-- 
     2. That which causes joy or happiness.





More information about the Pkg-grub-devel mailing list