Bug#771739: could not start nodm with systemd 217-1 or 217-2

Didier Roche didrocks at ubuntu.com
Tue Dec 2 12:06:19 GMT 2014


Le 02/12/2014 12:28, Michael Biebl a écrit :
> Am 02.12.2014 um 06:48 schrieb Martin Pitt:
>> 積丹尼 Dan Jacobson [2014-12-02 13:36 +0800]:
>>> # cat /etc/X11/default-display-manager
>>> cat: /etc/X11/default-display-manager: No such file or directory
>> Indeed, nodm doesn't use this file at all, nor does it conflict with
>> any other window manager. So installing nodm together with gdm,
>> lightdm, kdm, etc. will just result in a disaster :-(
>>
>> Didier, I'm afraid we have to exclude nodm from your DM masking -- I
>> don't see a way how we can fix this without actually fixing nodm.
> I'm not sure if the generator is a good idea. I played around with that
> idea a long time ago but discarded it again.

It seems the way Lennart advertised the use of a default configuration 
(like in /e/X/d-d-m) keeping in sync with Aliases like 
display-manager.service.
> It also changes the behaviour of the insserv generator, which no longer
> generates dependencies if native units exist.

systemd does that itself as well anyway (I didn't put that on the 
overriding stack on purpose). I can condition that masking for 
display-manager only if you feel more comfortable that way.
Note that this patch modification is for jessie-only and should be 
removed as being useless as soon as all dms ship systemd units.
>
> At the current stage, I don't think these patches should be merged as is
> for master.
>
> Didier, Martin: could you elaborate what those patches try to fix?

This is to fix multiple bug reports where people don't have (or have 
multiple) dm services starting. Also, it enables people changing 
manually /e/X/d-d-m to not reboot in a state where no dm is started.
The use case is to ensure that display-manager.service will always 
points to a systemd service that will be runnable (if any). Meaning that 
we won't have failing units due to ExecStartPre failing and having that 
shell execution, or disable them if there is an init dm matching. It's 
going to enable us as well to migrate to Alias=display-manager.service 
one dm service after another instead in jessie+1 than doing the 
transition in a batch.

Precise behavior in coordination to the 2 generators is:
- if /etc/X11/default-display-manager matches a systemd unit and matches 
display-manager.service:
   -> noop on the systemd side, mask all dms sysvinit not matching a 
systemd unit
- if /etc/X11/default-display-manager matches systemd unit and but 
doesn't match what's pointed by display-manager.service:
   -> we ensure display-manager.service transiantly points to correct 
systemd unit, we mask all dms sysvinit not matching a systemd unit
- if /etc/X11/default-display-manager matches a non systemd unit:
   -> we transiently mask display-manager.service (so no systemd unit 
startup) and mask all sysvinit dm scripts, but the one matching 
/etc/X11/default-display-manager
- if no /etc/X11/default-display-manager:
    -> we even don't look at the systemd side (we hope there will be one 
display-manager.service matching at least one), we mask all sysvinit dm 
scripts

The last case is what is at fault here. I would suggest that we change 
the patch:
- if /etc/X11/default-display-manager matches anything at all or doesn't 
exist, we avoid masking any sysvinit dm script if there is no 
display-manager.service matching a real service file.

Didier




More information about the Pkg-systemd-maintainers mailing list