prof. Nunzio Brugaletta |
atapSO |
EnneBi –
Computer Science
Avanti – Indietro – Inizio
Il piccolo programma residente nel ROM BIOS carica da disco il settore di boot: un piccolo settore di 512 byte dove risiede un programma che legge l'immagine compressa del kernel. Questa è generalmente /boot/vmlinuz. A questo punto il file è scompattato in memoria e viene costruita una immagine del kernel a cui viene ceduto il controllo. Viene effettuata l'inizializzazione dei componenti hardware, montato il file system principale e lanciato /sbin/init che diventa il processo con ID 1, il padre di tutti i processi e che si assume il compito di lanciare i servizi necessari.
Per la scelta dei servizi, che il processo init avvia, Linux, tradizionalmente, utilizzava i runlevel. Un runlevel è uno stato della macchina cui corrispondono alcuni servizi invece che altri. In un runlevel potrebbe essere avviato, per esempio, il web server e in un altro runlevel no. Si tratta di un numero, compreso fra 0 e 9, cui è associata una determinata configurazione:
Run level |
Modalità |
---|---|
0 |
Halt |
1 |
Mono utente |
2 |
Multiutente ma senza supporto della rete |
3 |
Multiutente |
4 |
Non usata |
5 |
Workstation grafica con X Window System |
6 |
Reboot |
7 – 9 |
Non utilizzati |
Il vecchio sistema di avvio di Linux prevedeva un file di inizializzazione dei runlevel (/etc/inittab) e il demone init che avviava in sequenza i servizi. Il sistema che attualmente si avvia a sostituirlo totalmente si basa sul demone Upstart che avvia o ferma i servizi, in parallelo e quindi più velocemente rispetto al sistema tradizionale sequenziale, in base al verificarsi di eventi.
Il sistema si basa su:
la directory /etc/init che contiene gli script di configurazione dell'avvio dei servizi
$ less /etc/init/rc-sysinit.conf # rc-sysinit - System V initialisation compatibility # # This task runs the old System V-style system initialisation scripts, # and enters the default runlevel when finished. description "System V initialisation compatibility" author "Scott James Remnant <scott@netsplit.com>" start on filesystem and net-device-up IFACE=lo stop on runlevel # Default runlevel, this may be overriden on the kernel command-line # or by faking an old /etc/inittab entry env DEFAULT_RUNLEVEL=2 ... $ less /etc/init/rc.conf # rc - System V runlevel compatibility # # This task runs the old System V-style rc script when changing between # runlevels. description "System V runlevel compatibility" author "Scott James Remnant <scott@netsplit.com>" start on runlevel [0123456] stop on runlevel [!$RUNLEVEL] export RUNLEVEL export PREVLEVEL console output env INIT_VERBOSE task exec /etc/init.d/rc $RUNLEVEL
rc-sysinit.conf è il file di configurazione per rc.conf e stabilisce il runlevel (per i sistemi desktop con interfaccia grafica è il 2 invece del tradizionale 5). Il file rc.conf avvia rc con il numero di runlevel.
La directory /etc/default che contiene gli script di configurazione dei servizi.
http://ennebi.solira.org |
ennebi@solira.org |