]> git.ipfire.org Git - people/teissler/ipfire-2.x.git/blobdiff - src/initscripts/init.d/checkfstab
OpenVPN converter: Fix coding style and verbose output.
[people/teissler/ipfire-2.x.git] / src / initscripts / init.d / checkfstab
index c9fa2bc75130f344c0af16d96740e62eab77b8bd..ea845458f826424e0e7340a7487ded7644413851 100644 (file)
 
 case "${1}" in
        start)
+               #Skip if root is set by UUID
+               if (grep "root=UUID=" /proc/cmdline > /dev/null); then
+                       exit 0;
+               fi
                boot_mesg "Checking fstab bootdevice ..."
                read CMDLINE < /proc/cmdline
-               ROOTPOS=`expr index "$CMDLINE" root=`
+               ROOTPOS=${CMDLINE%%root=*}
+               ROOTPOS=${#ROOTPOS}
                NEWROOT=`echo ${CMDLINE:$ROOTPOS} | cut -d"=" -f2 | cut -d" " -f1`;
-               OLDBOOT=`cat /etc/fstab | grep -m1 "/boot" | cut -d" " -f1 | cut -f1`;
+               OLDBOOT=`cat /etc/fstab | grep -m1 "    /       " | cut -d" " -f1 | cut -f1`;
                OLDDRV=${OLDBOOT::`expr length $OLDBOOT`-1}
                NEWDRV=${NEWROOT::`expr length $NEWROOT`-1}
                if [ "$OLDDRV" == "$NEWDRV" ]; then
@@ -34,6 +39,15 @@ case "${1}" in
                boot_mesg "Bootdrive:   $NEWDRV"
                boot_mesg "fstab-entry: $OLDDRV"
                boot_mesg
+               if [ "${OLDDRV:0:4}" == "UUID" ]; then
+                       #Short sleep because the kernel has not finished hardware detections
+                       #and made many messages here and the password question is not readable
+                       sleep 3
+                       boot_mesg "${FAILURE}Error OLD Bootdrive is already a UUID. Can't fix."
+                       boot_mesg "${NORMAL}"
+                       sulogin
+                       reboot -f
+               fi
                boot_mesg "Attempt to repair it ..."
                mount -o remount,rw /
                sed -i -e "s|$OLDDRV|$NEWDRV|g" /etc/fstab