Deaktivieren Sie das Skript init.d in systemd

11

Ich habe das Init-System bei einer Raspbian-Installation von sysvinit auf systemd geändert. Die Installation startet einwandfrei, startet aber jetzt lightdm beim Booten. Ich möchte nicht, dass es das tut.

Mir ist aufgefallen, dass lightdm.servicebeim Booten gestartet wird. Beenden des Dienstes mit

systemctl stop lightdm.service

funktioniert gut.

systemctl disable lightdm.service sollte es deaktivieren, gibt mir aber

Failed to issue method call: No such file or directory

systemctl status lightdm.service gibt mir

lightdm.service - LSB: Light Display Manager
      Loaded: loaded (/etc/init.d/lightdm)
      Active: inactive (dead) since Thu, 03 Jul 2014 09:33:00 +0000; 22min ago
     Process: 762 ExecStop=/etc/init.d/lightdm stop (code=exited, status=0/SUCCESS)
     Process: 411 ExecStart=/etc/init.d/lightdm start (code=exited, status=0/SUCCESS)
      CGroup: name=systemd:/system/lightdm.service

Ich gehe davon aus, dass lightdm von einem init.d-Skript anstelle eines systemd-Skripts gestartet wird und systemctl disablenicht funktioniert, wenn die Quelle ein init.d-Skript ist. Was soll ich stattdessen tun, um lightdm ab dem Start zu deaktivieren?

bearbeiten: Weitere Infos

Ausgabe von $ ls -l /etc/systemd/system:

total 20
lrwxrwxrwx 1 root root   42 Jul  3 09:04 dbus-fi.epitest.hostap.WPASupplicant.service -> /lib/systemd/system/wpa_supplicant.service
lrwxrwxrwx 1 root root   37 Jul  3 13:03 default.target -> /lib/systemd/system/multi-user.target
drwxr-xr-x 2 root root 4096 Jul  3 09:00 getty.target.wants
drwxr-xr-x 2 root root 4096 Jul  3 09:04 graphical.target.wants
drwxr-xr-x 2 root root 4096 Oct 11  2013 local-fs.target.wants
drwxr-xr-x 2 root root 4096 Jul  3 09:04 multi-user.target.wants
drwxr-xr-x 2 root root 4096 Oct 11  2013 sysinit.target.wants
lrwxrwxrwx 1 root root   35 Mar 20  2013 syslog.service -> /lib/systemd/system/rsyslog.service

Ausgabe von systemctl --all -t target:

UNIT                LOAD   ACTIVE   SUB    JOB DESCRIPTION
all.target          error  inactive dead       all.target
basic.target        loaded active   active     Basic System
cryptsetup.target   loaded active   active     Encrypted Volumes
emergency.target    loaded inactive dead       Emergency Mode
final.target        loaded inactive dead       Final Step
getty.target        loaded active   active     Login Prompts
local-fs-pre.target loaded active   active     Local File Systems (Pre)
local-fs.target     loaded active   active     Local File Systems
multi-user.target   loaded active   active     Multi-User
network.target      loaded inactive dead       Network
nss-lookup.target   loaded inactive dead       Name Lookups
remote-fs.target    loaded active   active     Remote File Systems
rescue.target       loaded inactive dead       Rescue Mode
shutdown.target     loaded inactive dead       Shutdown
sockets.target      loaded active   active     Sockets
sound.target        loaded active   active     Sound Card
swap.target         loaded active   active     Swap
sysinit.target      loaded active   active     System Initialization
syslog.target       loaded active   active     Syslog
time-sync.target    loaded inactive dead       System Time Synchronized
umount.target       loaded inactive dead       Unmount All Filesystems

Ausgabe von ls -l /etc/systemd/system/multi-user.target.wants/:

total 8
drwxr-xr-x 2 root root 4096 Jul  3 09:04 .
drwxr-xr-x 7 root root 4096 Jul  3 13:03 ..
lrwxrwxrwx 1 root root   36 Oct 11  2013 remote-fs.target -> /lib/systemd/system/remote-fs.target
lrwxrwxrwx 1 root root   33 Jul  3 09:04 rsync.service -> /lib/systemd/system/rsync.service
lrwxrwxrwx 1 root root   35 Mar 20  2013 rsyslog.service -> /lib/systemd/system/rsyslog.service
lrwxrwxrwx 1 root root   32 Jul  3 09:04 sudo.service -> /lib/systemd/system/sudo.service
lrwxrwxrwx 1 root root   42 Jul  3 09:04 wpa_supplicant.service -> /lib/systemd/system/wpa_supplicant.service
Martijn
quelle
Wir betrachten RPi / Raspian nicht als aktuell mit der Bedeutung von Serverfehler. Die Begeisterung des Geräts eignet sich besser für Unix & Linux , Super User oder bei Fragen, die nicht mit Unix zu tun haben, für Raspberry Pi .
Vielen Dank. Seltsame Frage, wo finde ich die genauen Bereiche dieser verschiedenen Websites, um die genauen Bereiche der einzelnen Websites zu lesen?
Martijn
Ja, es ist schwierig, die Tour und das Hilfezentrum für jeden sind ein guter Anfang. Wir haben auch Erläuterungen zu bestimmten Punkten in unserem Meta, die für Sie relevant und relevant sind . Meta.serverfault.com/questions/5586/… .
Hrm. Obwohl ich damit nicht einverstanden bin, bin ich hier viel zu ein Neuling, als dass diese Meinung irgendein Gewicht hätte. Gleichzeitig ist es unter Unix & Linux mindestens genauso thematisch. Ich werde um eine Migration bitten.
Martijn

Antworten:

5

Versuchen Sie (als root): -

systemctl disable graphical.target

Nach einem Neustart sollten Sie sich im multi-userModus im Gegensatz zu befinden graphical.

Wenn dies fehlschlägt, überprüfen Sie, mit welchem ​​Standardziel Sie arbeiten: -

ls -l /lib/systemd/system/default.target
# or, depending on your distro
ls -l /etc/systemd/system/default.target

Beachten Sie, dass der einzige Unterschied in den Pfaden das Verzeichnis der obersten Ebene ist - entweder /liboder /etc.

Das obige sollte ein weicher Link zu sein multi-user.target. Wenn es darauf hinweist, graphical.targetändern Sie es mit (als root): -

ln -sf /lib/systemd/system/multi-user.target /lib/systemd/system/default.target
# or
ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target

abhängig davon, wo der Softlink im vorherigen ls -lBefehl gefunden wurde.

Starten Sie neu und hoffentlich startet Ihr Display Manager nicht.

Um zu sehen, welche Ziele Sie haben, führen Sie Folgendes aus:

systemctl --all -t target
garethTheRed
quelle
möglicherweise überraschend, das landet mich immer noch in lightdm
Martijn
Hmm. Überrascht auch. Ich habe ein bisschen mehr gegraben - das Problem ist, dass ich im Moment nur SSH zu einem VPS kann und kein 'grafisches' System vor mir habe, um meine Gedanken zu überprüfen!
GarethTheRed
Ich habe jetzt bearbeitet, da ich Zugriff auf ein reales System habe.
GarethTheRed
Seltsamerweise startet es immer noch lightdm, obwohl default.target in /etc/systemd/system/default.target mit /lib/systemd/system/multi-user.target verknüpft ist und systemctl list-unit == type = target nicht grafisches Ziel nicht als aktiv auflisten. Ich habe das Gefühl, es liegt an den spezifischen vorhandenen Fallback-init.d-Skripten. Ich habe noch nicht herausgefunden, was es verursacht, aber mein persönliches Problem weicht von einer nützlichen allgemeinen Frage ab und wird immer mehr zu einer Forumfrage "Hilf mir, mein Problem zu beheben". Ich wäre dankbar für weitere Hilfe, würde aber anerkennen, dass sie nicht mehr zum Stapelaustausch gehört.
Martijn
1
Der richtige Weg istsystemctl set-default multi-user
Majenko
7

systemctl disablefunktioniert nicht, wenn die Quelle ein init.dSkript ist. Was soll ich stattdessen tun, um das lightdmStarten beim Booten zu deaktivieren ?

Ironischerweise wurde bisher in keiner Antwort eine der "offiziellen" Möglichkeiten erwähnt, dies zu tun. Der Vollständigkeit halber sind sie hier:

Sie "maskieren" den Dienst:

systemctl mask lightdm.service

Oder Sie erstellen eine eigene Einheitendatei /etc/systemd/system/lightdm.service, die dann zu einem erstklassigen Systembürger wird, der mit den Befehlen enableund aktiviert und deaktiviert disablewerden kann. Einheitendateien ersetzen init.dDateien mit demselben Basisnamen. Sie können das lightdm.service, was von Debian-Leuten geschrieben wurde, klauen, wenn Sie möchten. ☺

Weiterführende Literatur

JdeBP
quelle
2

Sie können Init-Skripte mit update-rc.dDebian aktivieren und deaktivieren . Verwenden Sie update-rc.d lightdm disable.

Der Grund, warum das Deaktivieren von graphical.target nicht funktioniert, ist, dass lightdm keine Kenntnisse über graphical.target hat. Es ist ein Init-Skript und startet auf allen Mehrbenutzer-Runlevels (2-5).

CameronNemo
quelle