Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
INDICE:
1. PRIMA DI INIZIARE
1. INTRODUZIONE
2. REQUISITI
3. CHANGELOG
2. BREVE RIASSUNTO DEL NORMALE PROCESSO DI BOOT
3. INIZIAMO A PERSONALIZZARE
1. KERNEL
2. /ETC/INITTAB
3. I SERVIZI DA ATTIVARE AL BOOT
4. GRUB
5. UTILIZZARE GRUB E I SERVIZI PER CREARE UN BOOT PERSONALIZZATO
APPENDICE A:
○ esempio di /etc/inittab
○ esempio di /boot/grub/menu.lst
1) PRIMA DI INIZIARE
1) INTRODUZIONE
Questo articolo tenterà di illustrare rapidamente il boot di Linux e di fornire alcune indicazioni
su come sia possibile velocizzare o personalizzare tale processo.
Per tutto l'articolo farò riferimento a DEBIAN, sia per la perfetta aderenza agli standard, sia
perché è la distribuzione che utilizzo io. ;-)
2) REQUISITI
Requisiti necessari per questo tutorial:
3) CHANGELOG
Appena il PC viene avviato, GRUB ci presenta le opzioni disponibili, si carica il kernel scelto e la
sua immagine di initrd, per passare poi alla partenza del padre di tutti i processi (/sbin/init), che
esegue i file /etc/rc.d/rc.sysinit e, se presente, /etc/rc.d/rc.serial.
Fino a questo momento il sistema è, praticamente, inutilizzabile, essendo composto solo dal
kernel e da init, che ha, grazie ai 2 files sopracitati, controllato la consistenza del filesystem,
attivato lo spazio di swap, sincronizzato l'orologio di sistema e creato l'albero dei percorsi.
Successivamente, init legge il file di configurazione /etc/inittab che si occupa, tra le altre cose di
definire il runlevel di default.
/sbin/init passa poi ad eseguire i links simbolici presenti in /etc/rcS.d, cioè quei servizi che
vengono inizializzati ad ogni avvio del sistema, indipendentemente dal runlevel scelto.
Eseguiti i “compiti” trovati in /etc/rcS.d, init passa ad eseguire gli script presenti in /etc/rcX.d,
dove con X si intende il runlevel scelto.
Terminata questa fase il processo di boot si può considerare completato e la vostra Linux-Box è
pronta all'uso.
3) INIZIAMO A PERSONALIZZARE
Fino a che init non arriva a leggere /etc/inittab le possibili personalizzazioni per la fase di avvio
sono limitate alla sola configurazione di GRUB e delle sue opzioni.
Ma dopo questo punto saranno solo le vostre necessità e il vostro ingegno a porvi un limite!
1) KERNEL
La prima cosa da fare per ottenere un avvio più veloce della vostra macchina è la
ricompilazione del kernel.
Oggigiorno le distro tendono a presentarsi con kernel con parecchie opzioni attivate, in modo
tale da poter girare sulle macchine più disparate; questo è senza dubbio un bene in fase di
installazione ( ci evita di dover inserire manualmente i moduli che ci interessano), ma diventa
un fardello da portarsi dietro ad ogni accensione della macchina.
SCSI subsystem:
una opzione da non segnare se non si posseggono dischi o altro hardware SCSI.
Nella nuova serie 2.6.X è stata anche superato lo scoglio della masterizzazione, che nella serie
2.4.X richiedeva l'opzione ide-scsi attivata per poter funzionare.
(PCMCIA/CardBus) support:
Se non si hanno periferiche PCMCIA, normalmente presenti solo nei portatili, si ometta
questa opzione.
ISDN subsystem:
Anche questa sezione, se non utilizzate una connessione ISDN, può essere tranquillamente
non marcata.
Watchdog Cards:
Un sistema programmabile, di solito hardware, per controllare che la CPU non entri in loop
(deadlock); se ciò accade, il watchdog prende i provvedimenti necessari per uscirne.
È molto difficile che un utente medio ne incontri uno.
Disattivatelo.
Insomma, queste sono solo alcune indicazioni su come configurare un kernel più snello e
prestante, ma ognuno è libero di utilizzare le opzioni necessarie alla propria macchina.
2) /ETC/INITTAB
Inoltre possiamo lavorare sul numero di console aperte al momento del boot; più esattamente
portiamoci alle righe:
Con la configurazione attuale, verranno attivate la Virtual Console VC1 (cioè quella che si
raggiunge con CTRL+ALT+F1) per tutti i runlevel, mentre le altre solo per i runlevel 2 e 3.
Soprattutto sui sistemi meno performanti è utile diminuirne il numero, al fine di risparmiare
qualche Mb di RAM. Questo si può fare semplicemente commentando con un cancelletto ( # )
le VC che non ci interessano, partendo da quella con <id> più alto.
Al contrario, se, per qualche necessità, se ne richiede di aumentarne il numero, basta
aggiungere le righe richieste, tenendo conto che VC7 deve essere saltata, essendo riservata
all'X-server, anche se quest'ultimo non è stato installato.
3) I SERVIZI DA ATTIVARE AL BOOT
Ricordo che la composizione può essere differente, tutto dipende da che cosa si è deciso di
installare sulla propria macchina.
Come già accennato, non tutti questi servizi sono indispensabili, mentre altri DEVONO essere
attivati per il buon funzionamento del PC.
S14ppp
Si occupa di gestire principalmente le connessioni attraverso il procollo ppp (Point to Point
Protocol).
Se non si utilizza una connessione che sfrutta tale protocollo, cioè una connessione con
modem analogico 56k o simili, o si ha una macchina stand-alone, questo servizio può essere
tranquillamente tolto.
S20acipd
Andrebbe sempre mantenuto, tranne nel caso di macchine vecchie, nel qual caso può essere
eliminato, non potendo sfruttarne le capacità.
S20inetd
Questo demone rimane in ascolto sulle porte specificate nella sua configurazione
(/etc/inetd.conf) e avvia il servizio relativo quando avviene una connessione.
È un servizio utile solamente se vi è la reale necessità di mantenere porte aperte sulla propria
macchina.
Se questa necessità non sussiste, è meglio disattivalo, in modo da ridurre i rischi di accesso
non autorizzato al sistema e, nel contempo, risparmiare qualcosa in termini di utilizzo delle
risorse.
S20exim4
exim è un Mail Transfert Agent (MTA). Per la maggior parte delle persone questo è un
servizio inutile, non essendovi necessità di smistare la posta ai vari utenti del sistema.
Gli utenti normalmente o utilizzano client di posta dedicati (come Thunderbird o Kmail),
oppure controllano la propria corrispondenza direttamente dal web.
Quindi, questo servizio può essere disabilitato per la maggior parte delle situazioni.
S20lisa
LISA è un piccolo demone per il monitoraggio della vostra rete lan; se volete maggiori
informazioni sulle sue possibilità, potete andare qui.
Pur utilizzando una serie di accorgimenti per diminuire il traffico di overhead nella rete,
consiglio di disabilitare il servizio, sia per il risparmio delle risorse sia per una questione di
sicurezza (LISA per il suo funzionamento tiene aperta la porta 7741 e ne rimane in ascolto).
S20lpd
Questi servizio è necessari solo se nel vostro sistema è presente una stampante.
Può essere tranquillamente eliminato se questa condizione non sussiste.
S20xprint
S20xprint può essere tranquillamente eliminato, essendo solamente la parte client-side di un
servizio di stampa, supportato solo da alcuni sistemi operativi *nix-Like, come Solaris e HP-
UX.
S20xfs
S20xfs-xtt
Sono i due servizi che gestiscono l'anti-aliasing dei caratteri nel ServerX.
Consiglio di eliminare S20xfs poiché è la versione precedente di xfs-xtt, che ne ha le stesse
caratteristiche, più alcune innovazioni, come la gestione dei glyph.
Se si sta configurando una macchina che verrà utilizzato solo in modalità testuale, possono
essere tranquillamente eliminate entrambe.
S21nfs-common
Se non si utilizzano file system di rete questo demone può essere tolto senza remore.
S89atd
S89cron
Sono i demoni che gestiscono le operazioni pianificate all'interno del sistema.
Se non si intende utilizzare questo servizio è possibile eliminarli.
4) GRUB
GRUB (Grand Unified Bootloader), grazie sopratutto ad una maggiore flessibilità, ha oramai
soppiantato LILO come loader standard di molte distribuzioni, DEBIAN compresa.
default 0
Se invece desiderate cambiare il wait time basta cambiare la cifra presente alla riga:
timeout 5
Esempio di /etc/inittab
id:2:initdefault:
l0:0:wait:/etc/init.d/rc 0
l1:1:wait:/etc/init.d/rc 1
l2:2:wait:/etc/init.d/rc 2
l3:3:wait:/etc/init.d/rc 3
l4:4:wait:/etc/init.d/rc 4
l5:5:wait:/etc/init.d/rc 5
l6:6:wait:/etc/init.d/rc 6
Esempio di /boot/grub/menu.lst
# You can specify 'saved' instead of a number. In this case, the default entry
# is the entry saved with the command 'savedefault'.
default 0
## timeout sec
timeout 5