source – http://0pointer.de/blog/projects/why.html
sysvinit | Upstart | systemd | |
---|---|---|---|
Interfacing via D-Bus | no | yes | yes |
Shell-free bootup | no | no | yes |
Modular C coded early boot services included | no | no | yes |
Read-Ahead | no | no[1] | yes |
Socket-based Activation | no | no[2] | yes |
Socket-based Activation: inetd compatibility | no | no[2] | yes |
Bus-based Activation | no | no[3] | yes |
Device-based Activation | no | no[4] | yes |
Configuration of device dependencies with udev rules | no | no | yes |
Path-based Activation (inotify) | no | no | yes |
Timer-based Activation | no | no | yes |
Mount handling | no | no[5] | yes |
fsck handling | no | no[5] | yes |
Quota handling | no | no | yes |
Automount handling | no | no | yes |
Swap handling | no | no | yes |
Snapshotting of system state | no | no | yes |
XDG_RUNTIME_DIR Support | no | no | yes |
Optionally kills remaining processes of users logging out | no | no | yes |
Linux Control Groups Integration | no | no | yes |
Audit record generation for started services | no | no | yes |
SELinux integration | no | no | yes |
PAM integration | no | no | yes |
Encrypted hard disk handling (LUKS) | no | no | yes |
SSL Certificate/LUKS Password handling, including Plymouth, Console, wall(1), TTY and GNOME agents | no | no | yes |
Network Loopback device handling | no | no | yes |
binfmt_misc handling | no | no | yes |
System-wide locale handling | no | no | yes |
Console and keyboard setup | no | no | yes |
Infrastructure for creating, removing, cleaning up of temporary and volatile files | no | no | yes |
Handling for /proc/sys sysctl | no | no | yes |
Plymouth integration | no | yes | yes |
Save/restore random seed | no | no | yes |
Static loading of kernel modules | no | no | yes |
Automatic serial console handling | no | no | yes |
Unique Machine ID handling | no | no | yes |
Dynamic host name and machine meta data handling | no | no | yes |
Reliable termination of services | no | no | yes |
Early boot /dev/log logging | no | no | yes |
Minimal kmsg-based syslog daemon for embedded use | no | no | yes |
Respawning on service crash without losing connectivity | no | no | yes |
Gapless service upgrades | no | no | yes |
Graphical UI | no | no | yes |
Built-In Profiling and Tools | no | no | yes |
Instantiated services | no | yes | yes |
PolicyKit integration | no | no | yes |
Remote access/Cluster support built into client tools | no | no | yes |
Can list all processes of a service | no | no | yes |
Can identify service of a process | no | no | yes |
Automatic per-service CPU cgroups to even out CPU usage between them | no | no | yes |
Automatic per-user cgroups | no | no | yes |
SysV compatibility | yes | yes | yes |
SysV services controllable like native services | yes | no | yes |
SysV-compatible /dev/initctl | yes | no | yes |
Reexecution with full serialization of state | yes | no | yes |
Interactive boot-up | no[6] | no[6] | yes |
Container support (as advanced chroot() replacement) | no | no | yes |
Dependency-based bootup | no[7] | no | yes |
Disabling of services without editing files | yes | no | yes |
Masking of services without editing files | no | no | yes |
Robust system shutdown within PID 1 | no | no | yes |
Built-in kexec support | no | no | yes |
Dynamic service generation | no | no | yes |
Upstream support in various other OS components | yes | no | yes |
Service files compatible between distributions | no | no | yes |
Signal delivery to services | no | no | yes |
Reliable termination of user sessions before shutdown | no | no | yes |
utmp/wtmp support | yes | yes | yes |
Easily writable, extensible and parseable service files, suitable for manipulation with enterprise management tools | no | no | yes |