This functions are working as follows:
- Send a SIGTERM to all processes that may be finished
- Send a SIGKILL to all processes that still live and may be finished
- Try to unmount all mount points
- Try to remount read-only all mount points that can't be umounted
- Umount all swap devices
- Umount and detach all loopback devices
- Call [poweroff|halt|reboot|kexec]
TODO:
- Umount device-mapper.
- Make log work. So far it is being useless as we do not parse
/etc/systemd/system.conf, kernel command line but just
environment, however we're executed by init and thus have no
useful variables. Forcing it to target=kmsg/console and
level=debug also does not produce any output, however writing to
/dev/console does work (hack used during debug).
Arch uses the same paths and default font of gentoo. Previously,
systemd-vconsole-setup was failing with the following message:
systemd-vconsole-setup[59]: /bin/setfont failed with error code 1.
This patch is a bit bigger than expected since Gentoo being
non-standard in some places.
1. it is installing binaries at /usr/bin instead of /bin.
2. it is using CamelCase names for consolefonts.
3. /etc/rc.conf:unicode=(yes|no) just forbids loadkeys and setfont
"-u" options, but do not disable the actual kernel default_utf8
from vt module.
Add unit files to call
/etc/init.d/umountnfs.sh stop (network file systems)
/etc/init.d/umountfs stop (local file systems)
/etc/init.d/umountroot stop ("/" file system)
in the right order and hook them up in the umount.target so they are run
on shutdown and reboot.
On Debian sysinit is not a single script but a separate runlevel.
Split of fsck.target into separate unit file as otherwise we get an
unbreakable cycle on shutdown/reboot.
It is essential that the gettys are proper dependencies from
getty.target so that they aren't killed and immediately restarted on
runlevel changes. Hence rework the logic to implicitly add console
gettys to getty.target as dependencies.
This also adds an automatic hvc console for virtualizers.
https://bugzilla.redhat.com/show_bug.cgi?id=501720
In order to unify configuration across distributions we pick the
simple-most option by default (Debian's /etc/hostname) and then fall
back to distro-specific hacks if that doesn't exist.