SVN: geninitrd/trunk: mod-lvm.sh tests tests/lvmroot.sh
glen
glen at pld-linux.org
Tue Nov 17 10:57:02 CET 2009
Author: glen
Date: Tue Nov 17 10:57:01 2009
New Revision: 10978
Added:
geninitrd/trunk/tests/
geninitrd/trunk/tests/lvmroot.sh
Modified:
geninitrd/trunk/mod-lvm.sh
Log:
- process also /dev/mapper/blodnatt-blah--bleh--blah -> /dev/blodnatt/blah-bleh-blah
Modified: geninitrd/trunk/mod-lvm.sh
==============================================================================
--- geninitrd/trunk/mod-lvm.sh (original)
+++ geninitrd/trunk/mod-lvm.sh Tue Nov 17 10:57:01 2009
@@ -180,17 +180,22 @@
export ROOTVG="$VGVOLUMES"
export SUSPENDVG=$SUSPENDVG
EOF
+
+ # need awk for "s/--/-/g" subst when parsing kernel root commandline
+ busybox_applet awk
add_linuxrc <<-'EOF'
# parse rootdev from kernel commandline if it begins with /
case "$ROOT" in
/*)
- # rewrite /dev/mapper/sys-rootfs -> /dev/sys/rootfs
+ # rewrite:
+ # /dev/mapper/sys-rootfs -> /dev/sys/rootfs
+ # /dev/mapper/blodnatt-blah--bleh -> /dev/blodnatt/blah-bleh
case "$ROOT" in
/dev/mapper/*-*)
ROOT=${ROOT#/dev/mapper/}
local VG=${ROOT%%-*}
- local LV=${ROOT#*-}
+ local LV=$(echo "${ROOT#$VG-}" | awk '{gsub(/--/, "-"); print}')
ROOT=/dev/$VG/$LV
;;
esac
Added: geninitrd/trunk/tests/lvmroot.sh
==============================================================================
--- (empty file)
+++ geninitrd/trunk/tests/lvmroot.sh Tue Nov 17 10:57:01 2009
@@ -0,0 +1,68 @@
+#!/bin/sh
+runtest_run() {
+ # parse rootdev from kernel commandline if it begins with /
+ case "$ROOT" in
+ /*)
+
+ # rewrite:
+ # /dev/mapper/sys-rootfs -> /dev/sys/rootfs
+ # /dev/mapper/blodnatt-blah--bleh -> /dev/blodnatt/blah-bleh
+ case "$ROOT" in
+ /dev/mapper/*-*)
+ ROOT=${ROOT#/dev/mapper/}
+ local VG=${ROOT%%-*}
+ local LV=$(echo "${ROOT#$VG-}" | awk '{gsub(/--/, "-"); print}')
+ ROOT=/dev/$VG/$LV
+ ;;
+ esac
+
+ if [ "$ROOT" != "$ROOTDEV" ]; then
+ ROOTDEV=$ROOT
+
+ echo "LVM: Using 'root=$ROOTDEV' from kernel commandline"
+ local tmp=${ROOTDEV#/dev/}
+ if [ "$tmp" != "$ROOTDEV" ]; then
+ ROOTVG=${tmp%/*}
+ echo "LVM: Using Volume Group '$ROOTVG' for rootfs"
+ fi
+ fi
+ ;;
+ esac
+}
+
+fail=0 ok=0
+fail() {
+ echo "FAIL: $@"
+ fail=$((fail+1))
+ return 1
+}
+ok() {
+ echo "OK: $@"
+ ok=$((ok+1))
+ return 0
+}
+runtest() {
+ local exp=$(mktemp) out=$(mktemp)
+ cat > $exp
+ eval $@
+ runtest_run > $out
+ diff -u $out $exp || fail "$@" && ok "$@\n$(cat $exp)"
+ rm -f $exp $out
+}
+
+runtest ROOT=/dev/mapper/sys-rootfs OK=/dev/sys/rootfs <<'EOF'
+LVM: Using 'root=/dev/sys/rootfs' from kernel commandline
+LVM: Using Volume Group 'sys' for rootfs
+EOF
+
+runtest ROOT=/dev/mapper/blodnatt-blah--bleh OK=/dev/blodnatt/blah-bleh <<'EOF'
+LVM: Using 'root=/dev/blodnatt/blah-bleh' from kernel commandline
+LVM: Using Volume Group 'blodnatt' for rootfs
+EOF
+
+runtest ROOT=/dev/mapper/blodnatt-blah--bleh--blah OK=/dev/blodnatt/blah-bleh-blah <<'EOF'
+LVM: Using 'root=/dev/blodnatt/blah-bleh-blah' from kernel commandline
+LVM: Using Volume Group 'blodnatt' for rootfs
+EOF
+
+echo "OK: $ok; FAIL: $fail"
More information about the pld-cvs-commit
mailing list