PDA

View Full Version : How to have a whole HD LVM (except /boot)


anw
22nd February 2009, 08:02
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
(hd0,0)
grub>root (hd0,0)
grub>setup (hd0)
grub>quit
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;-).

TIA
anw

anw
22nd February 2009, 20:10
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 device.map 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:

title Debian GNU/Linux, kernel 2.6.26 Using LVM with SATA Disk
root (hd0,0)
kernel /boot/vmlinuz-2.6.26 root=/dev/ram0 lvm2root=/dev/mapper/sda_vol-root
initrd /boot/initrd-lvm2-2.6.26.gz
savedefault

title Debian GNU/Linux, kernel 2.6.26
root (hd0,0)
kernel /boot/vmlinuz-2.6.26 root=/dev/hda1 ro
initrd /boot/initrd.img-2.6.26
savedefault

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:

# kopt=root=/dev/sda1 ro
# groot=(hd1,0)

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?

falko
23rd February 2009, 19:25
Can you try
grub-install (hd0)
update-grub
in the chroot?

anw
24th February 2009, 05:39
Hey, falko! Thanks for the reply. Yes, I've done those things. I had to go into the device.map 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:

List of all partitions:
0300 488386584 ide driver: ide-disk
0301 29294496 hda1

but it can't seem to see the sata drive.

anw
24th February 2009, 06:10
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:

Ramdisk: compressed image found at block 0
List of all partitions:
0300 488386584 hda driver: ide-disk
0301 29294496 hda1
0302 1951897 hda2
0303 457137607 hda3
1600 4590208 hdc driver: ide-cdrom
No filesystem could mount root, tried: ext3 cramfs
Kernel panic- not syncing: VFS: Unaboel to mount root fs on unknown block-block(1,0)

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?

falko
24th February 2009, 21:00
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?

anw
24th February 2009, 23:28
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?

initrd /boot/initrd-lvm2-2.6.26.gz

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
savedefault

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
savedefault


Thanks!

falko
25th February 2009, 19:17
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?

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

anw
28th February 2009, 18:19
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.