mirror of
https://github.com/koverstreet/bcachefs-tools.git
synced 2025-02-22 00:00:03 +03:00
Adding plymouth support to initramfs script
This commit is contained in:
parent
c3b8d74200
commit
3a6164cdeb
@ -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
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user