Zmieniłem system init z sysvinit na systemd w instalacji raspbian. Instalacja uruchamia się dobrze, ale teraz uruchamia lightdm przy starcie. Nie chcę tego robić.
Zauważyłem, że lightdm.service
jest uruchamiany podczas rozruchu. Zatrzymywanie usługi za pomocą
systemctl stop lightdm.service
działa w porządku.
systemctl disable lightdm.service
powinien wyłączyć, ale daje mi
Failed to issue method call: No such file or directory
systemctl status lightdm.service
daje mi
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
Zakładam, że lightdm jest uruchamiany ze skryptu init.d zamiast skryptu systemowego i systemctl disable
nie działa, jeśli źródłem jest skrypt init.d. Co powinienem zrobić, aby wyłączyć lightdm od startu?
edycja: Więcej informacji
wyjście $ 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
wyjście 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
wyjście 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
Odpowiedzi:
Spróbuj (jako root): -
Po ponownym uruchomieniu powinieneś być w
multi-user
trybie, a nie w trybiegraphical
.Jeśli to się nie powiedzie, sprawdź domyślny cel: -
Należy zauważyć, że jedyna różnica w ścieżkach jest katalog najwyższego poziomu - albo
/lib
albo/etc
.Powyższe powinno być miękkim linkiem do
multi-user.target
. Jeśli wskazuje,graphical.target
to zmień go za pomocą (jako root): -w zależności od tego, gdzie znaleziono miękkie łącze w poprzednim
ls -l
poleceniu.Uruchom ponownie i mam nadzieję, że Twój menedżer wyświetlania nie uruchomi się.
Aby zobaczyć, jakie masz cele, uruchom: -
źródło
systemctl set-default multi-user
Jak na ironię, żaden z „oficjalnych” sposobów na zrobienie tego nie został dotychczas wspomniany w żadnej odpowiedzi. A więc dla kompletności, oto one:
„Maskujesz” usługę:
Albo tworzysz własny plik jednostki,
/etc/systemd/system/lightdm.service
który następnie staje się właściwym obywatelem systemowym pierwszej klasy, który można włączać i wyłączać za pomocą poleceńenable
idisable
. Pliki jednostek zastępująinit.d
pliki o tej samej nazwie basename. Jeśli chcesz, możesz nazwać to,lightdm.service
co napisali ludzie Debiana. ☺Dalsza lektura
źródło
Możesz włączać i wyłączać skrypty inicjujące za
update-rc.d
pomocą Debiana. Zastosowanieupdate-rc.d lightdm disable
.Przyczyną wyłączenia grafical.target nie jest to, że lightdm nie ma wiedzy o grafical.target. Jest to skrypt init i uruchamia się na wszystkich poziomach uruchamiania dla wielu użytkowników (2-5).
źródło