/ / Cosa sono i "runlevel" su Linux?

Cosa sono i "runlevel" su Linux?

Immagine

Quando un sistema Linux si avvia, entra nel suo valore predefinitorunlevel ed esegue gli script di avvio associati a quel runlevel. Puoi anche passare da un runlevel all'altro: ad esempio, esiste un runlevel progettato per le operazioni di ripristino e manutenzione.

Tradizionalmente, Linux utilizzava System V in stile initscript - mentre i nuovi sistemi init alla fine diventeranno obsoleti runlevel tradizionali, non lo hanno ancora fatto. Ad esempio, il sistema Upstart di Ubuntu utilizza ancora i tradizionali script in stile System V.

Che cos'è un runlevel?

Quando un sistema Linux si avvia, avvia il file dentro processi. init è responsabile dell'avvio degli altri processi sul sistema. Ad esempio, quando si avvia il computer Linux, il kernel avvia init e init esegue gli script di avvio per inizializzare l'hardware, attivare la rete, avviare il desktop grafico.

Tuttavia, non esiste un solo set discript di avvio init esegue. Esistono più livelli di esecuzione con i propri script di avvio: ad esempio, un runlevel può attivare la rete e avviare il desktop grafico, mentre un altro runlevel può lasciare la rete disabilitata e saltare il desktop grafico. Ciò significa che è possibile passare dalla "modalità desktop grafica" alla "modalità console di testo senza rete" con un solo comando, senza avviare e arrestare manualmente diversi servizi.

Più specificamente, init esegue gli script individuatiin una directory specifica che corrisponde al runlevel. Ad esempio, quando inserisci runlevel 3 su Ubuntu, init esegue gli script che si trovano nella directory /etc/rc3.d.

Immagine

Almeno, è così che funziona con un tradizionaleSistema init System V - Le distribuzioni Linux stanno iniziando a sostituire il vecchio sistema init System V. Sebbene Upstart di Ubuntu mantenga attualmente la compatibilità con gli script di inizializzazione SysV, è probabile che questo cambi in futuro.

I runlevel

Alcuni runlevel sono standard tra le distribuzioni Linux, mentre alcuni runlevel variano da distribuzione a distribuzione.

I seguenti runlevel sono standard:

  • 0 - arresto (Arresta il sistema.)
  • 1 - Modalità utente singolo (Il sistema si avvia in modalità superutente senza avviare daemon o reti. Ideale per l'avvio in un ambiente di ripristino o di diagnostica.)
  • 6 - Reboot

I runlevel 2-5 variano a seconda della distribuzione. Ad esempio, su Ubuntu e Debian, i runlevel 2-5 sono gli stessi e forniscono una modalità multiutente completa con rete e login grafico. Su Fedora e Red Hat, runlevel 2 offre modalità multiutente senza rete (solo accesso console), runlevel 3 fornisce modalità multiutente con rete (solo accesso console), runlevel 4 non è utilizzato e runlevel 5 offre modalità multiutente con collegamento in rete e accesso grafico.

Passare a un Runlevel diverso

Per passare a un runlevel diverso mentre il sistema è già in esecuzione, utilizzare il comando seguente:

sudo telinit #

Sostituisci # con il numero del runlevel a cui vuoi passare. Ometti sudo ed esegui il comando come root se stai eseguendo una distribuzione che non utilizza sudo.

Immagine

Avvio diretto su un runlevel specifico

È possibile selezionare un runlevel da avviare dal boot loader, ad esempio Grub. All'inizio del processo di avvio, premere un tasto per accedere a Grub, selezionare la voce di avvio e premere e per modificarlo.

sshot-1

Puoi aggiungere singolo fino alla fine del linux riga per inserire il runlevel per utente singolo (runlevel 1). (Premi Ctrl + x per avviare dopo.) È uguale all'opzione della modalità di recupero in Grub.

Immagine

Tradizionalmente, potresti specificare un numero come parametro del kernel e avvieresti a quel runlevel - per esempio, usando 3 invece di singolo per avviare il runlevel 3. Tuttavia, questo non sembra funzionare con le ultime versioni di Ubuntu - Upstart non sembra consentirlo. Allo stesso modo, il modo in cui cambi il runlevel predefinito dipenderà dalla tua distribuzione.


Mentre il demone Upstart di Ubuntu emula ancora ilSistema init SystemV, molte di queste informazioni cambieranno in futuro. Ad esempio, Upstart è basato su eventi: può arrestare e avviare servizi quando si verificano eventi (ad esempio, un servizio potrebbe iniziare quando un dispositivo hardware è collegato al sistema e arrestarsi quando il dispositivo viene rimosso.) Fedora ha anche il suo successore per init, systemd.