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.