How to have a whole HD LVM (except /boot)

Discussion in 'Installation/Configuration' started by anw, Feb 22, 2009.

  1. anw

    anw New Member

    I have two disks in my computer, one of them my main (IDE) drive & a new one (S-ATA). Basically, I want to make the entire sata drive the new primary hard drive, but have it completely under control of the volume manager (except for boot, which I understand has to be on a physical partition). The original (IDE) disk had root and swap as separate, physical partitions. Here's what I've tried:

    1. Partition the disk with a 32 meg sda1 and the whole rest of the disk (1 TB total) as sda2.
    2. Copy everything from the IDE /boot directory to the sata sda1 (mounted as /target).
    3. Set up lvm on the rest of the disk, with logical volumes for root, swap, home, usr, and var.
    4. Copy everything from the IDE to the appropriate sata lv's. This is done and everything mounts fine.
    5. Mount the sata drive's root lv on /target, the sata boot sda1 on /target/boot, and the other lv's appropriately.
    6. Do a chroot to target.
    7. Run grub, with the following input:
    grub>find /boot/grub/stage1
    grub>root (hd0,0)
    grub>setup (hd0)
    This seems to have run with no problem.

    What happens is that when I boot, it just hangs, with no output, evidently not even getting to grub. I *think* I may know what's wrong, but am open to any other suggestions.

    What I *think* is that none of the above really wrote the MBR (I thought grub would do it, but evidently not). When I check the limits of the partitions, it appears that sda1 starts on cylinder #1, but the 63rd sector, so as far as I know (unless grub was supposed to do it), the MBR hasn't been written.

    Can someone either a) confirm that this is correct, and/or b) tell me how to get the MBR correctly written (preferably the "and" condition;-).

  2. anw

    anw New Member

    Ha! For anyone out there listening, I solved one problem, and got a GRUB boot menu from my sata disk. I used the interactive grub listed in my first post, using hd1 instead of hd0 (I have this in the file, and didn't know what I was doing earlier).

    Now, I get the grub menu, but when it goes to boot, I get a "Error 15: file not found", regardless of which menu item I choose. Here they are, from the /boot/grub/menu.lst file:
    The first one is the one I want to boot. I am going to try changing the "root (hd0,0)" to "root (hd1,0)" and see if that works, but the second line should be my old hard drive, and I get the same message there, which I don't understand.

    Also, maybe I should use either (or both) of the:
    lines in the menu.lst, but they also have the mysterious comment about "## DO NOT UNCOMMENT THEM, Just edit them to your needs", which I don't understand. Are they comments or not?
  3. falko

    falko Super Moderator

    Can you try
    grub-install (hd0)
    in the chroot?
  4. anw

    anw New Member

    Hey, falko! Thanks for the reply. Yes, I've done those things. I had to go into the and menu.lst to set the hd0 and hd1 to sda and hda, respectively, because I found out the one I boot from is set as hd0, regardless of whether it's the ide or sata drive. I'm now am at the point where I get the boot menu from grub but it looks like when it tries to load the kernel it can't find the right disk driver.

    On the other hand, how could it get to the grub menu and start booting linux if that were the case?

    What happens is I get a bunch of messages scrolling by, it actually goes into the framebuffer "smaller character" mode, then I get this message:
    but it can't seem to see the sata drive.
  5. anw

    anw New Member

    On second thought, it looks more like it couldn't fird whatever lvm driver it needed. Here's a more complete list of the boot messages, appearing right after something about the keyboard:
    So, I'm thinking right there where it says "No filesystem could mount root, tried: ext3 cramfs", if it had tried the lvm driver it would have succeeded. Any idea how to make it do that?
  6. falko

    falko Super Moderator

    Can you update your ramdisk...
    update-initramfs -u
    and then use
    initrd /boot/initrd.img-2.6.26
    for both kernel stanzas in /boot/grub/menu.lst?
  7. anw

    anw New Member

    Thanks. I'll try that within the next day. By both stanzas, you mean both of the menu.lst kernel boot items that reference lvm2?
    was the version created by createlvm2_initrd script.

    After fixing all my file issues, my menu.lst now looks like this:
    title           Debian GNU/Linux, kernel 2.6.26 Using LVM with SATA Disk
    root            (hd0,0)
    kernel          /vmlinuz-2.6.26 root=/dev/ram0 lvm2root=/dev/mapper/sda_vol-root
    initrd          /initrd-lvm2-2.6.26.gz
    title           Debian GNU/Linux, kernel 2.6.26 Using LVM with SATA Disk (recovery)
    root            (hd0,0)
    kernel          /vmlinuz-2.6.26 root=/dev/ram0 lvm2root=/dev/mapper/sda_vol-root ro single
    initrd          /initrd-lvm2-2.6.26.gz
  8. falko

    falko Super Moderator

    Yes. Try initrd /boot/initrd.img-2.6.26
  9. anw

    anw New Member

    I still haven't gotten this to work. I'm at the place above, where the system boots to saying something about my keyboard, then lists "all partitions", NOT to include the lvm filesystems.

    I've fooled with this for the past week, and found a bug in lvm2create_initrd in the way it parsed out the required libraries, fixed it, then found out it was known, so got a later version where it was fixed "officially". That version ran out of space on the ram disk creating links to busybox, so I upped the added space from 512 to 1024, and it ran; however, it still bombs as above when I boot.

    The lvm2rescue doesn't work, either, bombing in exactly the same way.

    Does anyone know how to tell the boot ramdisk file system that it's got lvm volumes?

    Also, supposedly, you can put an "linuxrc" file out on the initrd system. How do you do this? I thought I'd like to execute a shell during the boot process to see what is installed in the initrd (actually, I thought that's what lvm2rescue was supposed to do), but would like to try that from linuxrc.

Share This Page