Linux-Mandrake: Manuale di riferimento | ||
---|---|---|
Indietro | Capitolo 12. I file di avvio del sistema: init "System V" | Avanti |
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:
0: Arresto completo della macchina;
1: Modalitàmonoutente;, va utilizzata in caso di gravi problemi del sistema o per operazioni di recupero in seguito a un crash.
2: Modalità multiutente, senza accesso alla rete;
3: Modalità multi-user, con accesso alla rete;
4: Inutilizzato;
5: Come il 3, ma con il lancio dell'interfaccia grafica;
6: Riavvio del sistema.
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).