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.med...@gmail.com> wrote: > > > > Grub2 is failing to boot a softRAID1 + LVM2 squeeze box. > > > > r...@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? -- Huella de clave primaria: 0FDA C36F F110 54F4 D42B D0EB 617D 396C 448B 31EB
pgpcPfDpaijPe.pgp
Description: PGP signature