# failsafe

description "Failsafe Boot Delay, MANAGED BY ZOOX"
author "Clint Byrum <clint@ubuntu.com>"

start on filesystem and net-device-up IFACE=lo
stop on static-network-up or starting rc-sysinit

emits failsafe-boot

console output

script
    # Determine if plymouth is available
    if [ -x /bin/plymouth ] && /bin/plymouth --ping ; then
        PLYMOUTH=/bin/plymouth
    else
        PLYMOUTH=":"
    fi

    # The point here is to wait for 2 minutes before forcibly booting
    # the system. Anything that is in an "or" condition with 'started
    # failsafe' in rc-sysinit deserves consideration for mentioning in
    # these messages. currently only static-network-up counts for that.

    sleep 1

    # Plymouth errors should not stop the script because we *must* reach
    # the end of this script to avoid letting the system spin forever
    # waiting on it to start.
    $PLYMOUTH message --text="Waiting for network configuration..." || :
    sleep 1

    $PLYMOUTH message --text="Waiting up to 1 more second for network configuration..." || :
    sleep 1
    $PLYMOUTH message --text="Booting system without full network configuration..." || :

    # give user 1 second to see this message since plymouth will go
    # away as soon as failsafe starts.
    sleep 1
    exec initctl emit --no-wait failsafe-boot
end script

post-start exec logger -t 'failsafe' -p daemon.warning "Failsafe of 4 seconds reached."
