Systemd (Part 1)
LPIC1-101LINUX
2/28/2026


Systemd
One of the primary reasons systemd was created, is that it fundamentally changed how Linux boots by moving from a Serial (one-after-another) model to a Parallel (all-at-once) model.
Here is the breakdown of how these two "philosophies" differ:
1. SysVinit: The "Wait Your Turn" Model
In the old SysVinit system, services were started based on their numerical priority (e.g., S01, S02, S03). If a service like a network mount hangs or is slow, the entire boot process stops and waits for it. This led to very long boot times.
2. systemd: The "Race to the Finish" Model
systemd tries to start as many units as possible at the same time the moment the CPU is available. If Service A and Service B don't depend on each other, they start simultaneously.
In the old days, you knew exactly when a service started by looking at its number. In systemd, because things happen in parallel, the logs (via journalctl) can look a bit "scrambled" because lines from different services are being written at the same time.
3 How to see this in action
systemd-analyze critical-chain
This command shows you the specific path of units that took the longest to reach a "ready" state, helping you see which "parallel" branches were the slowest.
4 Targets as "Unit Containers"
Think of a target as a synchronization point or a "state" the system wants to reach.
A target doesn't care about the type of unit it manages. It only cares about the dependencies defined in its configuration.
Example: multi-user.target (the standard state for a server) pulls in:
Services: ssh.service, rsyslog.service.
Mounts: nfs-client.target (which contains mount units).
Sockets: cups.socket.
5 The Big Five Targets to Remember
Target Name Old Runlevel What it does
emergency.target None Minimal environment. It is even more stripped-down than the rescue.target.
rescue.target 1 Single-user mode. Only local filesystems mounted. No networking.
multi-user.target 3 Full multi-user mode with networking. No GUI (Command line only).
graphical.target 5 Full system with networking and a Graphical Desktop.
reboot.target 6 Shuts down and reboots the machine.
6 Managing targets
Warning: it is recommended to use a VM to practice all these commands. The author is not responsible for any damages in the system.
systemctl get-default (Check current boot target)
systemctl set-default <target> (Change boot target permanently)
systemctl isolate <target> (Switch target immediately without rebooting)
7 How to switch to a target from the boot screen
Warning: Even though you can use the "isolate" command to switch to any target in theory, it is recommended to switch to a target from the boot screen, protecting from a possible system hang.
For example, if you wanted to get to emergency.target from the boot screen, you would have to manually edit the kernel line, usually starting with "linux" (by pressing e, from edit) and add at the end of the line: systemd.unit=emergency.target.
Contact
hello@unixtips.eu
© 2025. All rights reserved.