# Replaces traditional overdesigned shutdown mechanism.
#
# No communication with init is necessary:
# just ask all processes to exit.
# Then unmount everything. Then reboot or power off.

# Install /sbin/ symlinks named halt, reboot, poweroff
# (and also possibly shutdown) to e.g.
# /app/shutdown-1.0/script/shutdown:
#
ln -s /app/shutdown-1.0/script/shutdown /sbin/halt
ln -s /app/shutdown-1.0/script/shutdown /sbin/reboot
ln -s /app/shutdown-1.0/script/shutdown /sbin/poweroff
#
# shutdown spawns do_shutdown in new session, redirected to /dev/null,
# tells user that shutdown is in progress, and sleeps
# (for cosmetic reasons: do not confuse user by letting him
# type more commands in this terminal).
#
# do_shutdown tries to switch to a VT console.
# Then, (only if -r) it spawns a hardshutdown child, to reboot
# unconditionally in 30 seconds if something later goes seriously bad.
# Then it runs stop_tasks, writing to /var/log/reboot/YYYYMMDDhhmmss.log,
# then it runs stop_storage.
# Then it commands kernel to halt/reboot/poweroff, if requested.
# Then it sleeps forever.
#
# Build the hardshutdown binary:
#
cd script && ./hardshutdown.make.sh
