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 ([email protected]) 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 [email protected] http://lists.freedesktop.org/mailman/listinfo/systemd-devel
