Hi,

I use an initramfs for LVM for booting LFS (7.4).
Up to LVM2 2.02.98, /dev/<volume group>/<logical volume> were
created by udev when typing `vgchange -ay'. So I could
use a kernel line like this:
linux /boot/vmlinuz... root=/dev/vg/lfs ro

But starting at  LVM2 2.02.100, only
/dev/mapper/≤volume group>-<logical volume> links are created.

(udev version is the same, I juste updated LVM2).

[short story]
udev rules installed by LVM2 call /sbin/dmsetup
/sbin/dmsetup is not in the initramfs!

[longer story]
This explains why we need vgchange --noudevsync: the udev rules
do not find dmsetup and hang forever (or maybe only during the default timeout
of 2 mn, I have not waited). dmsetup is used in 11-dm-lvm.rules to split the
name of the LVM device, before creating the symlinks. So it could not succeed.
Actually I cannot explain how the other links are created, since 10-dm.rules
also calls dmsetup for getting various needed flags... I guess that is done
inside the kernel.

So far so good, but how is it that I could boot from
root=/dev/≤volumegroup>/<logicalvolume> with LVM2 2.02.98? I have no answer...

Also, while trying to investigate, I found that /etc/lvm/lvm.conf was not
copied to the initramfs! Maybe some default behavior is not the same in both
versions.

Anyway, when copying dmsetup and /etc/lvm/lvm.conf to the initramfs,
everything works fine, and the --noudevsync option is not needed.

regards
Pierre
-- 
http://linuxfromscratch.org/mailman/listinfo/blfs-dev
FAQ: http://www.linuxfromscratch.org/blfs/faq.html
Unsubscribe: See the above information page

Reply via email to