6Jul
All'avvio di un sistema Linux, inserisce il suo runlevel predefinito ed esegue gli script di avvio associati a quel runlevel.È anche possibile passare da un runlevel all'altro; ad esempio, esiste un runlevel progettato per operazioni di ripristino e manutenzione.
Tradizionalmente, Linux utilizzava script di init in stile System V - mentre i nuovi sistemi di init finiscono per avere obsoleti i runlevel tradizionali, non lo sono ancora. Ad esempio, il sistema Upstart di Ubuntu utilizza ancora gli script in stile System V tradizionali.
Cos'è un runlevel?
All'avvio di un sistema Linux, avvia i processi init .init è responsabile dell'avvio degli altri processi sul sistema. Ad esempio, quando avvii il tuo 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 una sola serie di script di avvio init. Esistono più livelli di esecuzione con i propri script di avvio: ad esempio, un runlevel può portare in 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 da "modalità desktop grafico" a "modalità console di testo senza rete" con un singolo comando, senza avviare e arrestare manualmente servizi diversi.
In particolare, init esegue gli script che si trovano in una directory specifica che corrisponde al runlevel. Ad esempio, quando si inserisce runlevel 3 su Ubuntu, init esegue gli script che si trovano nella directory rc3.d di /etc/.
Almeno, questo è il modo in cui funziona con un sistema di avvio System V tradizionale: le distribuzioni Linux stanno iniziando a sostituire il vecchio sistema System V init. Mentre Upstart di Ubuntu attualmente mantiene la compatibilità con gli script di inizializzazione SysV, è probabile che cambi in futuro.
I runlevel
Alcuni runlevel sono standard tra le distribuzioni Linux, mentre alcuni runlevel variano dalla distribuzione alla distribuzione.
I seguenti runlevel sono standard:
- 0 - Halt ( Arresta il sistema.)
- 1 - Modalità utente singolo ( Il sistema si avvia in modalità superutente senza avviare daemon o rete. Ideale per l'avvio in un ambiente di ripristino o di diagnostica.)
- 6 - Riavvia
I runlevel 2-5 variano a seconda della distribuzione. Ad esempio, su Ubuntu e Debian, i runlevel 2-5 sono uguali e forniscono una modalità multiutente completa con accesso di rete e grafico. Su Fedora e Red Hat, runlevel 2 fornisce modalità multiutente senza rete( solo accesso alla console), runlevel 3 fornisce modalità multiutente con networking( solo accesso alla console), runlevel 4 non utilizzato e runlevel 5 fornisce modalità multiutente conconnessione di rete e accesso grafico.
Passaggio a un runlevel diverso
Per passare a un runlevel diverso mentre il sistema è già in esecuzione, utilizzare il seguente comando:
sudo telinit #
Sostituire # con il numero del runlevel a cui si desidera passare. Ometti sudo ed esegui il comando come root se stai eseguendo una distribuzione che non usa sudo.
Avvio diretto a un runlevel specifico
È possibile selezionare un runlevel da avviare dal boot loader - Grub, ad esempio. All'inizio del processo di avvio, premere un tasto per accedere a Grub, selezionare la voce di avvio e premere e per modificarlo.
È possibile aggiungere singolo alla fine della linea linux per immettere il runlevel per utente singolo( runlevel 1).(Premi Ctrl + x per avviare dopo.) Questa è la stessa opzione di ripristino in Grub.
Tradizionalmente, è possibile specificare un numero come parametro del kernel e si dovrebbe avviare tale runlevel, ad esempio utilizzando 3 anziché singolo per avviare il runlevel 3. Tuttavia, questo non sembra funzionare sulle versioni più recentidi 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 il sistema 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 avviarsi quando un dispositivo hardware è connesso al sistema e fermarsi quando il dispositivo viene rimosso). Fedora ha anche il suo successoreinizializzare, systemd.