--- init
+++ init
@@ -210,7 +210,12 @@
           CRYPTDEV="luks$(basename $LUKSDEV)"
         fi
         echo "Unlocking LUKS encrypted device '${LUKSDEV}' as luks mapped device '$CRYPTDEV':"
-        /sbin/cryptsetup ${LUKSKEY} luksOpen ${LUKSDEV} ${CRYPTDEV} </dev/tty0 >/dev/tty0 2>&1
+        /sbin/cryptsetup --tries=1 ${LUKSKEY} luksOpen ${LUKSDEV} ${CRYPTDEV} </dev/tty0 >/dev/tty0 2>&1
+        # Prompt until valid password or EOF is encountered:
+        while [ $? -eq 2 ]; do
+          echo "Press ^D to continue without unlocking LUKS device."
+          /sbin/cryptsetup --tries=1 ${LUKSKEY} luksOpen ${LUKSDEV} ${CRYPTDEV} </dev/tty0 >/dev/tty0 2>&1
+        done
         if [ "$ROOTDEV" = "$LUKSDEV" -o "$ROOTDEV" = "$CRYPTDEV" ] ; then
           ROOTDEV="/dev/mapper/$CRYPTDEV"
         fi
@@ -239,7 +244,12 @@
           CRYPTDEV="luks$(basename $LUKSDEV)"
         fi
         echo "Unlocking LUKS encrypted device '${LUKSDEV}' as luks mapped device '$CRYPTDEV':"
-        /sbin/cryptsetup ${LUKSKEY} luksOpen ${LUKSDEV} ${CRYPTDEV} </dev/tty0 >/dev/tty0 2>&1
+        /sbin/cryptsetup --tries=1 ${LUKSKEY} luksOpen ${LUKSDEV} ${CRYPTDEV} </dev/tty0 >/dev/tty0 2>&1
+        # Prompt until valid password or EOF is encountered:
+        while [ $? -eq 2 ]; do
+          echo "Press ^D to continue without unlocking LUKS device."
+          /sbin/cryptsetup --tries=1 ${LUKSKEY} luksOpen ${LUKSDEV} ${CRYPTDEV} </dev/tty0 >/dev/tty0 2>&1
+        done
         if [ "$ROOTDEV" = "$LUKSDEV" -o "$ROOTDEV" = "$CRYPTDEV" ] ; then
           ROOTDEV="/dev/mapper/$CRYPTDEV"
         fi
