Come posso cambiare il runlevel su systemd?


27

Abbastanza semplice, sto cercando di cambiare il runlevel. Tutto ciò che trovo online mi indica il file che si trova in:

/etc/init/rc-sysinit.conf

Qui ho provato a cambiare "DEFAULT_RUNLEVEL" in 3 o qualsiasi altra cosa e non fa alcuna differenza (il valore originale era 2 che non aveva neanche molto senso). In ogni caso, la mia macchina si avvia completamente e quando controllo il comando runlevel, vedo sempre "N 5" come risultato.

Come cambio il runlevel? Preferirei non ignorarlo tramite grub o altri meccanismi di soluzione. E non sto cercando come disabilitare X in modo specifico.

Tutte le istruzioni che stavo trovando online erano un po 'vecchie, qualcosa è cambiato con 16.04?


Quindi vuoi cambiarlo manualmente dopo l'avvio o avviare automaticamente ogni volta un runlevel diverso?
Byte Commander

automatico ogni volta. È stato impostato con Ubuntu Desktop, ma ora voglio abbassare il runlevel e metterlo in un angolo da qualche parte.
Gnomed

In realtà, perché vuoi cambiare il runlevel? Vuoi avviare solo un'interfaccia terminale invece di caricare il desktop? In tal caso dovresti invece modificare i carichi standard di systemd all'avvio e aggiungere l'opzione del kernel "text".
Byte Commander

4
Probabilmente perché dal 15.10 Ubuntu usa systemdinvece upstarte quel file di cui stai parlando è per upstart. Se leggi articoli ancora più vecchi, troverai anche i modi per i vecchi init. Ma con systemd, puoi semplicemente passare dalla GUI alla modalità testo usando sudo systemctl start graphical.targete sudo systemctl start multi-user.target.
Byte Commander

5
Per tutti i recensori Questa è una domanda valida! Ci È un modo per cambiare il runlevel (anche se non si chiama "runlevel" o "target") utilizzandosystemctl isolate
Ron

Risposte:


50

Ubuntu 16.04 usa systemd invece di init e quindi il concetto di runlevelsè sostituito dal termine targets. Quindi esiste davvero una mappatura tra runlevel basati su init e target basati su systemd:

   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     │
   └─────────┴───────────────────┘

Ora, per cambiare semplicemente i "runlevel" in 16.04, puoi usare per esempio:

sudo systemctl isolate multi-user.target

Per rendere questo "runlevel" predefinito, puoi usare:

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

A partire dal 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

Dai anche un'occhiata man systemd.specialper saperne di più sugli obiettivi in ​​systemd.


Ciao @Ron la tua risposta è ottima L'ho fatto per installare il driver ufficiale Nvidia ma ora il mio schermo non mostra altro che una schermata blu. Come posso risolvere questo problema? Grazie in anticipo per il tuo aiuto.
Raphael Teubner,

Entra in modalità di ripristino da Grub, quindi come root ripristina il runlevel precedente.
LottaLava,

si. Stavo solo per commentare come i ragazzi che danno questi comandi estremamente belli di passare da gui boot a text-mode non si preoccupino affatto di dirci come tornare da text-boot a gui boot.
Nyxee,

Quindi, solo per notare, corro sudo systemctl set-default multi-user.targetin modalità GUI, al riavvio, ho una schermata vuota, che era un buon segno che la GUI non era riuscita ad avviarsi, quindi ho premuto Ctrl-Alt-F3per accedere a Runlevel 3, ho fatto quello che mi serviva (installato NVIDIA- CUDA), esegui sudo systemctl set-default graphical.targete torna alla schermata di accesso della GUI. Ma ora non riesco ad accedere. È questo il modo corretto di tornare al runlevel precedente ?
Nyxee,

2
@nyxee: Sì, sudo systemctl set-default graphical.targetè il modo corretto di tornare all'ambiente desktop della GUI. Il tuo errore di accesso sembra non correlato al passaggio tra i runlevel - sembra più il problema del loop di avvio di nVidia . Per scoprirlo di sicuro, torna al runlevel 3, rimuovi i driver nVidia e Cuda, installa un driver nVidia dal repository, imposta di default su runlevel 5 (graphical.target), quindi riavvia e vedi se riesci ad accedere.
Andy Turfer,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.