É um pouco complicado, mas você pode usar o plymouth para conversar com o usuário enquanto o sistema está chegando. Isso só funcionará se o seu trabalho bloquear a inicialização, porque uma vez que o nível de execução 2 for atingido e o plymouth for finalizado, você não poderá interagir mais.
Basicamente você quer executar 'plymouth ask-question' ou 'plymouth watch-keystroke' e o usuário será solicitado. Então, se você quiser esperar 10 segundos pelo usuário, você teria um trabalho inicial como este (isso é bastante teórico e não foi testado!):
start on starting rc RUNLEVEL=[2345]
task
script
myscript='mktemp /tmp/killme.sh.XXXXXX'
chmod 0750 /tmp/killme.sh
cat > $myscript <<EOF
#!/bin/sh
# script is sent key pressed
cat > /tmp/keypresses.txt
kill -USR1 $$
EOF
key=""
handle_usr1() {
key='cat /tmp/keypresses.txt'
plymouth display-message --text="you pressed $key"
exit 0
}
trap handle_usr1 USR1
plymouth watch-keystroke --command=$myscript --keys="ABCD"
timeleft=10
while [ $timeleft -gt 0 ] ; do
plymouth display-message --text="you have $timeleft seconds to press A,B,C, or D..."
timeleft=(($timeleft-1))
done
plymouth display-message --text="Timed out..."
end script