Currently, pkgsrc/sysutils/ups-nut works well on NetBSD (somewhat shaky testing on some points, but my current belief):
UPS is monitored and data is available configuration of UPS params messages on loss of comms and restore messages on transition to battery and return initiation of shutdown on low battery What is missing is during shutdown due to low battery, at some point run `upsdrvctl shutdown` to tell the UPS to turn off power (and thus preserve battery life) until power is back Most UPS units can be set up to e.g. wait 20s after the command to turn off power, and then to power on some delay after power returns. The question is how to add this in as an rc.d script. It should be as late as possible in shutdown so that the system is overwhelmingly likely to be in an ok state (filesystems unmounted or mounted ro) before power goes away. To run `upsdrvctl shutdown`, guarded by `upsmon -K` to find out if we should, then /usr/pkg or whatever needs to be available. rcorder * shows the following, with '/ -' noting what happens on shutdown root / - DISKS swap1 / also unmounts tmpfs without device nodes mountcritlocal / - NETWORKING mountcritremote / - mountall / "umount -a" !! swap2 SERVERS DAEMONS LOGIN upsd It seems the ups files should have some BEFORE/AFTER to put them between SERVERS and DAEMONS, so let's assume I've done that -- but that's a separable issue. (It also seems that things like nfsd, that aren't needed to get *this* machine up should REQUIRE: DAEMONS but that's off point and not important.) I think the right place to kill power, as things stand now, is (on shutdown) after swap2 and before mountall, because mountall might unmount /usr. It seems like a bug that mountall unmounts critlocal/critremote. With that fixed, it seems like just before mountcritlocal is the right place. Does it seem reasonably safe that mountall through root will be fast, < 10s?