Cryptroot

Kein Timeout bei der Passwortabfrage bei verschluesseltem SWAP-Device.
(Linuxmint 15/Olivia Linuxmint 16/Petra / Debian)
Ich weiss nicht, wann und wo das Problem zum ersten Mal auftrat:
Obwohl einige Man-Pages von der Option ",timeout=X" in der /etc/crypttab
sprechen, funktioniert das nicht. Die Passwortabfrage bleibt endlos stehen.
(was ziemlich doof ist, wenn man einen Rechner remote booten will)

Dieser Patch http://erste.de/cryptroot/patch.txt beseitigt das Problem.
"plymouthd" versteht die Option "--timeout" ebenfalls nicht und die Zahl
der Werkzeuge ist zum Zeitpunkt dieses Bootvorgangs recht begrenzt.
Eine "kill-zeile" toetet die nach 30 Sekunden noch vorhandenen
"plymouth ask..."-Prozesse und setzt den Bootvorgang fort
. (Retries werden ausgefuehrt wie sie konfiguriert sind):
Aendern von Hand:
vim   /usr/share/initramfs-tools/scripts/local-top/cryptroot


update-initramfs -u -k all

nicht vergessen!



File: /usr/share/initramfs-tools/scripts/local-top/cryptroot
(Line-numbers may differ in different distributions)

Line 18:
========

# BUG: No timout when loading crypted SWAP or ROOT
# Add these changes to "cryptroot-script"
# Uses a timeout of $1 seconds to kill the password-input
# you may also change the number of password-retries in /etc/default/
# (not tested yet)
# RB 2013/12/08 11:30
killpass()
{
        message "Timeout will kill input in $1 seconds"
        sleep $1
        message "Timeout $1 sec. - KILLING plymouth"
        if test -e /tmp/KPFLAG; then
                message "no timeout cause /tmp/KPFLAG"
                else
                message "timeout reached"
                 KILL=`ps |grep "plymouth ask-for-password "|grep -v grep|awk '{print $1}'`
                if test -z ${KILL}  ; then
                        message "no ask-for-password running"
                        else
                        message "killing ${KILL}"
                        kill $KILL
                fi
        fi
}

changes in line 290
===================
                if [ ! -e "$NEWROOT" ]; then
                        if test -e /tmp/KPFLAG; then rm /tmp/KPFLAG; fi
                        killpass 30 &
                        if ! crypttarget="$crypttarget" cryptsource="$cryptsource" \
                             $cryptkeyscript "$cryptkey" | $cryptcreate --key-file=- ; then
                                echo "END" >/tmp/KPFLAG
                                message "cryptsetup: cryptsetup failed, bad password or options?"
                                continue
                        fi
                fi





Wenn man sich die Innereien vom "initrd" man ansehen moechte:


update-initramfs -c -k all;update-grub;grub-install /dev/sda
if test -d  /tmp/tmp1/ ; then
	rm -rf /tmp/tmp1
fi
mkdir /tmp/tmp1
cd /tmp/tmp1/
cp /boot/initrd.img-3.11.0-12-generic initrd.gz
gunzip initrd.gz 
cpio -idv < initrd