back

ebbene sì: o uno o l'altro; nonostante upstart sia retrocompatibile con gli script di INIT, quest'ultimo dovrà però fare posto se vogliamo utilizzare il nuovo sistema di boot. Con una lacrimuccia di malinconia diamo comunque il fatidico "yes" e andiamo avanti. Ma le sorprese non sono finite:

WARNING: Performing this action will probably cause your system to break!
         Do NOT continue unless you know EXACTLY what you are doing!
To continue, type the phrase "I am aware that this is a very bad idea":

Avevamo già parlato di back up? Bene, se ancora non ne avete uno è sicuramente un ottimo momento per farlo. Preso un bel respiro? Allora accettiamo di "essere consci di aver avuto veramente una brutta idea" e passiamo all'installazione.
Almeno nel mio caso, l'installazione si svolge senza problemi e dopo un riavvio il sistema è ancora lì come nuovo. I messaggi a video sono gli stessi e se non lo sapessimo, la differenze da sysvinit non si nota minimamente.
Dando un'occhiata ai file di configurazione, la novità riguarda /etc/init/ (poco tempo fa /etc/event.d, ma come conferma il changelog della nuova versione: The location of the job files has changed from /etc/event.d to /etc/init, in addition a *.conf suffix is now mandatory.): questa directory definisce che processi sono legati a che eventi. Dal momento che debian resta fedele alla LSB (Linux Standard Base), che obbliga l'utilizzo di una directory /etc/init.d, upstart utilizza anch'esso questi script; la "conversione" avviene appunto tramite gli script in /etc/init.

Ancora una volta, grazie a questa compatibilità, potremo utilizzare ancora sysv-rc (e cioè le directories /etc/rcX.d) e dunque la sua configurazione con ad esempio sysv-rc-conf. Un'alternativa ci viene data da file-rc, il quale utilizza un unico file, /etc/runlevel.conf per configurare i vari runlevel. In ogni caso, sempre tramite gli script in /etc/init.d.

insserv

Come abbiamo già visto all'inizio del capitolo precedente riguardante la parallelizzazione dei processi, questo programma permette di riordinare l'ordine di avvio dei vari processi a seconda delle dipendenze definite negli header degli script. Per fare un esempio, l'header dello script /etc/init.d/networking è il seguente:

### BEGIN INIT INFO
# Provides:          networking
# Required-Start:    mountkernfs $local_fs
# Required-Stop:     $local_fs
# Should-Start:      ifupdown
# Should-Stop:       ifupdown
# Default-Start:     S
# Default-Stop:      0 6
# Short-Description: Raise network interfaces.
### END INIT INFO

Come possiamo vedere, questo script necessita mountkernfs e $local_fs per poter essere eseguito. Il ruolo di insserv è proprio quello di riordinare l'avvio dei processi secondo le dipendenze. Questo proprio per evitare di lanciare un processo contemporaneamente ad un altro che ha però bisogno del primo per poter funzionare.

back