Red Hat Bugzilla – Bug 154767
Install failed /bin/lvm exited abnormally
Last modified: 2007-11-30 17:11:04 EST
From Bugzilla Helper:
User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.7.6) Gecko/20050323 Firefox/1.0.2 Fedora/1.0.2-1.3.1
Description of problem:
Updated FC3 which had a pair of IDEs on lvm2 raid using striping. Now won't boot.
linux ro root=/dev/mapper/spare_vg-lvol0
Making device-mapper control node
Scanning logical volumes
Reading all physical volumes...
Found volume group "spare_vg" using metadata type lvm2
Found volume group "system" using metadata type lvm2
Activating logical volumes
Unable to find volume group "mapper"
Error: /bin/lvm exited abnormally
Version-Release number of selected component (if applicable):
Steps to Reproduce:
Can you provide /root/upgrade.log and /var/log/anaconda*?
Created attachment 113202 [details]
Did "root=/dev/mapper/spare_vg-lvol0" work before the upgrade? It looks as if
you should be using "root=/dev/spare_vg/lvol0".
Dunno, but I can boot using FC4Test2 rescue, and it shows
that /dev/mapper/spare_vg-lvol0 is mounted fine.
From rescue mode, can you get the output of /sbin/mkinitrd -v -f /tmp/foo.img
kernelver? It looks like it's getting confused about what volumes it should be
activating. Also, what does /etc/fstab look like?
Created attachment 113747 [details]
Created attachment 113748 [details]
This looks like it has to do with how mkinitrd resolves the volume name. We
always specify the LV as /dev/vg/lv instead of the /dev/mapper/vg-lv name so
that we can determine vg and lv easily.
I have this exact same problem, the problem is indeed how the volume name is
resolved by mkinitrd, the line which does this in mkinitrd is:
root_vg=$(echo $rootdev | cut -d/ -f3)
Which will give "mapper" when rootdev is /dev/mapper/xxx. Note that a rootdev of
/dev/mapper/xx used to be supported as seen a couple of lines below:
if echo $rootdev |grep -q /dev/mapper 2>/dev/null ; then root_lvm=1 ; fi
So I changed this line to:
if echo $rootdev |grep -q /dev/mapper 2>/dev/null ; then
root_vg=$(echo $rootdev | cut -d/ -f4)
This however still doesn't work since since my root is on
/dev/mapper/Volume00-Root and this resolves root_vg to Volume00-Root .
Where it should be Volume00. We could do a cut -d - -f 1 on this, but do the
devices in /dev/mapper always have the form of Volume-ID?
I did create my grub.conf manually as I moved FC 2 from an old disk with plain
ext3 to a new disk with lvm2 -> ext3. So hopefully this won't bite to many
people but there are now at least 2 people who were bitten by this and have gone
trough to trouble to bugzilla this.
Peter fixed this; should be in 4.2.13 or later
I can verify that this has been fixed (for me) in mkinitrd-4.2.15 . I think this
can be closed now.
Is this fixed for RHEL4 and if so, which version ?
> Is this fixed for RHEL4 and if so, which version ?
Doesn't seem to have been. Try this patch:
--- mkinitrd-188.8.131.52/mkinitrd 2005-08-29 16:32:12.000000000 -0400
+++ mezzanine_patched_mkinitrd-184.108.40.206/mkinitrd 2006-01-18 15:11:42.000000000 -0500
@@ -487,7 +487,11 @@
# check if the root fs is on a logical volume
elif ! echo $rootdev | cut -c1-6 |grep -q "LABEL=" ; then
- root_vg=$(echo $rootdev | cut -d/ -f3)
+ if echo $rootdev | grep -q /dev/mapper 2>/dev/null; then
+ root_vg=$(echo $rootdev | cut -d/ -f4 | cut -d- -f1)
+ root_vg=$(echo $rootdev | cut -d/ -f3)
rootdev=$(echo "readlink $rootdev" | /sbin/nash --quiet)
major=`ls -l $rootdev | sed -e "s/.* \\([0-9]\+\\), *[0-9]\+.*/\\1/"`
[ "$major" != "58" ] || root_lvm=1