[systemd-devel] Question about changing systemd target during boot

Svetoslav Iliev swetli at telco.com
Mon Aug 1 13:09:36 UTC 2016


Hi guys,

Thank you for the prompt reply and your valuable input. Just to let you 
know - I was able to do exactly what I intended. As it turns out my 
mistake was indeed creating contradiction between the WantedBy and After 
sections. Once I introduced a new "change.target" and adjusted my 
services accordingly I was able to isolate successfully either A or B 
targets during boot.

I also had to split the services in two: one main blocking of type 
oneshot and one non-blocking of simple type just to switch the target. 
As it seems I cannot call systemctl isolate from onehost type of service.

I just like to say that I followed this guide: 
https://www.freedesktop.org/wiki/Software/systemd/NetworkTarget where I 
quote "/Alternatively, you can change your service that needs the 
network to be up, to include After=network-online.target and 
Wants=network-online.target./"

Once again thanks all for the help.

---
BR,

Swetli

On 08/01/2016 03:38 PM, Andrei Borzenkov wrote:
> On Mon, Aug 1, 2016 at 2:43 PM, Michael Chapman <mike at very.puzzling.org> wrote:
>> On Mon, 1 Aug 2016, Andrei Borzenkov wrote:
>>> On Mon, Aug 1, 2016 at 2:23 PM, Michael Chapman <mike at very.puzzling.org>
>>> wrote:
>>>> On Mon, 1 Aug 2016, Andrei Borzenkov wrote:
>>>> [...]
>>>>>>
>>>>>> So here goes what I've done:
>>>>>>
>>>>>> 1. Create a service and put it in the network-online.target:
>>>>>>
>>>>>> /etc/systemd/system/change-target.service:
>>>>>> [Unit]
>>>>>> Description=Change Target
>>>>>> Wants=network-online.target
>>>>>> After=network-online.target
>>>>>>
>>>>>> [Service]
>>>>>> Type=oneshot
>>>>>> ExecStart=/tmp/script.sh
>>>>>> TimeoutSec=60s
>>>>>>
>>>>>> [Install]
>>>>>> WantedBy=network-online.target
>>>>>>
>>>>> This unit have conflicting requirements - on one hand it is
>>>>> After=network-online.target, OTOH WantedBy=network-online.target
>>>>> implies Before=network-online.target.
>>>>
>>>>
>>>> I've seen this asserted on this list a few times, but as far as I can
>>>> tell
>>>> it isn't actually correct. After/Before are meant to be completely
>>>> orthogonal to Wants/Requires/etc., according to the documentation.
>>>>
>>> Unless DefaultDependencies= is set to no in either of releated units
>>> or an explicit ordering dependency is already defined, target units
>>> will implicitly complement all configured dependencies of type Wants=
>>> or Requires= with dependencies of type After=.
>>>
>>> man systemd.target
>>
>> I just checked the code, and it looks like systemd explicitly *skips*
>> these default dependencies if they would create a loop. In
>> target_add_default_dependencies:
>>
> Yes, of course. It is also described in manual. But the question is
> what user actually intended? It is more topic of good design.
> _______________________________________________
> systemd-devel mailing list
> systemd-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/systemd-devel

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/systemd-devel/attachments/20160801/be0fdf4d/attachment.html>


More information about the systemd-devel mailing list