Jak zmienić poziom uruchamiania w systemied?

27

Całkiem proste, próbuję zmienić poziom działania. Wszystko, co znajdę online, wskazuje mi plik znajdujący się w:

/etc/init/rc-sysinit.conf

Tutaj próbowałem zmienić „DEFAULT_RUNLEVEL” na 3 lub cokolwiek innego i to nie ma znaczenia (pierwotna wartość wynosiła 2, co też nie miało większego sensu). Bez względu na wszystko, moja maszyna uruchamia się w pełni, a gdy sprawdzam polecenie poziomu pracy, za każdym razem widzę wynik „N 5”.

Jak zmienić poziom działania? Wolałbym nie zastępować go za pomocą gruba lub innego mechanizmu obejścia. I nie szukam konkretnie sposobu wyłączania X.

Wszystkie instrukcje, które znajdowałem w Internecie, były trochę stare, czy coś się zmieniło z 16.04?

krasnoludek
źródło
Czy chcesz go zmienić ręcznie po uruchomieniu lub za każdym razem automatycznie uruchamiać na innym poziomie działania?
Bajt Dowódca
automatyczne za każdym razem. Został skonfigurowany z pulpitem Ubuntu, ale teraz chcę obniżyć poziom działania i umieścić go gdzieś w rogu.
skomentował
Właściwie, dlaczego chcesz zmienić poziom działania? Czy chcesz ładować tylko interfejs terminalu zamiast ładować pulpit? W takim przypadku powinieneś zamiast tego zmodyfikować standardowe docelowe ładunki systemowe podczas rozruchu i dodać opcję jądra „tekstową”.
Bajt Dowódca
4
Prawdopodobnie dlatego, że od 15.10 Ubuntu używa systemdzamiast tego, upstarta plik, o którym mówisz, jest przeznaczony upstart. Jeśli czytasz nawet starsze artykuły, znajdziesz również sposoby na stare init. Ale za pomocą systemdmożesz po prostu przełączać między GUI a trybem tekstowym za pomocą sudo systemctl start graphical.targeti sudo systemctl start multi-user.target.
Bajt Dowódca
5
Do wszystkich recenzentów To ważne pytanie! Istnieje JEST sposób, aby zmienić poziom pracy (czy nie jest on nazywany „poziomy pracy” lub „cele”), stosującsystemctl isolate
Ron

Odpowiedzi:

50

Ubuntu 16.04 używa systemd zamiast init, dlatego pojęcie runlevelszastępuje się terminem targets. Rzeczywiście istnieje mapowanie między poziomami uruchamiania opartymi na inicjatywie a celami opartymi na systemie:

   Mapping between runlevels and systemd targets
   ┌─────────┬───────────────────┐
   │Runlevel │ Target            │
   ├─────────┼───────────────────┤
   │0        │ poweroff.target   │
   ├─────────┼───────────────────┤
   │1        │ rescue.target     │
   ├─────────┼───────────────────┤
   │2, 3, 4  │ multi-user.target │
   ├─────────┼───────────────────┤
   │5        │ graphical.target  │
   ├─────────┼───────────────────┤
   │6        │ reboot.target     │
   └─────────┴───────────────────┘

Teraz, aby po prostu zmienić „poziomy pracy” w 16.04, możesz użyć np .:

sudo systemctl isolate multi-user.target

Aby ustawić to jako „poziom działania”, możesz użyć:

sudo systemctl enable multi-user.target
sudo systemctl set-default multi-user.target

Z man systemctl

   isolate NAME
       Start the unit specified on the command line and its dependencies and stop all others. If
       a unit name with no extension is given, an extension of ".target" will be assumed.

       This is similar to changing the runlevel in a traditional init system. The isolate command
       will immediately stop processes that are not enabled in the new unit, possibly including
       the graphical environment or terminal you are currently using

Zobacz także, man systemd.specialaby dowiedzieć się więcej o celach w systemd.

Ron
źródło
Cześć @Ron twoja odpowiedź jest świetna Zrobiłem to, aby zainstalować oficjalny sterownik Nvidii, ale teraz mój ekran nie pokazuje nic oprócz niebieskiego ekranu. Jak mogę to naprawić? Z góry dziękuję za pomoc.
Raphael Teubner,
Wejdź do trybu odzyskiwania z Grub, a następnie jako root powróć do poprzedniego poziomu uruchamiania.
LottaLava
Tak. Chciałem tylko skomentować, w jaki sposób faceci wydający te niezwykle miłe polecenia przejścia z rozruchu GUI do trybu tekstowego wcale nie dbają o to, aby powiedzieć nam, jak wrócić z rozruchu tekstowego do rozruchu GUI.
nyxee,
Więc, aby zauważyć, uruchamiam sudo systemctl set-default multi-user.targetw trybie GUI, po ponownym uruchomieniu dostałem pusty ekran, co było dobrym znakiem, że GUI nie uruchomiło się, więc nacisnąłem, Ctrl-Alt-F3aby wejść w Runlevel 3, zrobiłem to, czego potrzebowałem (zainstalowałem NVIDIA- CUDA), uruchom sudo systemctl set-default graphical.targeti wróć do ekranu logowania GUI. Ale nie udało mi się teraz zalogować. Czy to właściwy sposób powrotu do poprzedniego poziomu pracy ?
nyxee,
2
@nyxee - Tak, sudo systemctl set-default graphical.targetjest prawidłowym sposobem powrotu do środowiska graficznego GUI. Twój błąd logowania wydaje się niezwiązany z przełączaniem między poziomami działania - bardziej przypomina problem z pętlą rozruchową nVidia . Aby się upewnić, przejdź do poziomu 3, usuń sterowniki nVidia i Cuda, zainstaluj sterownik nVidia z repozytorium, ustaw domyślnie poziom uruchamiania 5 (graphical.target), a następnie uruchom ponownie i sprawdź, czy możesz się zalogować.
Andy Turfer