Re: [ squeeze ] Grub2 RAID1 LVM2 boot failure
What happens when you use LILO instead of Grub?
d.sastre.medina@gmail.com put forth on 5/30/2010 6:13 AM:
> On Sat, May 29, 2010 at 05:44:22PM -0400, Tom H wrote:
>> On Sat, May 29, 2010 at 7:06 AM, David Sastre Medina
>> <d.sastre.medina@gmail.com> wrote:
>>>
>>> Grub2 is failing to boot a softRAID1 + LVM2 squeeze box.
>>>
>>> root@sysresccd /root % mdadm --detail /dev/md0
>>> /dev/md0:
>>> ...
>>> UUID : 8052f7d4:54a97fbb:731031f6:bc3d041c
>>
>> I see two possible problems when looking at your grub.cfg.
>>
>> 1. There isn't an "insmod lvm" within the menuentry stanza. ext2,
>> raid, and mdraid are insmod'd twice in the header and once in the
>> menuentry and lvm is inmod'd just once in the header. (This is one of
>> the grub2 mysteries; why multiple insmods of the same modules?). I
>> doubt that this is the source of the problem (the first insmod must be
>> enough!) but you could add "insmod lvm" within the menuentry.
>
> Already tried that. No success.
>
>> 2. In the uuid of the search line, what is
>> 785366b0-d597-4e9c-9284-b6b9161236ed? One of your /dev/sX1's uuid?
>> Since raid and mdraid are loaded, can't you/shouldn't you use the md0
>> uuid above?
>
> I also tried that. It fails.
> That UUID belongs to /root_vg-root_lv, where the root filesystem
> resides.
> The UUID can be confirmed at the grub propmt issuing
> grub> ls (root_vg-root_ls)
>
> Note that `boot' is a multidisk partition (sda1 and sdb1, which assemble
> md0), thus root='(md0)' makes sense from a grub point of view. And md1
> is the result of assembling sda2 and sdb2. This md device has only one VG
> on top of it, root_vg, with several LVs in it, one of these LVs being my
> root_lv.
>
> This my default menuentry now:
>
> menuentry "Debian GNU/Linux, with Linux 2.6.32-3-686-bigmem" --class
> debian --class gnu-linux --class gnu --class os {
> insmod raid
> insmod mdraid
> insmod lvm
> insmod ext2
> set root='(md0)'
> search --no-floppy --fs-uuid --set 785366b0-d597-4e9c-9284-b6b9161236ed
> echo Loading Linux 2.6.32-3-686-bigmem ...
> linux /vmlinuz-2.6.32-3-686-bigmem root=/dev/mapper/root_vg-root_lv ro rootdelay=15 quiet
> echo Loading initial ramdisk ...
> initrd /initrd.img-2.6.32-3-686-bigmem
> }
>
> The `set root' entry says what is *root* for grub, I understand this as:
> where are /boot/grub/grub.cfg, /vmlinuz-`uname -r` and /initrd.img-`uname -r`
> So IMHO it should be called boot='(md0)' for better undestanding and
> disambiguation from the *other* root in the `linux' line.
> The GRUB root device is not the same as the Linux kernel root= parameter.
> BTW this command is undocummented in the wiki, still uses grub-legacy's
> info, which doesn't apply anymore, given the `root' command has been
> replaced.
>
> The `search' line, as stated in the grub wiki:
>
> Search devices by file, filesystem label or filesystem UUID. If --set
> is specified, the first device found is set to a variable. If HD
> variable name is specified, "root" is used.
>
> I take this to mean that the first device found _which UUID is_ 785...
> (the UUID of my root_gv-root_lv) will be the `root' filesystem.
>
> And yet another definition of `root' after the `linux' call.
> That one states that:
>
> root=/dev/mapper/root_vg-root_lv which could be written also as:
> root=LABEL=root or even
> root=UUID=785366b0-d597-4e9c-9284-b6b9161236ed
>
> The three of them should be right. None of them work.
>
> If a suppress the `quiet' option from the `linux' line, what I can see
> is LVM initializing *before* mdadm has get its job done:
>
> "Volume group "root_vg-root_lv not found
> Skipping volume group root_vg
> Unable to find LVM volume root_vg-swap_lv
> mdadm:/dev/md0 has been started with two drives
> mdadm:/dev/md1 has been started with two drives
> Gave up waiting fot root device."
>
> So it looks like a timming issue *but*, I have tried to issue manually
> the commands in the right order at the grub prompt:
> 1) insmod-ing raid, mdraid, lvm and ext2; setting root to md0;
> 2) searching for devices (also a variant without this step);
> 3) calling linux with the right root device
> (all three variants of this step: dev name, UUID and LABEL and with
> different rootdelay timmings, always without `quiet') and, finally;
> 4) calling initrd.
>
> Failure again. No way root_vg to be found.
>
> One further question: after a reboot, while at the grub screen, before
> doing anything else, if a enter the command line and type `ls' at the
> prompt, I can see all of my LVs, and listing anyone of them returns:
> device name, filesystem type, label, last modification time and UUID.
> Where does this info come from? Supossedly, there aren't mods loaded to
> read that yet, until after `insmod' loads them, are there?
>
>
Reply to: