Provided by:
manpages-it_0.3.4-5_all 
NOME
init, telinit - inizializzatore del controllore dei processi
SINTASSI
/sbin/init [ -t sec ] [ 0123456SsQq ]
/sbin/telinit [ -t sec ] [ 0123456sSQqabc ]
DESCRIZIONE
Init
Init è il padre di tutti i processi. Il suo compito principale è di
creare processi da uno script immagazzinato nel file /etc/inittab (si
veda inittab(5)). Questo file ha, di solito, delle voci che fanno sì
che init avvii getty su ogni riga nella quale possono loggarsi gli
utenti. Controlla anche processi autonomi richiesti da qualsiasi
sistema.
RUNLEVEL
Un runlevel è una configurazione software del sistema che permette
l’esistenza solo di un gruppo selezionato di processi. I processi
avviati da init per ognuno di questi runlevel sono definiti nel file
/etc/inittab. Init può essere in uno degli otto runlevel, 0â€â€“6 e S o s.
Il runlevel è cambiato da un utente privilegiato lanciando
/sbin/telinit, il quale invia un segnale appropriato a init,
indicandogli a quale runlevel passare.
I runlevel 0, 1 e 6 sono riservati. Il runlevel 0 è usato per fermare
(halt) il sistema, il runlevel 6 è usato per riavviare (reboot) il
sistema e il runlevel 1 è usato per portare il sistema in single user
mode. Il runlevel S non è in realtà pensato per essere usato
direttamente, ma più che altro per gli script che sono eseguiti quando
si entra nel runlevel 1. Per maggiori informazioni su questo, si vedano
le pagine di manuale di shutdown(1) e inittab(5).
Sono validi anche i runlevel 7-9, sebbene non realmente documentati.
Ciò perché le varianti di Unix "tradizionali" non li usano. Nel caso
lo si voglia sapere, i runlevel S e s sono di fatto lo stesso.
Internamente sono un alias per lo stesso runlevel - ciò è solo un
rimasuglio del modo che l’autore usò quando scrisse sysvinit.
AVVIAMENTO
Dopo che init è lanciato come ultimo passo dell’avvio (boot) del
kernel, cerca se nel file /etc/inittab c’è una voce del tipo
initdefault (si veda inittab(5)). initdefault specifica il runlevel
iniziale del sistema. Se non c’è tale voce o non c’è il file
/etc/inittab, un runlevel deve essere immesso nella console del
sistema.
Il runlevel S o s porta il sistema in modalità utente singolo (single
user mode) e non necessita del file /etc/inittab. In modalità single
user, è lanciato /bin/sh in /dev/console.
Quando si entra in single user mode, init legge lo stato ioctl(2) della
console da /etc/ioctl.save. Se questo file non esiste, init inizializza
la linea a 9600 baud e con le impostazioni CLOCAL. Quando init lascia
il single user mode, salva le impostazioni ioctl della console in
questo file cosicché possa riusarli nella successiva sessione in
single-user.
Quando si entra per la prima volta in modalità multiutente, init esegue
le voci boot e bootwait che permettono al filesystem di essere montato
prima che un utente possa loggarsi. Poi sono eseguite tutte le voci
corrispondenti al runlevel.
Quando avvia un nuovo processo, init per prima cosa guarda se esiste il
file /etc/initscript. Se c’è, usa questo script per far partire il
processo.
Ogni volta che un processo figlio termina, init salva questo fatto e la
ragione per la quale è morto nei file /var/run/utmp e /var/log/wtmp (se
esistono).
CAMBIO DI RUNLEVEL
Dopo aver avviato tutti i processi specificati, init aspetta che uno
dei suoi processi figlio muoia, un segnale di powerfail, o fino a che
non riceve un segnale da /sbin/telinit per cambiare il runlevel del
sistema. Quando avviene una delle tre condizioni suddette, riesamina il
file /etc/inittab. A questo file possono essere aggiunte nuove voci
quando si vuole. Comunque, init aspetta sempre che avvenga una delle
tre condizioni suddette. Per ottenere una risposta istantanea, si
possono usare i comandi Q o q per risvegliare init e fargli
riesaminare il file /etc/inittab.
Se init non è in single user mode e riceve un segnale di powerfail,
saranno invocate apposite voci per il powerfail.
Quando a init è richiesto di cambiare il runlevel, invia il segnale di
avviso SIGTERM a tutti i processi che non sono definiti nel nuovo
runlevel. Poi aspetta 5 secondi prima di terminare forzatamente questi
processi tramite il segnale di kill SIGKILL. Si noti che init suppone
che tutti questi processi (e i loro discendenti) rimangano nello stesso
gruppo di processi nel quale init li ha creati in origine. Se un
qualsiasi processo cambia il suo process group non riceverà questi
segnali. Questi processi devono essere terminati a parte.
TELINIT
/sbin/telinit è linkato a /sbin/init. Accetta un carattere singolo
come argomento e segnala a init di effettuare le azioni appropriate. I
seguenti argomenti servono come direttive a /sbin/telinit:
0,1,2,3,4,5 o 6
dicono a /sbin/init di passare al runlevel specificato.
a,b,c dicono a /sbin/init di processare solo quelle voci del file
/etc/inittab che hanno runlevel a,b o c.
Q o q dice a /sbin/init di riesaminare il file /etc/inittab.
S o s dice a /sbin/init di passare in single user mode.
/sbin/telinit può dire a init anche quanto tempo dovrebbe attendere tra
l’invio ai processi del TERM signal e l’invio del KILL signal; di
default è 5 secondi, ma può essere cambiato con l’opzione -t sec.
/sbin/telinit può essere invocato solo da utenti con i privilegi
appositi.
FILE
/etc/inittab
/etc/initscript
/dev/console
/etc/ioctl.save
/var/run/utmp
/var/log/wtmp
/dev/initctl
AMBIENTE
Init imposta le seguenti variabili d’ambiente per tutti i suoi figli:
PATH Di default a /bin:/usr/bin:
INIT_VERSION
A quel che dice il nome. Utile per determinare se uno script è
stato lanciato direttamente da init.
RUNLEVEL
Il runlevel attuale del sistema.
PREVLEVEL
Il runlevel precedente (utile dopo un cambio di runlevel).
BOOTFLAG
È possibile passare diverse opzioni a init dal bootmonitor (p.es.
LILO). Init accetta i flag seguenti:
S, single
Boot in single user mode. In questa modalità è esaminato
/etc/inittab e lo script rc bootp è di solito eseguito prima di
avviare la shell del single user mode.
1-5 Runlevel nei quali fare il boot.
-b, emergency
Fa il boot direttamente nella single user shell senza lanciare
nessun altro script di startup.
CONFORME A
Init è compatibile con il System V init. Lavora in stretto ‘‘contatto’’
con gli script nelle directory /etc/init.d e /etc/rc{runlevel}.d. Se il
proprio sistema usa queste convenzioni, ci dovrebbe essere un file
README nella directory /etc/init.d che spiega come funzionano questi
script.
AVVERTENZE
Init suppone che i processi e i loro discendenti rimangano nello stesso
process group che è stato originariamente creato per loro. Se i
processi cambiano il loro gruppo, init non può killarli e si potrebbe
finire con due processi che leggono da una linea del terminale.
DIAGNOSTICA
Se /sbin/init si accorge che sta eseguendo una voce per più di 10 volte
in 2 minuti, supponerà che ci sia un errore nella stringa di comando, e
genererà un messaggio d’errore nella console del sistema, e si
rifiuterà di rieseguire questa voce finché non siano passati 5 minuti o
riceva un signal. Ciò per evitare che init si ‘‘mangi’’ tutte le
risorse del sistema quando qualcuno fa un errore tipografico nel file
/etc/inittab o è rimosso il programma che deve essere lanciato nella
voce.
AUTORE
Miquel van Smoorenburg (miquels@cistron.nl), pagina di manuale iniziale
di Michael Haardt (u31b3hs@pool.informatik.rwth-aachen.de).
Traduzione di Giovanni Bortolozzo <borto@dei.unipd.it>
VEDERE ANCHE
getty(1), login(1), sh(1), who(1), shutdown(1), kill(2), inittab(5),
initscript(5), utmp(5)
29 ottobre 1996 INIT(8)