12.2. I runlevel

Tutti i file che controllano la procedura di avvio del sistema sono situati nella directory /etc/rc.d . Quello che segue è l'elenco dei file:

$ ls /etc/rc.d 
init.d/  rc.local*    rc0.d/  rc2.d/  rc4.d/  rc6.d/
rc*      rc.sysinit*  rc1.d/  rc3.d/  rc5.d/

Come abbiamo visto, per prima cosa all'avvio del sistema viene eseguito lo script rc.sysinit Questo è il file responsabile della configurazione iniziale della macchina: tipo di tastiera, configurazione di alcuni dispositivi, controllo dei filesystem, etc.

Subito dopo viene eseguito lo script rc con un numero di runlevel come argomento. Come sappiamo, il runlevel è indicato da un numero intero: per ogni runlevel <x> che è stato definito esiste una directory rc<x>.d corrispondente. In un'installazione tipica di Linux-Mandrake troverete 6 runlevel predefiniti, che sono:

Tanto per fare un esempio, diamo un'occhiata al contenuto della directory rc5.d:

$ ls rc5.d
K15postgresql@  K60atd@      S15netfs@   S60lpd@        S90xfs@
K20nfs@         K96pcmcia@   S20random@  S60nfs@        S99linuxconf@
K20rstatd@      S05apmd@     S30syslog@  S66yppasswdd@  S99local@
K20rusersd@     S10network@  S40crond@   S75keytable@
K20rwhod@       S11portmap@  S50inet@    S85gpm@
K30sendmail@    S12ypserv@   S55named@   S85httpd@
K35smb@         S13ypbind@   S55routed@  S85sound@

Come potete vedere, tutti i file di questa directory sono link simbolici, e tutti hanno un nome in un formato particolare. Questo formato corrisponde allo schema <S|K><ordine><nome_servizio>. La lettera S sta per Start, "avvia" un servizio, e la K indica Kill, "ferma" il servizio. Gli script vengono eseguiti secondo un ordine ascendente, e se due script hanno lo stesso numero vengono eseguiti in ordine alfabetico. Noterete anche che ciascun link simbolico punta agli script che si trovano nella directory /etc/rc.d/init.d (tranne quello indicato dal nome local), e sono questi ultimi a controllare effettivamente ogni singolo servizio.

Quando entra in un determinato runlevel, il sistema comincia a eseguire i link contrassegnati dalla lettera K secondo l'ordine predefinito: rc controlla dove punta il link, quindi esegue lo script relativo con stop come unico argomento. Subito dopo vengono eseguiti gli script di tipo S seguendo la stessa procedura, solo che stavolta vengono chiamati fornendogli l'argomento start.

Così, senza che sia necessario menzionare tutti gli script, quando il sistema entra nel runlevel 5 rc per prima cosa esegue K15postgresql, ovvero /etc/rc.d/init.d/postgresql stop, poi K20nfs, quindi K20rstatd, e così via, fino all'ultimo; subito dopo esegue tutti gli script di tipo S: per primo S05ampd, che chiama /etc/rc.d/init.d/apmd start, e via di seguito.

Con questi strumenti siete liberi di creare, con poca fatica, i vostri runlevel personalizzati, o di impedire a un servizio di partire o di fermarsi cancellando il corrispondente link simbolico (ci sono anche dei programmi dotati di interfaccia per fare questo, tra cui citiamo DrakXServices e chkconfig; il primo è un programma grafico).


Tux on Star from MandrakeSoft Linux è un trademark registrato di Linus Torvalds. Tutti gli altri copyright e trademark appartengono ai rispettivi proprietari.
A meno che non sia specificato diversamente, tutto il contenuto di queste pagine e tutte le immagini sono Copyright MandrakeSoft S.A. e MandrakeSoft Inc. 2000.
http://www.linux-mandrake.com/