[systemd-devel] Boot ordering
Kai Krakow
hurikhan77 at gmail.com
Fri Mar 20 00:57:07 PDT 2015
Andrei Borzenkov <arvidjaar at gmail.com> schrieb:
> On Fri, Mar 20, 2015 at 1:56 AM, Kai Krakow <hurikhan77 at gmail.com> wrote:
>>
>> The point is: Let's just find out why the "intuitive" way to solve the
>> OPs problem doesn't work out and find the right solution. Let's face it:
>> Trying to use targets as sysvinit runlevels equivalent is obviously not
>> the working way although it looks promising and intuitive at first
>
> sysinit.target and basic.target are exact equivalent of sysvinit
> runlevels - they are hard serialization points between groups of
> services so that systemd will not proceed with next group until all
> services in previous group are started. The difference is that these
> runlevels are hardcoded and not configurable. All that OP asked for
> was a way to make it more flexible and customizable.
Yes, you are right. Thanks for the pointer. I didn't realize that as part of
the discussion.
It still feels wrong to allow that because it will probably be overly mis-
used by others (which doesn't mean the OP's intent is wrong) to mimic
sysvinit behaviour and make systemd work no better than other init systems.
But from "man systemd.special" I don't read that intentionally being hard
serialization points. It clearly works this way because systemd
automatically adds depends to all services to run after basic.target for
example. But I think the design decision behind it was more of kind of a
work-around than actually having hard serialization points. Otherwise it
would probably not had become hard-coded.
And most of those targets seem to be only special because they are part of
udev rules or very early systemd initialization - making me think that,
without looking at source code, that sysinit.target is the only target that
by intent is serialized through means of code. For basic.target this looks
more like (the intentional) side-effect of ordering all other services after
it.
But I understand the OPs request: it's not feasible to manually do the same
as basic.target for his proposed target - it just won't really work except
for well-defined system configurations. The question is if it is really
needed if one relies on implicit dependencies provided by systemd (a fuzzy
explanation like "sometimes you need to run something before something else"
just doesn't cut it without specifying what "some*" is, not the OP's answer,
tho). Currently I cannot think of a use case for a serialized extra target
but I'm open to happily learn about it.
--
Replies to list only preferred.
More information about the systemd-devel
mailing list