|
Processi in fase di avvio
System V Init
Il programma init viene avviato dal kernel all'avvio del computer. Si occupa di gestire tutti processi necessari allo
svolgimento delle operazioni comuni. Il modello SysV Init è diventato lo standard in ambiente GNU/Linux perché è
molto più semplice e flessibile da utilizzare del tradizionale BSD Init.
Le configurazioni sono posizionate nella directory etc/ dove potrete trovare le seguenti directory di riferimento:
init.d
rc.boot
rcS.d
rc0.d
rc1.d
rc2.d
rc3.d
rc4.d
rc5.d
rc6.d
Le directory rc#.d con # un numero intero da 1 a 6 rappresentano i processi da eseguire per ogni tipo di
runlevel e può divergere tra le varie distribuzioni; al momento, lo schema presentato è lo standard de facto.
Gestione dei demoni di sistema
La directory init.d contiene un numero cospicuo di file che vengono eseguiti per eseguire i principali comandi e processi
di sistema. Se volessimo lanciare un processo successivamente alla fase di Avvio è possibile farlo digitando:
# /etc/init.d/lpd start
Il demone di stampa viene lanciato mentre per fermarlo:
# /etc/init.d/lpd stop
Esiste anche la possibilità di riavviare il processo con:
# /etc/init.d/lpd restart
Nella fase di avvio la sequenza di esecuzione seguita da init.d è la seguente:
init esegue il file /etc/rcS
-
init avvia tutti i file per il runlevel specifico
-
init avvia il file /etc/rc.local
I Runlevel di Init
Esistono 7 runlevel e i relativi file di configurazione sono divisi nelle directory precedentemente viste in /etc/rc.d/
nella forma rc#.d. I runlevel determinano particolari stati del vostro sistema:
0 Sistema spento <= riservato
1 Modalità utente singolo <= riservato
2 Modalità multi-utente senza servizio NFS
3 Modalità multi-utente, la modalità di base
4 Non utilizzata
5 Modalità grafica in ambiente X
6 Riavvio <= riservato
Il tipo di runlevel viene indicato dal file /etc/inittab che presenta al suo interno una linea del tipo:
id:3:initdefault:
Se è nelle vostre intenzioni avviare il vostro sistema direttamente con l'interfaccia X Window basterà sostituire il
valore 3 con 5, quello del runlevel specifico. Il vostro file /etc/inittab potrà risultare come segue:
# Default runlevel. The runlevels used by RHS are:
# 0 - halt (Do NOT set initdefault to this)
# 1 - Single user mode
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
# 3 - Full multiuser mode
# 4 - unused
# 5 - X11
# 6 - reboot (Do NOT set initdefault to this)
#
id:5:initdefault:
# System initialization.
si::sysinit:/etc/rc.d/rc.sysinit
l0:0:wait:/etc/rc.d/rc 0
l1:1:wait:/etc/rc.d/rc 1
l2:2:wait:/etc/rc.d/rc 2
l3:3:wait:/etc/rc.d/rc 3
l4:4:wait:/etc/rc.d/rc 4
l5:5:wait:/etc/rc.d/rc 5
l6:6:wait:/etc/rc.d/rc 6
# Things to run in every runlevel
ud::once:/sbin/update
# Trap CTRL-ALT-DELETE
ca::ctrlaltdel:/sbin/shutdown -t3 -r now
# When our UPS tells us power has failed, assume we have a few minutes
# of power left. Schedule a shutdown for 2 minutes from now.
# This does, of course, assume you have powerd installed and your
# UPS connected and working correctly.
pf::powerfail:/sbin/shutdown-f -h +2 `¨Power Failure; System Shutting Down`
# If power was restored before the shutdown kicked in, cancel it.
pr:12345:powerokwait:/sbin/shutdown -c `¨Power Restored; Shutdown Cancelled`
# Run gettys in standard runlevels
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6
# Run xdm in runlevel 5
# xdm is now a separate service
x:5:respawn:/etc/X11/prefdm -nodaemon
Gli utenti SuSE hanno una differente organizzazione dei runlevel ed è possibile capire le differenze con un semplice
$ cat /etc/inittab
|