What goes where on Linux is spelled out in the Linux File System Hierarchy Standards. In the old days, it was common for everything in /usr/ to be on NFS storage. Only /etc/ and /var/ and /bin/ had to be local to boot the OS, basically single user runlevel. Everything else would be on network storage.
Systemd removed the idea if runlevels, which were built up in an additive way. Runlevel 3 would do everything that Runlevel 1 and 2 had first, then add the specific stuff in /etc/rc3.d/ rc3 was multi-user, but without any GUI. This all worked nicely for 30+ yrs, before systemd. Simple, elegant, easy to understand. The systemd guys thought they knew a better way. Have each task know it's dependencies and let the computer figure out the best order to start things. That is a great idea, when it works. It is hard to troubleshoot, however, since the startup order isn't controlled by the admin. It is controlled by the systemd dependency ordering software. In practice, we humans still think in terms of perhaps 4 major events as dependencies for each of the daemons we start, which can lead to many programs all being started
a) after the local file systems are mounted
b) after networking is full up
c) after network file systems are mounted
d) last
Last is when we used to run /etc/rc.local, so that is where most custom daemons would be dropped. Server applications would be run after "c" - all the network storage was mounted ... so things like apache and nginx and the dbms would startup then with the dbms starting just prior to the web servers. Each runlevel had 98 "slots" for ordering when things in that runlevel would start, controlled with a simplistic numeric order that was very easy to understand just by looking at a directory listing. With systemd, I bet there is some tool which will spell out the startup order based on all the "unit files" in /etc/systemd/ ... I just don't know what that command is.
Code:
sudo systemctl status
and
Code:
sudo systemctl list-dependencies
are NOT the correct answer. Neither is
Code:
systemd-analyze {whatever}
Just want a text output tree that shows which unit files are dependent on others.