Professional Documents
Culture Documents
Processo di Init
RunLevel
Avvio e arresto del sistema Esercizi
15/04/2007 Servizi e manutenzione di sistemi open source 1 15/04/2007 Servizi e manutenzione di sistemi open source 2
15/04/2007 Servizi e manutenzione di sistemi open source 3 15/04/2007 Servizi e manutenzione di sistemi open source 4
1
vmlinuz e initrd
Il processo di avvio
L’immagine del kernel è in un file presente nella directory /boot che si
Di seguito sono riportate le fasi principali del processo di avvio per chiama vmlinuz- (per esempio: vmlinuz-2.6.0-xx).
un sistema x86: Di solito per evitare di riscrivere lilo.conf viene creato un link simbolico
Il sistema BIOS (Basic Input/Output System) controlla il sistema e vmlinuz
avvia il boot loader della prima fase nel file MBR del disco fisso Oltre al kernel, viene caricata in memoria anche l'immagine RAM disk
primario. iniziale. Tale immagine si chiama initrd ed e' utilizzata dal kernel per
caricare in memoria tutti i driver non compilati all'interno del kernel stesso
Il boot loader della prima fase viene caricato in memoria e consente che sono necessari per avviare il sistema.
di avviare il boot loader della seconda fase dalla partizione /boot Una delle prime cose che fa il kernel di Linux e' quella di commutare il
Il boot loader di seconda fase carica il kernel in memoria, che a suo processore da modalità reale a modalità protetta
turno carica tutti i moduli e monta la partizione root di sola lettura. In questa modalità non e' possibile accedere direttamente alla memoria e
Il kernel trasferisce il controllo del processo di avvio al programma all'hardware del PC ma occorre passare attraverso delle chiamate al
/sbin/init. sistema operativo
Il programma /sbin/init carica tutti i servizi e gli strumenti user- Una volta configurati tutti i dispositivi, il kernel smonta l'immagine del disco
space e monta tutte le partizioni specificate in /etc/fstab. initrd, crea il dispositivo root, monta la partizione di root in sola lettura e
libera la memoria.
L'utente viene presentato con un prompt di login per il sistema di Il kernel controlla l’hardware presente perché tra un avvio e l'altro la
Linux appena installato. configurazione potrebbe anche cambiare, percio' scandaglia il PC alla
ricerca delle varie periferiche presenti
15/04/2007 Servizi e manutenzione di sistemi open source 5 15/04/2007 Servizi e manutenzione di sistemi open source 6
2
Runlevels Run level
15/04/2007 Servizi e manutenzione di sistemi open source 9 15/04/2007 Servizi e manutenzione di sistemi open source 10
15/04/2007 Servizi e manutenzione di sistemi open source 11 15/04/2007 Servizi e manutenzione di sistemi open source 12
3
init Inittab
Esempio tipico di una distribuzione RedHat Linux. Su altri sistemi Unix questo file può
cambiare nella forma (ma non nella sintassi).
Qui si gestisce effettivamente quali servizi e programmi lanciare ai diversi
# inittab This file describes how the INIT process should set up
runlevel. La chiave è il programma rc che viene invocato con il numero di
# the system in a certain run-level. runlevel desiderato
#[...]
# Default runlevel. The runlevels used by RHS are: l0:0:wait:/etc/rc.d/rc 0
# 0 - halt (Do NOT set initdefault to this)
# 1 - Single user mode l1:1:wait:/etc/rc.d/rc 1
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking) l2:2:wait:/etc/rc.d/rc 2
# 3 - Full multiuser mode l3:3:wait:/etc/rc.d/rc 3
# 4 - unused l4:4:wait:/etc/rc.d/rc 4
# 5 - X11
# 6 - reboot (Do NOT set initdefault to this) l5:5:wait:/etc/rc.d/rc 5
l6:6:wait:/etc/rc.d/rc 6
id:5:initdefault:
15/04/2007 Servizi e manutenzione di sistemi open source 15 15/04/2007 Servizi e manutenzione di sistemi open source 16
4
Richiamo dei processi dagli script rc /etc/rcX.d
# Trap CTRL-ALT-DELETE
A ogni runlevel e' assegnata una dir contenente una serie di script di init ca::ctrlaltdel:/sbin/shutdown -t3 -r now
15/04/2007 Servizi e manutenzione di sistemi open source 19 15/04/2007 Servizi e manutenzione di sistemi open source 20
5
System V System V
Si può forzare un cambiamento di runlevel con il comando telinit Al termine dell'avvio del sistema, è possibile accedere
Ed es: telinit 1 commuta al runlevel 1 come root ed eseguire gli stessi script per avviare e
telinit e’ un link simbolico a /sbin/init per cui si puo’ anche scrivere: interrompere i servizi.
init 1
Per esempio il comando
Utilizzando il comando "diff" si possono vedere le differenze fra le
directory diff /etc/rc2.d /etc/rc1.d /etc/init.d/httpd stop
Nessuno degli script che avvia e arresta realmente i servizi si trova interrompe Server Apache (web server).
nella directory /etc/rc.d/rc5.d/. Tutti i file in /etc/rc.d/rc5.d/ sono link Altro esempio:
simbolici diretti a script che si trovano nella directory /etc/rc.d/init.d/. I
link simbolici sono utilizzati in ciascuna delle directory rc per fare in /etc/init.d/networking restart
modo che i runlevel possano essere riconfigurati creando, riavvia i servizi di rete.
modificando ed eliminando i link simbolici senza influire sugli script a
cui fanno riferimento.
15/04/2007 Servizi e manutenzione di sistemi open source 21 15/04/2007 Servizi e manutenzione di sistemi open source 22
Alla fine del processo di init Alla fine del processo di init
15/04/2007 Servizi e manutenzione di sistemi open source 23 15/04/2007 Servizi e manutenzione di sistemi open source 24
6
Demoni o servizi Esercizio 1
I programmi avviati automaticamente all’avvio del sistema, sono detti
demoni o servizi: caratteristica fondamentale, a differenza dei Loggarsi nella consolle tty 2
normali programmi, è che i demoni sono normalmente in esecuzione
per tutta una sessione di lavoro dall’avvio allo shutdown.
Passare alla modalità singolo-utente digitando
il relativo comando.
Il motivo è semplice: questi programmi, infatti, devono sempre essere
in ascolto per soddisfare eventuali richieste provenienti dall’utente o
Verificare cosa accade nelle altre consolle
dall’esterno, nel caso la macchina sia in rete Verificare se sono presenti i processi getty
Lo stato in cui normalmente questo programma si trova è detto Ritornare alla modalità grafica multi-utente
"sleep", le risorse occupate dal demone, quindi, risultano minime con il relativo comando
15/04/2007 Servizi e manutenzione di sistemi open source 25 15/04/2007 Servizi e manutenzione di sistemi open source 26
Esercizio 2 Esercizio 3
Modificare il runlevel 3 in modo che non faccia partire Modificare il file inittab in modo che al boot
la modalità grafica il sistema parta in modalità multiutente senza
Suggerimento: interfaccia grafica
Il servizio che fa partire la modalità grafica è: gdm Una volta individuate le modifiche da
Dare il comando apportare, prima di effettuare il reboot,
init 3 chiedete conferma al docente
per passare al runlevel corrispondente Effettuate un reboot per verificare la
funzionalità voluta
Ripristinate inittab come era in precedenza
15/04/2007 Servizi e manutenzione di sistemi open source 27 15/04/2007 Servizi e manutenzione di sistemi open source 28