Why minirc?

General Features

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

[1] Though it is impossible to find out how to customize them

Summary

As the table above hopefully shows in all clarity, most init systems make it enormously difficult for you to figure out what the heck it is doing, since they try to exceed their area of responsibility by far. The tasks of an init system are well defined as:

  1. Be the parent of all processes
  2. Run scripts on boot and on shutdown

And minirc combined with busybox-init does just that.