désactiver le script init.d dans systemd

11

J'ai changé le système init de sysvinit en systemd sur une installation raspbian. L'installation démarre correctement, mais démarre maintenant lightdm au démarrage. Je ne veux pas que ça fasse ça.

J'ai remarqué que lightdm.servicec'est démarré au démarrage. Arrêter le service avec

systemctl stop lightdm.service

fonctionne bien.

systemctl disable lightdm.service devrait le désactiver, mais me donne

Failed to issue method call: No such file or directory

systemctl status lightdm.service Donne moi

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

Je suppose que lightdm est démarré à partir d'un script init.d plutôt que d'un script systemd, et systemctl disablene fonctionne pas si la source est un script init.d. Que dois-je faire à la place pour désactiver lightdm au démarrage?

modifier: Plus d'infos

sortie de $ 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

sortie de 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

sortie de 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
la source
Nous ne considérons pas RPi / raspian comme étant d'actualité avec la signification de Server Fault. La nature passionnée de l'appareil est mieux adaptée à Unix et Linux , Super User ou dans le cas de questions non liées à Unix Raspberry Pi .
Merci. Question étrange, où puis-je trouver les portées exactes de ces différents sites pour lire sur les portées exactes de chacun?
Martijn
Oui, c'est difficile, la visite et le centre d'aide pour chacun sont un bon point de départ. Nous avons également des éclaircissements sur certains points de notre méta en particulier et pertinents pour vous meta.serverfault.com/questions/5586/… .
Hrm. Bien que je ne sois pas d'accord avec cela, je suis beaucoup trop nouveau pour que cette opinion ait du poids. En même temps, c'est au moins autant sur le sujet sous Unix et Linux que je suppose. Je vais demander une migration.
Martijn

Réponses:

5

Essayez (en tant que root): -

systemctl disable graphical.target

Après un redémarrage, vous devriez être en multi-usermode par opposition à graphical.

Si cela échoue, vérifiez quelle est votre cible par défaut: -

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

Notez que la seule différence dans les chemins est le répertoire de niveau supérieur - soit /libou /etc.

Ce qui précède devrait être un lien doux vers multi-user.target. S'il pointe vers graphical.targetle changer en utilisant (en tant que 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

selon l'endroit où le lien logiciel a été trouvé dans la ls -lcommande précédente .

Redémarrez et espérons que votre gestionnaire d'affichage ne démarre pas.

Pour voir quelles cibles vous avez, exécutez: -

systemctl --all -t target
garethTheRed
la source
peut-être de manière surprenante, cela me fait toujours atterrir dans lightdm
Martijn
Hmm. Surpris aussi. J'ai creusé un peu plus - le problème est que je ne peux que SSH vers un VPS pour le moment et que je n'ai pas de système «graphique» devant moi pour vérifier mes pensées!
garethTheRed
J'ai édité, maintenant que j'ai accès à un vrai système.
garethTheRed
Curieusement, il démarre toujours lightdm, même si default.target dans /etc/systemd/system/default.target est lié à /lib/systemd/system/multi-user.target et systemctl list-units == type = target doesn 't list graphical.target as active. J'ai l'impression que c'est à cause des scripts init.d de secours spécifiques présents; Je n'ai pas encore trouvé la cause de cela, mais mon problème personnel s'éloigne d'une question générale utile et devient de plus en plus une question de forum "aidez-moi à résoudre mon problème". Je serais reconnaissant pour plus d'aide, mais je reconnais qu'il n'appartient plus à l'échange de pile.
Martijn
1
La bonne façon estsystemctl set-default multi-user
Majenko
7

systemctl disablene fonctionne pas si la source est un init.dscript. Que dois-je faire à la place pour désactiver le lightdmdémarrage au démarrage?

Ironiquement, aucune des façons "officielles" de le faire n'a été mentionnée jusqu'à présent dans aucune réponse. Donc pour être complet, les voici:

Vous "masquez" le service:

systemctl mask lightdm.service

Ou vous créez votre propre fichier d'unité car /etc/systemd/system/lightdm.serviceil devient alors un véritable citoyen systemd de première classe qui peut être activé et désactivé avec les commandes enableet disable. Les fichiers unitaires remplacent les init.dfichiers du même nom de base. Vous pouvez surnommer ce lightdm.servicequi a été écrit par les gens de Debian, si vous le souhaitez. ☺

Lectures complémentaires

JdeBP
la source
2

Vous pouvez activer et désactiver les scripts d'initialisation avec update-rc.dsur Debian. Utilisez update-rc.d lightdm disable.

La raison pour laquelle la désactivation de graphical.target ne fonctionne pas est que lightdm n'a aucune connaissance de graphical.target. Il s'agit d'un script d'initialisation qui démarre sur tous les niveaux d'exécution multi-utilisateurs (2-5).

CameronNemo
la source