wyłącz skrypt init.d w systemd


11

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.servicejest 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 disablenie 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

Nie uważamy RPi / raspian za aktualne w znaczeniu błędu serwera. Entuzjastyczna natura urządzenia jest bardziej odpowiednia dla systemów Unix i Linux , Super User lub w przypadku pytań niezwiązanych z Unix Raspberry Pi .

Dzięki. Dziwne pytanie, gdzie mogę znaleźć dokładne zakresy różnych witryn, aby przeczytać o dokładnych zakresach każdego z nich?
Martijn

Tak, to trudne, wycieczka i centrum pomocy dla każdego jest dobrym miejscem do rozpoczęcia. Mamy też wyjaśnienia niektórych punktów w naszym meta w szczególności i odpowiednie dla Ciebie meta.serverfault.com/questions/5586/... .

Hmm. Chociaż się z tym nie zgadzam, jestem zbyt nowym przybyszem, aby ta opinia mogła mieć jakąkolwiek wagę. Jednocześnie wydaje mi się, że przynajmniej tyle dotyczy tematyki na Unixie i Linuksie. Poproszę o migrację.
Martijn

Odpowiedzi:


5

Spróbuj (jako root): -

systemctl disable graphical.target

Po ponownym uruchomieniu powinieneś być w multi-usertrybie, a nie w trybie graphical.

Jeśli to się nie powiedzie, sprawdź domyślny cel: -

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

Należy zauważyć, że jedyna różnica w ścieżkach jest katalog najwyższego poziomu - albo /libalbo /etc.

Powyższe powinno być miękkim linkiem do multi-user.target. Jeśli wskazuje, graphical.targetto zmień go za pomocą (jako 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

w zależności od tego, gdzie znaleziono miękkie łącze w poprzednim ls -lpoleceniu.

Uruchom ponownie i mam nadzieję, że Twój menedżer wyświetlania nie uruchomi się.

Aby zobaczyć, jakie masz cele, uruchom: -

systemctl --all -t target

być może zaskakujące, że wciąż ląduje mnie w lightdm
Martijn

Hmm Zaskoczony też. Zrobiłem trochę więcej kopania - problem polega na tym, że mogę teraz tylko SSH do VPS i nie mam przed sobą systemu graficznego, który mógłby sprawdzić moje myśli!
garethTheRed

Redagowałem, teraz, gdy mam dostęp do prawdziwego systemu.
garethTheRed

Co dziwne, wciąż zaczyna lightdm, mimo że default.target w /etc/systemd/system/default.target jest symlinkowany do /lib/systemd/system/multi-user.target, a systemctl list-units == type = target nie lista graficzna. cel jako aktywny. Mam wrażenie, że jest to spowodowane obecnymi skryptami awaryjnymi init.d; Nie znalazłem jeszcze przyczyny tego problemu, ale mój problem osobisty odchodzi od bycia użytecznym pytaniem o charakterze ogólnym i staje się bardziej pytaniem na forum „pomóż mi naprawić mój problem”. Byłbym wdzięczny za dalszą pomoc, ale przyznam, że nie należy już do wymiany stosów.
Martijn

1
Prawidłowy sposób tosystemctl set-default multi-user
Majenko

7

systemctl disablenie działa, jeśli źródłem jest init.dskrypt. Co powinienem zrobić, aby wyłączyć lightdmuruchamianie przy rozruchu?

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ę:

systemctl mask lightdm.service

Albo tworzysz własny plik jednostki, /etc/systemd/system/lightdm.servicektóry następnie staje się właściwym obywatelem systemowym pierwszej klasy, który można włączać i wyłączać za pomocą poleceń enablei disable. Pliki jednostek zastępują init.dpliki o tej samej nazwie basename. Jeśli chcesz, możesz nazwać to, lightdm.serviceco napisali ludzie Debiana. ☺

Dalsza lektura


2

Możesz włączać i wyłączać skrypty inicjujące za update-rc.dpomocą Debiana. Zastosowanie update-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).

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.