Author: glen
Date: Tue Feb  6 17:59:42 2007
New Revision: 8225

Modified:
   geninitrd/trunk/TODO
   geninitrd/trunk/geninitrd
Log:
- use blkid optionally (but preferred) to resolve UUID= and LABEL= at initrd 
generation time

Modified: geninitrd/trunk/TODO
==============================================================================
--- geninitrd/trunk/TODO        (original)
+++ geninitrd/trunk/TODO        Tue Feb  6 17:59:42 2007
@@ -16,6 +16,5 @@
 - missing module are not critical (but write big warning about this)
 - add cryptofs on rootfs
 - finish dmraid support
-- use blkid to resolve UUID and LABEL
 - support UUID and LABEL for root= kernel commandline option from initrd
 - tmpfs /dev hints from: https://wiki.ubuntu.com/ReplacementInit

Modified: geninitrd/trunk/geninitrd
==============================================================================
--- geninitrd/trunk/geninitrd   (original)
+++ geninitrd/trunk/geninitrd   Tue Feb  6 17:59:42 2007
@@ -238,6 +238,23 @@
        eval `awk '/^[\t ]*#/ {next} {if ( $2 == "/" ) {print "rootdev=\"" $1 
"\"\nrootFs=\"" $3 "\""}}' $fstab`
        case $rootdev in
        LABEL=*)
+               # new way, using blkid
+               if [ -x /sbin/blkid ]; then
+                       label=${rootdev#"LABEL="}
+                       dev=$(/sbin/blkid -t LABEL="$label" -o device)
+
+                       if [ "$dev" -a -r "$dev" ]; then
+                               debug "Using $dev as device for rootfs"
+                               rootdev=$dev
+                               rootdev_found=1
+                               rootdev1=${rootdev} # XXX neccessary?
+                               return
+                       fi
+                       echo >&2 "geninitrd can't find real device for 
LABEL=$label"
+                       exit 1
+               fi
+
+               # old way, using various tools
                if [ -x /sbin/findfs -a \( "$rootFs." = "ext2." -o "$rootFs." = 
"ext3." \) ] ; then
                        rootdev2="`/sbin/findfs $rootdev 2>/dev/null`"
                        if [ -n "$rootdev2" ] ; then
@@ -286,6 +303,23 @@
                fi
                ;;
        UUID=*)
+               # new way, using blkid
+               if [ -x /sbin/blkid ]; then
+                       uuid=${rootdev#"UUID="}
+                       dev=$(/sbin/blkid -t UUID="$uuid" -o device)
+
+                       if [ "$dev" -a -r "$dev" ]; then
+                               debug "Using $dev as device for rootfs"
+                               rootdev=$dev
+                               rootdev_found=1
+                               rootdev1=${rootdev} # XXX neccessary?
+                               return
+                       fi
+                       echo >&2 "geninitrd can't find real device for 
UUID=$uuid"
+                       exit 1
+               fi
+
+               # old way, using various tools
                if [ -x /sbin/findfs -a \( "$rootFs." = "ext2." -o "$rootFs." = 
"ext3." \) ] ; then
                        rootdev2="`/sbin/findfs $rootdev 2>/dev/null`"
                        if [ -n "$rootdev2" ] ; then
_______________________________________________
pld-cvs-commit mailing list
[email protected]
http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit

Reply via email to