Il processo di avvio, init e shutdown

Questa sezione contiene informazioni su quello che succede quando un sistema Red Hat Linux si avvia e si spegne.

Dietro le quinte del processo di avvio

Quando un computer esegue un processo di avvio il processore controlla la memoria di sistema per conto del BIOS (Basic Input/Output System). Il BIOS è memorizzato nella memoria permanente di sola lettura, e viene utilizzato per avviare la macchina. Il BIOS provvede al controllo di più basso livello delle le periferiche e controlla i primi passi del processo di avvio.

Il BIOS verifica il funzionamento del sistema, rileva e controlla le periferiche e cerca una periferica dalla quale eseguire il processo di avvio. In genere la prima ad essere trovata è il floppy drive, (o il CD_ROM su molti sistemi più recenti), se presente, successivamente cerca di eseguire l'avvio dal disco rigido. Legge il Master Boot Record (MBR) che inizia sul primo settore del primo disco ed esegue il codice in esso contenuti.

L'MBR cerca la prima partizione attiva e legge il suo boot record. Il boot record contiene le istruzioni su come caricare il boot loader LILO (LInux LOader). L'MBR carica il LILO ed esso avvia il processo di caricamento di Red Hat Linux.

LILO legge il file /etc/lilo.conf, che specifica per quale sistema operativo o per quale kernel deve eseguire il processo di avvio. Fa apparire un prompt, il prompt di LILO appunto, ed attende, per un periodo di tempo predefinito (anch'esso configurato in lilo.conf) un input dall'utente. Se il vostro lilo.conf è configurato per fornire un scelta su quale sistema operativo avviare, allora potete inserire la label per qualsiasi sistema vogliate eseguire il boot.

Dopo aver atteso, (di solito 5 secondi), LILO procede all'avvio del sistema definito di default in lilo.conf.

Se LILO sta eseguendo il boot per Linux, come primo passo carica il kernel, per esempio vmlinuz-2.2.15-xx collocato nel directory /boot.

Il kernel cerca in alcune directory il programma init (/sbin è la posizione più comune ) e lo esegue.

Init fa partire (e diventa il padre ) tutti i processi che formano il vostro sistema Linux. Inizialmente esegue /etc/rc.d/rc.sysinit, che configura i vostri pathname, la rete se necessaria, ed inizializza la partizione di swap, controlla i filesystem e così via. /etc/rc.d/rc.sysinit fornisce al sistema tutto ciò di cui ha bisogno per eseguire l'inizializzazione. Per esempio, su sistemi all'interno di una rete /etc/rc.d/rc.sysinit usa le informazioni nei file /etc/sysconfig/network e /etc/sysconfig/clock per inizializzare la rete. rc.sysinit esegue anche lo script rc.serial, se avete un processo su una porta seriale che deve essere inizializzata.

Il programma init controlla ed esegue il file /etc/inittab. /etc/inittab descrive come il sistema deve essere configurato per ciascun runlevel ed attiva il runlevel di default. Questo file stabilisce che /etc/rc.d/rc e /sbin/update devono essere eseguiti in ogni runlevel.

Il file /sbin/update ripulisce i buffer su disco.

Quando si cambia un runlevel, /etc/rc.d/rc lancia e blocca i servizi. In primo luogo /etc/rc.d/rc configura la source function library per il sistema (di solito /etc/rc.d/init.d/functions), che stabilisce come eseguire l'avvio e la terminazione di un processo e come trovare il PID di un programma.

Il file rc esegue tutti i processi in background necessari per far funzionare il sistema, e cerca una directory rc per quel determinato runlevel (/etc/rc.d/rc<x>.d, dove <x> è un numero che va da 0-6). rc termina tutti gli script kill (il loro nome comincia per K) in /rc.d/. A questo punto inizializza tutti gli script start (Il loro nome comincia per S) nella directory di runlevel appropriata (in tal modo tutti i servizi e le applicazioni partono correttamente).

Per esempio, per il runlevel 5, rc controlla in /etc/rc.d/rc5.d e trova che è necessario eseguire un kill per le applicazioni rusersd, rwalld, rwhod, mcserv, mars-nwe, apmd, e pcmcia. Subito dopo, rc controlla nella medesima directory e scopre di dover eseguire: kmod, network, nfsfs, randomc, syslog, atd, crond, portmap, snmpd, inet, xntpd, lpd, nfs.rpmsave, dhcpd, ypbind, autofs, keytable, sendmail, gpm, sound, e smb.rpmsave.

Il file /etc/inittab crea un processo figlio getty per ciascuna console virtuale (login prompt), per ciascun runlevel (da 2 a 5 ne partono solitamente sei, il runlevel 1, che serve per il single user mode, ne viene avviato solo uno; i runlevel 0 e 6, non prendono alcuna console virtuale). /etc/inittab stabilisce anche che gdm, l'X logon manager, deve partire al runlevel 5.

Inoltre, /etc/inittab informa che il sistema deve interpretare la sequenza di tasti Ctrl-Alt-Delete come il comando /sbin/shutdown -t3 -r now.

A questo punto, otterrete il prompt di login. Tutto questo richiede solo alcuni secondi.

Più avanti vedremo il contenuto dei file in /etc/sysconfig.

Informazioni sul sysconfig

Le seguenti informazioni descrivono i vari file in /etc/sysconfig, le loro funzioni ed il loro contenuto.

File in /etc/sysconfig

I seguenti file si trovano normalmene in /etc/sysconfig:

  • /etc/sysconfig/apmd

  • /etc/sysconfig/clock

  • /etc/sysconfig/harddisks

  • /etc/sysconfig/hwconf (non dovrebbe essere mai modificato)

  • /etc/sysconfig/init

  • /etc/sysconfig/keyboard

  • /etc/sysconfig/mouse

  • /etc/sysconfig/network

  • /etc/sysconfig/pcmcia

  • /etc/sysconfig/sendmail

  • /etc/sysconfig/soundcard (configurato tramite sndconfig)

Esaminiamoli in dettaglio.

/etc/sysconfig/apmd

Il file /etc/sysconfig/apmd viene utilizzato da apmd, per verificare su cosa effettuare start/stop/change in caso di una sospensione o di un resume. Viene configurato per lanciare o meno apmd durante l'avvio, a seconda se l'hardware supporta l'Advanced Power Management (apm).

/etc/sysconfig/clock

Il file /etc/sysconfig/clock controlla l'interpretazione dei valori letti dall'orologio di sistema. Le precedenti versioni di Red Hat Linux usavano i seguenti valori:

  • CLOCKMODE=mode, dove mode è uno dei seguenti:

    • GMT -- indica che l'orologio è configurato a UTC.

    • ARC -- solo su sitemi Alpha indica che il time offset di 42 anni della ARC console è attivo.

I valori possibili da assegnare a queste variabili sono i seguenti:

  • UTC=boolean, dove per boolean si ha:

    • true -- indica che l'orologio è configurato come UTC. Qualsiasi altro valore indica che è configurato con l'ora locale.

  • ARC=boolean, dove per boolean si può avere:

    • true -- Indica l'ARC console; ogni altro valore indica che viene utilizzato il metodo normale per la gestione del tempo di Unix.

  • ZONE="filename" -- indica il file del fuso orario sotto /user/share/zoneinfo di cui /etc/localtime rappresenta una copia, per esempio:

    ZONE="America/New York"

/etc/sysconfig/desktop

Il file /etc/sysconfig/desktop specifica il gestore di finestre attivo.

/etc/sysconfig/harddisks

Il file /etc/sysconfig/harddisks vi permette di configurate l'hard drive.

Può contenere i seguenti campi:

  • USE_DMA=1, abilita il DMA se impostato ad 1.

  • Multiple_IO=16, se impostato a 16 abilita l'Interrupt I/O per più settori. Abilitando questa caratteristica si riduce l'overhead del 30-50%. È da utilizzare con cautela.

  • EIDE_32BIT=3, abilita il supporto (E)IDE 32-bit I/O .

  • LOOKAHEAD=1, abilita il drive read-lookahead.

  • EXTRA_PARAMS=, dove possono essere aggiunti parametri extra

/etc/sysconfig/hwconf

Il file/etc/sysconfig/hwconf elenca tutto l'hardware che kudzu ha localizzato nel vostro sistema, i driver presenti, vendor ID e device ID, non vengono configurati. Se viene modificato un device il suo stato protrebbe essere cambiato ad added o removed creando gravi problemi.

/etc/sysconfig/init

Il file /etc/sysconfig/init controlla il modo in cui il sistema appare durante il boot.

Si possono usare i seguenti valori:

  • BOOTUP=<some bootup mode>, dove per <una modalità di avvio > si ha:

    • BOOTUP=color richiama un nuovo schermo di avvio (come per Red Hat Linux 6.0).

    • BOOTUP=verbose è una modalità con lo stile vecchio di schermo.

    • qualunque altra cosa chiama un nuovo display, ma senza la formattazione ANSI.

  • LOGLEVEL=<un numero>, dove <un numero> configura il livello di logging di console iniziale per il kernel. Di default il valore è 7, 8 significa completo (incluso il debug); 1 significa nessun tipo di logging eccetto i kernel panic.

  • RES_COL=<un numero>, dove <un numero> è una colonna del monitor di partenza dello status. Il default è 60.

  • MOVE_TO_COL=<un comando>, dove <un comando> muove il cursore a $RES_COL. Di default viene utilizzato l'ANSI.

  • SETCOLOR_SUCCESS=<un comando>, dove <un comando> configura il colore. Di default viene utilizzata la sequenza di output ANSI che configura, il colore come il verde.

  • SETCOLOR_FAILURE=<un comando>, dove <un comando> configura il colore da utilizzare per un messaggio di fallimento Di default vengono utilizzate le sequenze output ANSI, con echo -e, configurato come rosso.

  • SETCOLOR_WARNING=<un comando>, dove <un comando> configura il colore per indicare un avvertimento, di default vengono usate le sequenze di output ANSI con echo -e, configurato come giallo.

  • SETCOLOR_NORMAL=<un comando>, dove <un comando> configura il colore come 'normal'. Di default vengono utilizzate le sequenze di output ANSI, con echo -e.

  • PROMPT=una risposta, dove per una risposta si ha:

    • yes -- abilita il key check per la modalità interattiva.

    • no -- Disabilita il key check per la modalità interattiva.

/etc/sysconfig/i18n

Il file /etc/sysconfig/i18n imposta la lingua di default.

/etc/sysconfig/keyboard

I file /etc/sysconfig/keyboard controllano il comportamento della tastiera. I seguenti valori possono essere utilizzati:

  • KEYTABLE=file, dove file rappresenta il nome di un file di configurazione di una tastiera. Ad esempio: KEYTABLE="/usr/lib/kbd/keytables/us.map"

  • KEYBOARD=sun|pc, viene usato solo su SPARC. sun indica una tastiera Sun collegata a /dev/kbd, pc indica una tastiera PS/2 su una porta PS/2.

/etc/sysconfig/mouse

Il file /etc/sysconfig/mouse viene usato per la configurazione del mouse. Possono essere usate le seguenti variabili:

  • MOUSETYPE=type, dove per type si ha:

    • microsoft Un mouse Microsoft.

    • mouseman Un mouse MouseMan.

    • mousesystems Un mouse Systems mouse.

    • ps/2 Un mouse PS/2 .

    • msbm Un mouse bus Microsoft.

    • logibm Un mouse bus Logitech.

    • atibm Un mouse bus ATI.

    • logitech Un mouse Logitech.

    • mmseries Un vecchio MouseMan mouse.

    • mmhittab Un mouse mmhittab.

  • XEMU3=emulation, dove per emulation si ha:

    • yes -- Emula tre tasti.

    • no -- Il mouse ha tre tasti.

Inoltre, /dev/mouse è un link che punta al device a cui è collegato il mouse.

/etc/sysconfig/network

Il file /etc/sysconfig/network è utilizzato per le informazioni relative alla configurazione della vostra rete. È possibile usare i seguenti parametri:

  • NETWORKING=risposta, dove per risposta si ha:

    • yes -- La rete deve essere configurata.

    • no -- La rete non deve essere configurata.

  • HOSTNAME=hostname, dove hostname deve essere il FQDN (Fully Qualified Domain Name), cioè il nome del dominio completo.

    NotaNota Bene
     

    Per compatibilità con il vecchio software che si potrebbe voler installare (per esempio trn), il file /etc/HOSTNAME deve contenere questi valori.

  • GATEWAY=gw-ip, dove gw-ip rappresenta l'indirizzo IP del gateway della rete.

  • GATEWAYDEV=gw-dev, dove gw-dev rappresenta il device per accedere al gateway (per esempio eth0).

  • NISDOMAIN=dom-name, dove dom-name rappresenta il nome del dominio NIS.

/etc/sysconfig/pcmcia

Il file /etc/sysconfig/pcmcia viene usato per specificare la configurazione della porta PCMCIA. Si possono usare:

  • PCMCIA=risposta, dove per risposta si ha:

    • yes Il supporto PCMCIA enabled.

    • no Il supporto PCMCIA non viene abilitato

  • PCIC=pcic-type, dove per pcic-type si ha:

    • i82365 -- Il computer ha un un socket chipset della PCMCIA di tipo i82365.

    • tcic -- Il computer ha un un socket chipset della PCMCIA di tipo tcic.

  • PCIC_OPTS=opzione, dove opzione rappresenta i socket driver (i82365 o tcic).

  • CORE_OPTS=opzione, dove opzione rappresenta la lista delle opzioni pcmcia_core.

  • CARDMGR_OPTS=opzione, dove opzione rappresenta la lista delle opzioni per il cardmgr della PCMCIA (per esempio -q, modalità silenziosa; -m, cerca i moduli del kernel nelle directory specificate; e così via. Leggete la pagina man di cardmgr per maggiori informazioni).

/etc/sysconfig/sendmail

In passato vi veniva chiesto di ricompilare il kernel ogni volta che aggiungevate una nuova periferica o se volevate utilizzare altri tipi di filesystem. Il kernel era, in altre parole, statico. I miglioramenti nel kernel di Linux 2.0.x hanno consentito di modularizzarlo e quindi utilizzare driver di hardware che possono essere caricati senza dover eseguire una ricompilazione. Con le versioni precedenti del kernel vi erano dei problemi nell'utilizzo di più kernel ricompilati su un solo sistema per differenti utilizzi (ad esempio: un kernel SMP per macchine multiprocessore contro UP); problema risolto con l'attuale versione del kernel, permettendo un più facile utilizzo di un sistema con più kernel.

Possono essere utilizzati i seguenti valori:

  • DAEMON=answer, dove answer è uno dei seguenti:

    • yes Sendmail può essere configurato per ascoltare alla porta 25. yes implica -bd.

    • no Sendmail può non essere configurato per ascoltare alla porta 25.

  • QUEUE=1h che viene dato a sendmail come -q$QUEUE. L'opzione -q non viene data a sendmail se /etc/sysconfig/sendmail esiste e QUEUE è vuota o non definita.

/etc/sysconfig/soundcard

Il file /etc/sysconfig/soundcard viene generato da sndconfig e non deve essere modificato. Viene usato da /etc/rc.d/init.d/sound per configurare il sistema in modo appropriato. Una sua caratteristica consiste nel determinare il tipo di scheda da configurare.

Esso potrebbe contenere:

  • CARDTYPE=<una scheda>, dove <una scheda> può essere per esempio, CARDTYPE=SB16.

I seguenti file si trovano normalmente in

  • /etc/sysconfig/network-scripts/ifup

  • /etc/sysconfig/network-scripts/ifdown

  • /etc/sysconfig/network-scripts/network-functions

  • /etc/sysconfig/network-scripts/ifcfg-<interface-name>

  • /etc/sysconfig/network-scripts/ifcfg-<interface-name>-<clone-name>

  • /etc/sysconfig/network-scripts/chat-<interface-name>

  • /etc/sysconfig/network-scripts/dip-<interface-name>

  • /etc/sysconfig/network-scripts/ifup-post

Guardiamoli uno ad uno.

/etc/sysconfig/network-scripts/ifup, /etc/sysconfig/network-scripts/ifdown

Sono dei link rispettivamente a /sbin/ifup e /sbin/ifdown, Ci sono soltanto due script in questa directory che dovrebbero essere "chiamati" direttamente; essi chiamano altri script. I link si trovano in questa directory solo per motivi storici – saranno probabilmente rimossi nelle versioni future, pertanto solo /sbin/ifup e /sbin/ifdown dovrebbero essere usati.

Questi script hanno normalmente un argomento: il nome dell'interfaccia (per esempio "eth0"). Vengono chiamati da un secondo argomento di "boot" durante il processo di avvio; pertanto le interfacce che non si desidera attivare durante la fase di avvio saranno configurate come (ONBOOT=no, [vedere di seguito]) e pertanto in quel momento verranno ignorati.

/etc/sysconfig/network-scripts/network-functions

Questo è un file che non dovrebbe essere modificato. Contiene le funzioni che gli script utilizzano per attivare e disattivare le interfacce. In particolare, contiene il codice per gestire la configurazione dell'interfaccia ed il cambio di configurazione tramite netreport.

/etc/sysconfig/network-scripts/ifcfg-<interface-name>, /etc/sysconfig/network-scripts/ifcfg-<interface-name>:<clone-name>

Il primo file identifica un'interfaccia, il secondo contiene solo le parti differenti in una eventuale interfaccia "clone". Per esempio, il numero di rete (network) può essere differente, ma il resto deve rimanere uguale, solo i numeri di rete possono essere differenti in un file clone, in quanto tutte le informazioni sul device dovrebbero essere nel file di base ifcfg.

Le variabili che possono essere definite in un file ifcfg dipendono dal tipo d'interfaccia.

Le seguenti variabili sono comuni a tutti i file base:

  • DEVICE=nome, dove nome è il nome del device fisico (es. eth0 - ad eccezione dei device PPP allocati dinamicamente, in cui viene definito un "nome logico").

  • IPADDR=addr, dove addr rappresenta l'indirizzo IP.

  • NETMASK=mask, dove mask rappresenta il valore del netmask.

  • NETWORK=addr, dove addr è l'indirizzo IP.

  • BROADCAST=addr, dove addr rappresenta l'indirizzo di broadcast.

  • GATEWAY=addr, dove addr rappresenta l'indirizzo del gateway.

  • ONBOOT=answer, dove per answer si ha:

    • yes -- Questa interfaccia deve essere attivata al boot.

    • no -- Questa interfaccia non deve essere attivata al boot.

  • USERCTL=risposta, dove per risposta si ha:

    • yes -- Utenti non-root possono controllare questa interfaccia.

    • no -- Utenti non-root non possono controllare questa interfaccia.

  • BOOTPROTO=proto, dove per proto si ha:

    • none -- non viene utilizzato nessun protocollo durante l'inizializazione dell'interfaccia di rete.

    • bootp -- Il protocollo BOOTP deve essere usato.

    • dhcp -- Il protocollo DHCP deve essere usato.

I seguenti valori sono comuni a tutti i file PPP e SLIP:

  • PERSIST=risposta, dove per risposta si ha:

    • yes -- Questa interfaccia deve essere sempre attiva, anche se disattivata da una sconnessione (hangup) del modem.

    • no -- Questa interfaccia non deve essere sempre attiva.

  • MODEMPORT=porta, dove porta è il nome del device del modem (per esempio, "/dev/modem").

  • LINESPEED=baud, dove baud rappresenta la velocità del modem (per esempio, "115200").

  • DEFABORT=risposta, dove per risposta si ha:

    • yes -- Inserisce la stringa di chiusura durante la creazione dello script per questa interfaccia.

    • no -- Non inserisce la stringa di chiusura durante la creazione dello script per questa interfaccia.

/etc/sysconfig/network-scripts/chat-<interface-name>

Questo file è uno script chat per le connessioni PPP o SLIP, creato per attivare la connessione. Per i device SLIP, uno script DIP è scritto dal chat script; per i device PPP, il chat script è usato direttamente.

/etc/sysconfig/network-scripts/dip-<interface-name>

Questo script di sola scrittura è creato dal chat script per netcfg. Non modificate questo file. In futuro, questo file potrà scomparire ed al suo posto verrà creato un file "al volo" dal chat script.

/etc/sysconfig/network-scripts/ifup-post

Questo file è chiamato quando un dispositivo di rete è attivato ( ad eccezione del device SLIP ) . Chiama lo script /etc/sysconfig/network-scripts/ifup-routes per attivare il routing statico e gli eventuali alias di questo device. Imposta il nome dell'host, se non è presente, per poter associare l'IP del device al nome dell'host. Trasmette un SIGIO a tutti i programmi che hanno questa notifica degli eventi sulla rete.

Potrebbe essere esteso per risolvere problemi della configurazione del nameserver.

System V Init

Questo paragrafo è una breve descrizione di quello che succede all'interno del processo di avvio. Riguarda il modo in cui il computer si avvia usando SysV Init e le differenze dall'init attuale rispetto alle precedenti versioni di Linux.

Il programma Init è il primo processo attivato dal kernel al momento dell'avvio. Ha l'incarico di avviare tutti i processi che forniscono i servizi al sistema. Questi includono i getty che vi permettono di collegarvi, i demoni NFS e FTP e qualunque altro servizio vogliate mettere in funzione quando il vostro computer si avvia.

SysV init sta diventando lo standard nel mondo Linux per controllare l'avvio del software al boot. Questo perché è più facile da usare e più potente e flessibile dell'init BSD tradizionale.

SysV init differisce dal BSD init dal fatto che i file di configurazione si trovano in una sottodirectory di /etc invece di essere direttamente in /etc. In /etc/rc.d, troverete rc.sysinit e le seguenti directory:

init.d
rc0.d
rc1.d
rc2.d
rc3.d
rc4.d
rc5.d
rc6.d
        

La directory init.d contiene un insieme di script. Avrete bisogno di uno script per ogni servizio che volete attivare al momento del boot o quando entrate in un altro livello di esecuzione (runlevel). I servizi possono essere, nfs, sendmail, httpd, ecc. Non sono compresi servizi come setserial che va attivato una sola volta. Setserial va messo in rc.local o rc.serial.

rc.local, dovrebbe trovarsi in /etc/rc.d. La maggior parte dei sistemi ne includono uno. Potete anche includere un rc.serial in /etc/rc.d se dovete specificare e configurare le porte seriali.

Questa è la catena di eventi:

Il runlevel di default è definito nel file /etc/inittab. Dovreste vedere una riga all'inizio del file simile a:

id:3:initdefault:
        

Da qui, dovreste guardare nella seconda colonna ed osservare che il livello di funzionamento di default è 3, come per la maggior parte dei sistemi. Se volete modificarlo, potete modificare il file /etc/inittab. State molto attenti a modificare il file inittab. Se fate confusione, ed il sistema riparte potete comunque avviare Linux in modalità singola al prompt di lilo come segue:

LILO boot:  linux single
        

Questo dovrebbe permettervi di partire nella modalità single user, e di correggere l'inittab.

Ora, come funzionano gli script? Se digitate ls -l su rc3.d, potreste vedere qualcosa come:

lrwxrwxrwx 1 root root 17 3:11 S10network -> ../init.d/network
lrwxrwxrwx 1 root root 16 3:11 S30syslog -> ../init.d/syslog
lrwxrwxrwx 1 root root 14 3:32 S40cron -> ../init.d/cron
lrwxrwxrwx 1 root root 14 3:11 S50inet -> ../init.d/inet
lrwxrwxrwx 1 root root 13 3:11 S60nfs -> ../init.d/nfs
lrwxrwxrwx 1 root root 15 3:11 S70nfsfs -> ../init.d/nfsfs
lrwxrwxrwx 1 root root 18 3:11 S90lpd -> ../init.d/lpd.init
lrwxrwxrwx 1 root root 11 3:11 S99local -> ../rc.local
        

Quello che noterete è che non ci sono "file" nella directory. Sono tutti link a script. I link hanno anche una "S" e un numero all'inizio. La "S" indica di aprire questo particolare script al momento del boot e un "K" indica di chiuderlo al momento dello shutdown. Il numero indica l'ordine di attivazione o di chiusura. Init aprirà tutti i servizi nell'ordine in cui appaiono. Potete raddoppiare i numeri, ma ciò vi manderà solo in confusione. Avete bisogno di utilizzare solo due numeri, insieme a una "S" e una "K" per aprire o chiudere i servizi che sono necessari.

Come fa Init a iniziare e terminare i servizi? Semplice. Ognuno degli script può accettare un argomento che può essere "start" o "stop". Potete eseguire questi script dal vostro interprete di comandi digitando ad esempio:
/etc/rc.d/init.d/httpd stop
          
Per fermare il server httpd. init legge solo il nome, e se questo possiede una "K" chiama lo script con l'argomento "stop". Se possiede una "S", chiama lo script con l'argomento "start".

Perché tutti questi livelli di funzionamento? Perché molte persone preferiscono un metodo semplice per gestire macchine multi-funzione. Per esempio si vorrebbe avere un livello di funzionamento "Server" che mette in funzione solo l'httpd, sendmail, networking, ecc. Poi si potrebbe avere un livello di funzionamento "Utente" che utilizza gdm, networking, ecc.

I Runlevel

In generale, Red Hat Linux funziona in modalità multiutente. I seguenti livelli sono utilizzati in Red Hat Linux:

  • 0 Halt

  • 1 Single-user mode

  • 2 Multi-user mode, senza networking

  • 3 Full multi-user mode

  • 4 Non usato

  • 5 Full multi-user mode (con login grafico)

  • 6 Reboot

Se il vostro computer si trova in uno stato in cui non può avviarsi a causa di un /etc/inittab sbagliato, o non vi lascia entrare perchè avete un /etc/passwd danneggiato o avete semplicemente dimenticato la vostra password, avviate il procedimento per un utente singolo digitando linux 1 al prompt di avvio LILO. Caricherete il sistema base e verrà caricata una shell con la quale potrete modificare la vostra configurazione.

Utility di initscript

L'utility chkconfig fornisce un semplice strumento command-line per la manutenzione della gerarchia della directory /etc/rc.d. Evita che l'amministratore di sistema abbia la possibilità di manipolare direttamente i numerosi file in /etc/rc.d.

Inoltre l'utility ntsysv fornisce un'interfaccia grafica, rispetto all'interfaccia su linea di comando di chkconfig.

Per maggiori informazioni fate riferimento alle pagine man del programma chkconfig e ntsysv.

Eseguire i programmi al momento del boot

Il file /etc/rc.d/rc.local viene eseguito al momento del boot, dopo che tutte le inizializzazioni sono complete, e quando cambiate i runlevel. Qui potete aggiungere comandi di inizializzazione. Per esempio, potete avere bisogno di eseguire lo start up di un demone per la stampante. In più se richiedete il setup di una porta seriale potete editare /etc/rc.d/rc.serial e verrà eseguito al boot.

La configurazione di default di/etc/rc.d/rc.local crea un banner di login con la vostra versione del kernel ed il tipo di macchina.

Eseguire uno Shut Down

Per spegnere correttamente Red Hat Linux, usate il comando shutdown. Potete leggere la man page di shutdown per dettagli completi, ma i due utilizzi più comuni sono:

shutdown -h now
shutdown -r now
        

Ognuno di questi chiuderà il sistema in modo corretto. Al termine di tutte le operazioni, l'opzione -h arresterà la macchina, mentre l'opzione -r la riavvierà.

Sebbene i comandi reboot e halt sono ora abbastanza "evoluti" da attivare il programma shutdown direttamente, se il vostro sistema è in un livello compreso tra 1 e 5 è buona norma non utilizzarli. Non tutti i sistemi Linux-like hanno queste proprietà.