[gelöst] systemd: multi-user.target und kdm

Warum Debian und/oder eine seiner Spielarten? Was muss ich vorher wissen? Wo geht es nach der Installation weiter?
Antworten
Benutzeravatar
Livingston
Beiträge: 1816
Registriert: 04.02.2007 22:52:25
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: 127.0.0.1

[gelöst] systemd: multi-user.target und kdm

Beitrag von Livingston » 21.08.2015 18:33:37

Moinmoin, liebe Leute,

ich versuche gerade kdm.service aus dem mult-user.target einer frischen jessie-Installation herauszuoperieren.
systemctl show multi-user.target sagt mir:

Code: Alles auswählen

Wants=systemd-update-utmp-runlevel.service exim4.service gpm.service tor.service kdm.service lirc.service saned.service speech-dispatche
wohingegen systemctl cat multi-user.target meldet:

Code: Alles auswählen

Requires=basic.target
Conflicts=rescue.service rescue.target
After=basic.target rescue.service rescue.target
Ebenso ist kdm.service nicht in /etc/systemd/system/multi-user.target.wants versteckt.

Die Suche ging weiter in /etc/init.d/kdm. Das gute Stück wird aus Kompatibiltätsgründen noch in systemd eingebunden, was auch durch systemctl show kdm.service bestätigt wird:

Code: Alles auswählen

WantedBy=graphical.target multi-user.target
Before=multi-user.target graphical.target shutdown.target
FragmentPath=/run/systemd/generator.late/kdm.service
SourcePath=/etc/init.d/kdm
Und da geht's los mit den Problemen. FragmentPath und SourcePath sagen mir, dass der Service dynamisch aus dem alten LSB-Header in /etc/init.d zusammengestrickt wird. Die Anpassung in /etc/init.d/kdm mit

Code: Alles auswählen

# Default-Start:     4 5
# Default-Stop:      0 1 2 3 6
und Anpassen der Links in den runlevels 2,3 mit anschließendem update-rc.d bzw. insserv -r kdm und insserv kdm bewirken effektiv nichts. Ich erhalte zwar in /etc/rc2.d und /etc/rc3.d die Links K01kdm -> ../init.d/kdm, aber systemd schert sich selbst nach einem reboot nicht darum und systemctl show kdm.service bleibt dabei, dass kdm von multi-user angefordert wird (Wants=... kdm.service ...).

Auch die targets runlevel[2-4] bringen nix, da sie lediglich Links auf multi-user sind.
Die einfache Frage lautet:

Watt nu? 8O

__________

EDIT: Ergänzung

Ich vermute, dass es sich hier um ein allgemeineres Problem handelt, nämlich dass sämtliche Scripte in /etc/init.d eingebunden werden, sofern sie nicht systemd-konform als services angelegt wurden. Ich werde morgen mal in diese Richtung weiter recherchieren.
Zuletzt geändert von Livingston am 26.08.2015 12:40:27, insgesamt 1-mal geändert.

Benutzeravatar
catdog2
Beiträge: 5352
Registriert: 24.06.2006 16:50:03
Lizenz eigener Beiträge: MIT Lizenz

Re: systemd: multi-user.target und kdm

Beitrag von catdog2 » 21.08.2015 23:05:02

Du könntest die generierte .service Datei nach /etc/systemd/system/kdm.service kopieren und deinen wünschen nach anpassen. Sobald ein .service existiert sollte das gleichnamige init skript ignoriert werden.
Unix is user-friendly; it's just picky about who its friends are.

Benutzeravatar
Livingston
Beiträge: 1816
Registriert: 04.02.2007 22:52:25
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: 127.0.0.1

Re: systemd: multi-user.target und kdm

Beitrag von Livingston » 26.08.2015 12:39:51

Juhu, es ist gelöst 8)
Zu beachten ist, dass sämtliche links auf ein target von systemd mitverwurstet werden. Die targets runlevel[2-4].target sind solche Links, und sie verweisen auf multi-user.target. Da ich in meinem ersten Ansatz kdm lediglich aus den runlevels 2 und 3 ausgesperrt, in 4 und 5 aber weiterhin zugelassen hatte, stolperte systemd natürlich über RL4 und generierte brav eine Wants-Abhängigkeit in multi-user.target.

Lösung:
Entweder das Starten von kdm in /etc/init.d/kdm auch für RL4 verbieten
oder die entsprechenden Links runlevel[2-4] löschen/neu setzen.

Meinem eigentlichen Vorhaben steht damit nichts mehr im Wege:
runlevel 2: Kein X, kein Netzwerk -> selbst gebautes, abgespecktes multi-user.target ohne NetworkManager.service
runlevel 3: Kein X, mit Netzwerk -> multi-user.target
runlevel 4: Mit X, kein Netzwerk -> auf runlevel2 aufgebautes target, das zusätzlich kdm zulässt.
runlevel 5: Mit X, mit Netzwerk -> graphical.target

Antworten