back

Le fasi del boot: parte seconda

Introduzione

Nell'articolo Le fasi del Boot del numero 0 abbiamo illustrato come si sviluppa l'avvio del kernel Linux dopo la sua chiamata dal bootloader. L'articolo finiva con la seguente frase:

«Arrivati a questo punto dopo la creazione del thread di init il kernel si mette nel loop di idle con il pid=0.
Quello che succede dopo dipende dal nostro programma di init.

Il nostro sistema è ora pronto ad eseguire i nostri programmi.»

e da dove lo abbiamo lasciato incominceremo questo articolo, ossia dall'avvio di init che in debian si trova in /sbin/init. Come possiamo notare questo programma non si trova in /boot e non è dunque parte del kernel, ma bensì del sistema operativo GNU/Linux. Da un punto di vista prettamente tecnico saremmo dunque nel capitolo relativo a linux (in quanto kernel) off-topic; vista però la "sequenza logica" dopo il bootstrap del kernel per portare il sistema in uno stato operativo (avviando i programmi e i servizi necessari) abbiamo deciso di continuare la parte relativa al boot del sistema operativo in questo capitolo.

Init

Init è il primo processo avviato dopo il boot del kernel e ha dunque un pid=1. Nei sistemi UNIX il pid sta per process identifier ed è un numero non negativo assegnato automaticamente in modo univoco all'interno del sistema e costante per tutta la durata del processo. Tanto per divertirci un po' e per confermare il pid di init possiamo provare a visualizzare tutti i processi attivi che sono in esecuzione attualmente sul nostro sistema. Per fare ciò daremo il comando:

$ ps -e

ottenendo fra i vari processi il "famoso" "pid=1" di init:

PID TTY          TIME   CMD
  1 ?        00:00:00   init

Il ruolo di init è quello di generare tutti gli altri processi. Init viene inoltre solitamente configurato in modo da portare il sistema in vari livelli operativi con caratteristiche diverse: i runlevel (v. sotto). Il suo file di configurazione è /etc/inittab e definisce con la prima linea il runlevel di default:

id:2:initdefault:

in questo caso, il default di debian, il runlevel 2.

back