| # 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 |