> By this redefinition, a good init is one that doesn't allow systems to go > vegetable, either by having something they restart, or totally freaking > out and burning down the world if the one thing they started ever > vanishes. > > sinit could be made proper by forking a thing and then > issuing the reboot(2) syscall any time its child vanished. > Annoyingly aggressive on the restarts, but proper.
maybe you should have a look at the tiny "oneit" utility that is part of/included in ToyBox ( http://landley.net/toybox/ ): $ toybox help oneit usage: oneit [-p] [-c /dev/tty0] command [...] Simple init program that runs a single supplied command line with a controlling tty (so CTRL-C can kill it). -c Which console device to use (/dev/console doesn't do CTRL-C, etc) -p Power off instead of rebooting when command exits -r Restart child when it exits -3 Write 32 bit PID of each exiting reparented process to fd 3 of child (Blocking writes, child must read to avoid eventual deadlock.) Spawns a single child process (because PID 1 has signals blocked) in its own session, reaps zombies until the child exits, then reboots the system (or powers off with -p, or restarts the child with -r). Responds to SIGUSR1 by halting the system, SIGUSR2 by powering off, and SIGTERM or SIGINT reboot.