Frequently Asked Question

What are systemd targets, and how do they relate to old sysvinit runlevels?

A target is a special kind of unit that does nothing by itself, it just groups other units. Bringing the system to a target means starting every unit that the target wants. multi-user.target corresponds to old runlevel 3 (text-mode multi-user system), graphical.target to runlevel 5 (multi-user plus a display manager), poweroff.target/reboot.target to 0/6, and rescue.target and emergency.target to single-user and minimal-shell modes respectively.

Compared with numbered runlevels, targets are named and extensible: you can define your own (for example a kiosk.target that pulls in a specific application stack) and you can switch between them at runtime with systemctl isolate. Set the default boot target with systemctl set-default multi-user.target, this is how you disable the graphical login on a server. systemctl list-units --type=target shows what is currently active.

Further reading and video