X-Git-Url: http://git.grml.org/?a=blobdiff_plain;f=components%2F9990-misc-helpers.sh;h=995187314d7fe94e8ffe5dc0033122295f97baf9;hb=6200502b939da2926595fd5bc644041599dec0e5;hp=902ddfe86011139240fc9a176671b3dcceab9af4;hpb=e5e8d934a9d992efec23998e289863852df18b8b;p=live-boot-grml.git diff --git a/components/9990-misc-helpers.sh b/components/9990-misc-helpers.sh index 902ddfe..9951873 100755 --- a/components/9990-misc-helpers.sh +++ b/components/9990-misc-helpers.sh @@ -161,7 +161,7 @@ check_dev () # Adding lvm support if [ -x /scripts/local-top/lvm2 ] then - ROOT="$device" resume="" /scripts/local-top/lvm2 + ROOT="$device" resume="" /scripts/local-top/lvm2 >>/boot.log fi ;; @@ -169,10 +169,10 @@ check_dev () # Adding raid support if [ -x /scripts/local-top/mdadm ] then - cp /conf/conf.d/md /conf/conf.d/md.orig + [ -r /conf/conf.d/md ] && cp /conf/conf.d/md /conf/conf.d/md.orig echo "MD_DEVS=$device " >> /conf/conf.d/md - /scripts/local-top/mdadm - mv /conf/conf.d/md.orig /conf/conf.d/md + /scripts/local-top/mdadm >>/boot.log + [ -r /conf/conf.d/md.orig ] && mv /conf/conf.d/md.orig /conf/conf.d/md fi ;; esac @@ -803,9 +803,30 @@ open_luks_device () load_keymap + # check for plymouth + if [ -x /bin/plymouth ] + then + _PLYMOUTH="true" + fi + + case "${_PLYMOUTH}" in + true) + plymouth --ping + + cryptkeyscript="plymouth ask-for-password --prompt" + # Plymouth will add a : if it is a non-graphical prompt + cryptkeyprompt="Please unlock disk ${dev}" + ;; + + *) + cryptkeyscript="/lib/cryptsetup/askpass" + cryptkeyprompt="Please unlock disk ${dev}: " + ;; + esac + while true do - /lib/cryptsetup/askpass "Enter passphrase for ${dev}: " | \ + $cryptkeyscript "$cryptkeyprompt" | \ /sbin/cryptsetup -T 1 luksOpen ${dev} ${name} ${opts} if [ 0 -eq ${?} ] @@ -816,11 +837,28 @@ open_luks_device () fi echo >&6 - echo -n "There was an error decrypting ${dev} ... Retry? [Y/n] " >&6 - read answer + retryprompt="There was an error decrypting ${dev} ... Retry? [Y/n]" + + case "${_PLYMOUTH}" in + true) + plymouth display-message --text "${retryprompt}" + answer=$(plymouth watch-keystroke --keys="YNyn") + ;; + + *) + echo -n "${retryprompt} " >&6 + read answer + ;; + esac if [ "$(echo "${answer}" | cut -b1 | tr A-Z a-z)" = "n" ] then + case "${_PLYMOUTH}" in + true) + plymouth display-message --text "" + ;; + esac + return 2 fi done @@ -1422,7 +1460,7 @@ get_custom_mounts () prev_dest="" # This sort will ensure that a source /a comes right before a source # /a/b so we only need to look at the previous source - sort -k2 -b ${custom_mounts} | + [ -e ${custom_mounts} ] && sort -k2 -b ${custom_mounts} | while read device source dest options do if echo ${source} | grep -qe "^${prev_source}\(/.*\)\?$"