отключить скрипт init.d в systemd

11

Я изменил систему инициализации с sysvinit на systemd после установки raspbian. Установка загружается нормально, но теперь запускается lightdm при загрузке. Я не хочу этого делать.

Я заметил, lightdm.serviceчто запускается при загрузке. Остановка службы с

systemctl stop lightdm.service

работает отлично.

systemctl disable lightdm.service должен отключить его, но дает мне

Failed to issue method call: No such file or directory

systemctl status lightdm.service дает мне

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

Я предполагаю, что lightdm запускается из сценария init.d, а не из сценария systemd, и systemctl disableне работает, если источником является сценарий init.d. Что мне делать вместо этого, чтобы отключить запуск lightdm при загрузке?

редактировать: больше информации

вывод $ 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

вывод 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

вывод 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
Мартейн
источник
Мы не считаем RPi / raspian актуальным в значении сбоя сервера. Природа устройства для энтузиастов лучше подходит для Unix & Linux , Super User или для Raspberry Pi, не связанных с Unix .
Спасибо. Странный вопрос, где я могу найти точные рамки этих разных сайтов, чтобы прочитать точные рамки каждого?
Мартейн
Да, это сложно, тур и справочный центр для каждого - хорошее место для начала. У нас также есть разъяснения по определенным пунктам нашей мета, в частности, которые имеют отношение к вам meta.serverfault.com/questions/5586/… .
Хмм. Хотя я не согласен с этим, я слишком новичок, чтобы иметь такое мнение. В то же время, по крайней мере, столько же по темам о Unix и Linux, я думаю. Я попрошу о миграции.
Мартейн

Ответы:

5

Попробуйте (как root): -

systemctl disable graphical.target

После перезагрузки вы должны быть в multi-userрежиме, а не graphical.

Если это не помогло, проверьте, с какой целью по умолчанию: -

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

Обратите внимание, что единственная разница в путях - это каталог верхнего уровня - либо либо, /libлибо /etc.

Выше должно быть мягкая ссылка на multi-user.target. Если он указывает на graphical.targetто, измените его, используя (как 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

в зависимости от того, где мягкая ссылка была найдена в предыдущей ls -lкоманде.

Перезагрузитесь и, надеюсь, ваш менеджер дисплеев не запустится.

Чтобы увидеть, какие цели у вас есть, запустите: -

systemctl --all -t target
garethTheRed
источник
возможно удивительно, что это все еще приземляет меня в lightdm
Martijn
Хм. Удивлен тоже. Я сделал немного больше копания - проблема в том, что я могу сейчас использовать только SSH для VPS, и у меня нет «графической» системы, чтобы проверить свои мысли!
garethTheRed
Я редактировал, теперь, когда у меня есть доступ к реальной системе.
garethTheRed
Как ни странно, он по-прежнему запускает lightdm, хотя default.target в /etc/systemd/system/default.target является символической ссылкой на /lib/systemd/system/multi-user.target и systemctl list-units == type = target hasn Не указывайте graphical.target как активный. У меня такое ощущение, что это из-за специфических резервных скриптов init.d; Я еще не выяснил, что является причиной этого, но моя личная проблема заключается в том, чтобы перестать быть полезным вопросом общего назначения, и все больше превращается в вопрос форума «помогите мне решить мою проблему». Я был бы благодарен за дополнительную помощь, но признаю, что она больше не относится к обмену стека.
Мартин
1
Правильный путьsystemctl set-default multi-user
Majenko
7

systemctl disableне работает, если источником является init.dскрипт. Что я должен сделать вместо этого, чтобы отключить lightdmзапуск при загрузке?

По иронии судьбы, ни один из «официальных» способов сделать это не был упомянут ни в одном ответе до сих пор. Итак, для полноты, вот они:

Вы «маскируете» сервис:

systemctl mask lightdm.service

Или создать единичный собственный файл в /etc/systemd/system/lightdm.serviceкоторый затем становится собственно первым класс Systemd гражданина , который может быть включен и отключен с enableи disableкомандами. Файлы модулей заменяют init.dфайлы с одинаковым базовым именем. Вы можете указать, lightdm.serviceчто было написано людьми из Debian, если хотите. ☺

дальнейшее чтение

JdeBP
источник
2

Вы можете включать и отключать сценарии инициализации update-rc.dв Debian. Использование update-rc.d lightdm disable.

Причина, по которой отключение graphical.target не работает, заключается в том, что lightdm не знает о Graphical.target. Это сценарий инициализации, который запускается на всех многопользовательских уровнях запуска (2-5).

CameronNemo
источник