initrd_gen_devices
add_linuxrc <<-EOF
- export LVM_ROOTDEV=$rootdev
- export LVM_VGVOLUME=$VGVOLUME
+ export ROOTDEV=$rootdev
+ export VGVOLUME=$VGVOLUME
EOF
add_linuxrc <<-'EOF'
+ # parse rootdev from kernel commandline
+ for arg in $CMDLINE; do
+ if [ "${arg##root=}" != "${arg}" ]; then
+ ROOTDEV=${arg##root=}
+ echo "Using $ROOTDEV from kernel commandline"
+ local tmp=${ROOTDEV#/dev/}
+ if [ "$tmp" != "$ROOTDEV" ]; then
+ VGVOLUME=${tmp%/*}
+ echo "Using $VGVOLUME LVM Volume Group from kernel commandline"
+ fi
+ fi
+ done
+
# disable noise from LVM accessing devices that aren't ready.
read printk < /proc/sys/kernel/printk
echo 0 > /proc/sys/kernel/printk
lvm.static vgscan --mknodes --ignorelockingfailure 2>/dev/null
: 'Activating Volume Groups'
- lvm.static vgchange --ignorelockingfailure -a y $LVM_VGVOLUME 2>/dev/null
+ lvm.static vgchange --ignorelockingfailure -a y $VGVOLUME 2>/dev/null
echo "$printk" > /proc/sys/kernel/printk
# Find out major/minor
- attrs="$(lvm.static lvdisplay --ignorelockingfailure -c $LVM_ROOTDEV 2>/dev/null)"
+ attrs="$(lvm.static lvdisplay --ignorelockingfailure -c $ROOTDEV 2>/dev/null)"
if [ "$attrs" ]; then
- majmin="${attrs#*$LVM_ROOTDEV*:*:*:*:*:*:*:*:*:*:*:*}"
+ majmin="${attrs#*$ROOTDEV*:*:*:*:*:*:*:*:*:*:*:*}"
if [ "$majmin" != "$attrs" ]; then
major="${majmin%:*}"
minor="${majmin#*:}"
# Pass it to kernel
echo $((256 * $major + $minor)) > /proc/sys/kernel/real-root-dev
else
- echo 2>&1 "Error figuring out real root device for $LVM_ROOTDEV!"
+ echo 2>&1 "Error figuring out real root device for $ROOTDEV!"
echo 2>&1 "System will not most likely boot up! So dropping you to a shell!"
echo 2>&1 ""
sh