On Tuesday 09 December 2014 at 17:25:48, Francis Moreau wrote: > Hello Lennart, > > Thanks for answering ! > > On 12/09/2014 02:10 PM, Lennart Poettering wrote: > > On Tue, 09.12.14 11:19, Francis Moreau (francis.m...@gmail.com) wrote: > > > >> Hello, > >> > >> I've a very weird behaviour with systemd 217: > >> > >> # systemctl show -p Wants multi-user.target | grep network.service > >> # systemctl show -p Wants runlevel3.target | grep network.service > >> Wants= ... network.service ... > >> # systemctl show -p Wants multi-user.target | grep network.service > >> Wants=... network.service ... > >> > >> So basically the network.service is not part of the multi-user target > >> dependencies. But if I'm showing the state of the runlevel3 target, the > >> network service magically becomes a dep of multi-user.target. > >> > >> The network.service is an sysv service which is started by rc[345].d and > >> has in its LSB: > >> > >> Provide: $network > >> > >> Could anybody clarify what I'm facing ? > > > > systemd lazy loads services from the file system as they are > > referenced. This includes symlinked aliases, which are only loaded when > > a unit is referenced by that specific name. > > > > Sorry but I don't really understand. > > Do you mean that the network.service wasn't loaded although the > runlevel3.target, which is an alias for multi-user target (default > target) wants it ? > > I would be glad if you could enlight me because I'm confused.
Apparently, network.service gets pulled in only via runlevel3.target, i. e. there is a symlink of kind /{etc,usr/lib,run}/systemd/system/runlevel3.target.wants/network.service -> network.service That is, the Wants= dependency is generated for runlevel3.target only, not for multi-user.target. And, because systemd loads units lazily, systemd does not know about runlevel3.target (and its dependencies) before anything forces systemd to load that unit. After you issue `systemctl show runlevel3.target`, systemd loads that unit, loads its dependencies and merges them to multi-user.target (because runlevel3.target is an alias for multi-user.target). HTHs, -- Ivan Shapovalov / intelfx / > > >> Also it appears that runlevel3 target is an alias for multi-user one. > >> Could anybody where this alias is done ? If that's in the source code of > >> systemd I would be curious to see where exactly. > > > > The /usr/lib/systemd/system/runlevel[0-5].target symlinks create these > > alias names. > > > > I see now. > > Thanks.
signature.asc
Description: This is a digitally signed message part.
_______________________________________________ systemd-devel mailing list systemd-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/systemd-devel