Main requirements: 1) You need a functional mlockall, otherwise the program will be less reliable. AIX has plock - that works fine too. These are used to prevent swapping and paging. Also, AIX has an mlockall that always returns an error, and DragonFlyBSD has an mlockall that does nothing but always returns a success status - so that's something to watch out for. 2) You need a way of rebooting without sync'ing, and without exec'ing another program. You can often find this in /usr/include/reboot.h, /usr/include/sys/reboot.h, and/or /usr/include/linux/reboot.h. This is needed to decrease dependency on hard disk function still further. 3) You need a decent source of entropy, especially /dev/urandom, /dev/random, or prngd (egd probably works too). In the case of prngd (and perhaps egd also), prngd must be running on a TCP socket - fallback-reboot does not use /dev/egd-pool or similar. The default for fallback-reboot's expectation of prngd, is that it will be on tcp/708. 4) Having a functional sigaction helps matters, but you could #ifdef that away if needed, or use a different signal API. sigaction()'s used for making the daemon reread /.fallback-reboot-passwd