Adding plymouth support to initramfs script

This commit is contained in:
Tim Schlueter 2018-02-25 17:21:44 -08:00
parent c3b8d74200
commit 3a6164cdeb

View File

@ -23,22 +23,68 @@ fi
# source for resolve_device() and panic() functions # source for resolve_device() and panic() functions
. /scripts/functions . /scripts/functions
#
# Helper functions
#
message()
{
if [ -x /bin/plymouth ] && plymouth --ping; then
plymouth message --text="$*"
else
echo "$*" >&2
fi
}
panic2()
{
# Send the panic message to plymouth
if [ -x /bin/plymouth ] && plymouth --ping; then
plymouth message --text="$*"
fi
panic "$@"
exit 1
}
unlock()
{
local msg=$1
shift
if [ -x /bin/plymouth ] && plymouth --ping; then
msg=$(plymouth ask-for-password --prompt="$msg" | \
bcachefs unlock "$@" 2>&1)
# If the unlock failed, send any printed messages to plymouth
if [ $? -ne 0 ]; then
plymouth message --text="Bcachefs: $msg"
return 1
fi
else
# If unlock() is called multiple times, don't re-print the prompt message
# unless it has changed
if [ "$LAST_UNLOCK_MSG" != "$msg" ]; then
echo "$msg" >&2
LAST_UNLOCK_MSG=$msg
fi
bcachefs unlock "$@"
fi
}
# Resolve the root device (e.g. if root is specified by UUID) # Resolve the root device (e.g. if root is specified by UUID)
DEV=$(resolve_device "$ROOT") DEV=$(resolve_device "$ROOT")
# Check if the root device needs unlocking: # Check if the root device needs unlocking:
if bcachefs unlock -c $DEV >/dev/null 2>&1; then if bcachefs unlock -c $DEV >/dev/null 2>&1; then
if [ "$DEV" == "$ROOT" ]; then if [ "$DEV" == "$ROOT" ]; then
echo "Please unlock $DEV:" msg="Please unlock $DEV:"
else else
echo "Please unlock $DEV ($ROOT):" msg="Please unlock $DEV ($ROOT):"
fi fi
count=0 count=0
tries=3 tries=3
while [ $tries -le 0 -o $count -lt $tries ]; do while [ $tries -le 0 -o $count -lt $tries ]; do
if bcachefs unlock "$DEV"; then if unlock "$msg" "$DEV"; then
echo "Bcachefs: $DEV successfully unlocked" message "Bcachefs: $DEV successfully unlocked"
break break
fi fi
@ -46,8 +92,7 @@ if bcachefs unlock -c $DEV >/dev/null 2>&1; then
done done
if [ $tries -gt 0 -a $count -ge $tries ]; then if [ $tries -gt 0 -a $count -ge $tries ]; then
panic "Bcachefs: maximum number of tries exceeded for $DEV" panic2 "Bcachefs: maximum number of tries exceeded for $DEV"
exit 1
fi fi
fi fi