diff options
Diffstat (limited to 'scripts')
-rwxr-xr-x[-rw-r--r--] | scripts/naskconf | 8 | ||||
-rwxr-xr-x[-rw-r--r--] | scripts/naskpass.inithook | 1 | ||||
-rwxr-xr-x[-rw-r--r--] | scripts/naskpass.initscript | 18 |
3 files changed, 19 insertions, 8 deletions
diff --git a/scripts/naskconf b/scripts/naskconf index 4a4a7e0..5f82f22 100644..100755 --- a/scripts/naskconf +++ b/scripts/naskconf @@ -14,8 +14,8 @@ _nask_cmd () { return 1 fi dpkg-divert --package naskpass --add --rename --divert /var/backups/cryptroot.initramfs.bak ${ORGFILE} - cp /usr/share/naskpass/naskpass.script.initramfs ${ORGFILE} - ln -s /usr/share/naskpass/naskpass.hook.initramfs \ + cp /usr/share/naskpass/naskpass.initscript ${ORGFILE} + ln -s /usr/share/naskpass/naskpass.inithook \ /usr/share/initramfs-tools/hooks/naskpass db_set naskpass/active true elif [ "x$1" = "xDCTV" ] && [ "$RET" = "true" ]; then @@ -23,9 +23,13 @@ _nask_cmd () { rm /usr/share/initramfs-tools/hooks/naskpass dpkg-divert --package naskpass --rename --remove ${ORGFILE} db_set naskpass/active false + elif [ "x$1" = "xUPDT" ] && [ "$RET" = "true" ]; then + cp /usr/share/naskpass/naskpass.initscript ${ORGFILE} fi return 0 } nask_activate () { _nask_cmd "ACTV"; return $?; } nask_deactivate () { _nask_cmd "DCTV"; return $?; } +nask_update () { _nask_cmd "UPDT"; return $?; } + diff --git a/scripts/naskpass.inithook b/scripts/naskpass.inithook index 083c477..074dff3 100644..100755 --- a/scripts/naskpass.inithook +++ b/scripts/naskpass.inithook @@ -19,6 +19,7 @@ esac . /usr/share/initramfs-tools/hook-functions copy_exec /lib/cryptsetup/naskpass /lib/cryptsetup +copy_exec /lib/cryptsetup/naskpass_check /lib/cryptsetup mkdir -p ${DESTDIR}/lib/terminfo/l cp /lib/terminfo/l/linux ${DESTDIR}/lib/terminfo/l/ diff --git a/scripts/naskpass.initscript b/scripts/naskpass.initscript index a2d7e95..98fd1dc 100644..100755 --- a/scripts/naskpass.initscript +++ b/scripts/naskpass.initscript @@ -290,7 +290,7 @@ setup_mapping() # Plymouth will add a : if it is a non-graphical prompt cryptkey="Please unlock disk $diskname" else - if [ -x /lib/cryptsetup/naskpass ]; then + if [ -x /lib/cryptsetup/naskpass ] && [ $askpass_fallback -eq 0 ]; then cryptkeyscript="/lib/cryptsetup/naskpass" cryptkey="" else @@ -302,22 +302,24 @@ setup_mapping() if [ ! -e "$NEWROOT" ]; then - if [ -x /bin/plymouth ] && plymouth --ping; then - message "naskpass does not work with playmouth, falling back to default askpass .." + if [ -x /bin/plymouth ] && plymouth --ping || [ $askpass_fallback -ne 0 ]; then + if [ $askpass_fallback -eq 0 ]; then + message "naskpass does not work with plymouth, falling back to default askpass .." + fi if ! crypttarget="$crypttarget" cryptsource="$cryptsource" \ $cryptkeyscript "$cryptkey" | $cryptopen; then message "cryptsetup: cryptsetup failed, bad password or options?" continue fi else - dmesg -D - if ! $cryptkeyscript -c "cryptsetup -T 1 open $cryptsource $crypttarget"; then + dmesg -n 1 + if ! $cryptkeyscript -c "/sbin/cryptsetup -T 1 open $cryptsource $crypttarget"; then message "naskpass: failed" continue else message "naskpass: success" fi - dmesg -E + dmesg -n 4 fi fi @@ -383,6 +385,7 @@ setup_mapping() # # Do we have any kernel boot arguments? +askpass_fallback=0 cmdline_cryptopts='' unset cmdline_root for opt in $(cat /proc/cmdline); do @@ -406,6 +409,9 @@ for opt in $(cat /proc/cmdline); do *) # lilo major/minor number (See #398957). Ignore esac ;; + cryptfallback) + askpass_fallback=1 + ;; esac done |