Sei sulla pagina 1di 10

B2R2

(Basic Boot Rules Revealed)


ovvero

QUELLO CHE DOVRESTE SAPERE


SULL'AVVIO DELLA VOSTRA MACCHINA

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:

1. Una distro che utilizzi il sistema di avvio SysV-Init.


Praticamente quasi tutte, ad eccezione di Slackware e derivate
[coming soon...]

2. Una minima conoscenza del sistema di avvio della tua LinuxBox.


Puoi trovare dell'ottima documentazione in giro per la rete.
Qui ne puoi trovare una.

3. Tanta pazienza e voglia di provare e riprovare.

4. La foto di una ragazza carina da mandare all'autore. ;-)

3) CHANGELOG

[31-03-2006] VERSIONE 1.0


2) BREVE RIASSUNTO DEL NORMALE PROCESSO DI BOOT

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.

Alcuni esempi pratici:

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.

Processor type and features:


In questa sezione non vengono marcati i flag per le ottimizzazioni specifiche del processore.
Vi consiglio di farlo, in modo tale da poter sfruttare tutte le potenzialità della vostra CPU.

CPU Frequency scaling:


Se non possedete una CPU che possa beneficiarne (INTEL SpeedStep e AMD PowerNow! )
disattivate questa opzione.

(PCMCIA/CardBus) support:
Se non si hanno periferiche PCMCIA, normalmente presenti solo nei portatili, si ometta
questa opzione.

Token Ring devices:


Una tipologia di rete sviluppata inizialmente da IBM.
Difficilmente ne vedrete mai una.
Disattivatela.

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.

Video For Linux:


Se non avete necessità di acquisizioni audio-video sulla vostra macchina, disabilitate
tranquillamente questa opzione

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

Nell'Appendice A, potete trovare un esempio del file di configurazione.

In /etc/inittab viene, come già detto, definito il runlevel di avvio predefinito.


Per modificarlo, portatevi alla riga:
id:2:initdefault:

e cambiate il numero 2 con quello del runlevel di vostra scelta.

ATTENZIONE!!: non scegliete 0 ( => spegnimento) o 6 ( => riavvio)


come runlevel predefinito, pena l'inutilizzabilità della macchina.

Inoltre possiamo lavorare sul numero di console aperte al momento del boot; più esattamente
portiamoci alle righe:

1:2345:respawn:/sbin/getty 38400 tty1


2:23:respawn:/sbin/getty 38400 tty2
3:23:respawn:/sbin/getty 38400 tty3
4:23:respawn:/sbin/getty 38400 tty4
5:23:respawn:/sbin/getty 38400 tty5
6:23:respawn:/sbin/getty 38400 tty6

Si può osservare che hanno la seguente sintassi:


<id>:<runlevels>:<action>:<process>

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

Per l'aggiunta, la rimozione e la modifica dei servizi presenti in un determinato runlevel, si


faccia riferimento a questa pagina.

Appena terminata di installare la vostra distribuzione nelle cartelle /etc/rcX.d vi troverete un


sacco di links simbolici per la partenza di svariati servizi, alcuni indispensabili, altri meno.

Guardano i files che si trovano in /etc/rc2.d/ (cioè il runlevel di default in DEBIAN), si


possono, ad esempio, trovare:

S10sysklogd S20exim4 S21nfs-common


S11klogd S20lisa S89atd
S14ppp S20lpd S89cron
S20acipd S20makedev S99kdm
S20dbus S20xfs S99rmnologin
S20dirmngr S20xfs-xtt S99stop-bootlogd
S20inetd S20xprint S99xdm

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.

Vediamo nel dettaglio quali sono questi servizi “sacrificabili”.

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.

Lavorando sul file di configurazione /boot/grug/menu.lst, si può velocizzare il processo di


avvio della macchina semplicemente impostando il tempo per cui GRUB debba aspettare
prima di caricare l'immagine predefinita.

L'immagine predefinita è quella segnata alla riga:

default 0

Se avete intenzione di cambiarla basta modificare lo 0 con quella di vostra scelta.

IMPORTANTE!!: GRUB inizia a contare le possibilità di boot dal numero 0 e non da 1 !!


Ricordatevene quando impostate l'immagine di boot predefinita.

Se invece desiderate cambiare il wait time basta cambiare la cifra presente alla riga:

timeout 5

con quella da voi scelta.

5) UTILIZZARE GRUB E I SERVIZI PER CREARE UN BOOT PERSONALIZZATO


APPENDICE A
Non ho inserito i file di configurazione completi , ma solo le parti pertinenti con quanto trattato.

Esempio di /etc/inittab
id:2:initdefault:

# Boot-time system configuration/initialization script.


si::sysinit:/etc/init.d/rcS

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

# Normally not reached, but fallthrough in case of emergency.


z6:6:respawn:/sbin/sulogin

# What to do when the power fails/returns.


pf::powerwait:/etc/init.d/powerfail start
pn::powerfailnow:/etc/init.d/powerfail now
po::powerokwait:/etc/init.d/powerfail stop

# The "id" field MUST be the same as the last


# characters of the device (after "tty").

1:2345:respawn:/sbin/getty 38400 tty1


2:23:respawn:/sbin/getty 38400 tty2
3:23:respawn:/sbin/getty 38400 tty3
4:23:respawn:/sbin/getty 38400 tty4
5:23:respawn:/sbin/getty 38400 tty5
6:23:respawn:/sbin/getty 38400 tty6

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

title Debian GNU/Linux, kernel 2.6.15-1-486


root (hd0,2)
kernel /boot/vmlinuz-2.6.15-1-486 root=/dev/hda3 ro vga=771
initrd /boot/initrd.img-2.6.15-1-486
savedefault
boot

title Debian GNU/Linux, kernel 2.6.15-1-486 (recovery mode)


root (hd0,2)
kernel /boot/vmlinuz-2.6.15-1-486 root=/dev/hda3 ro vga=771 single
initrd /boot/initrd.img-2.6.15-1-486
savedefault
boot

title Microsoft Windows 2000 Professional


root (hd0,0)
savedefault
makeactive
chainloader +1

Potrebbero piacerti anche