Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Rilasciato Upstart 1.0: init classico e upstart a confronto

Link copiato negli appunti

Nel suo blog, Scott James Remnant ha annunciato il

[!] Ci sono problemi con l'autore. Controllare il mapping sull'Author Manager

, uno tra i più famosi progetti tesi alla sostituzione del "vecchio" init con un concetto più moderno.

La versione 1.0 è direttamente derivata da Upstart 0.6 (utilizzato nell´ultima LTS di Ubuntu e in RHEL e compagne) e, correggendo un buon numero di bug, data l´importanza della numerazione, si presenta al mondo come progetto maturo.

Ma che cos´è esattamente init? E che cosa migliora Upstart?

In ogni classico sistema operativo basato su Linux, eseguiti i compiti di inizializzazione dell´hardware, di mounting, eccetera, il kernel lancia init, che si occupa, in user space, di lanciare tutti i servizi configurati per il runlevel in cui il sistema andrà a porsi. Un runlevel è un possibile stato del sistema. A seconda del runlevel il sistema compie determinate azioni.

Debian e Ubuntu, ad esempio, usano i seguenti runlevel:

  • 1 (modalità singolo utente, con / montata in sola lettura, per compiti di troubleshooting); ;
  • 2 a 5 (modalità multiutente: sono di fatto equivalenti);
  • 0 (arresta il sistema, = halt); ;
  • 6 (riavvia il sistema, = reboot).

Il procedimento di avvio viene controllato dal file /etc/inittab, il quale fa in modo che avvenga quanto segue.

Quando si entra in un runlevel tutti i file in /etc/rc.d/ vengono eseguiti. La prima lettera del nome determina il modo in cui lo script viene lanciato: quelli che iniziano con K (kill) vengono lanciati con l´argomento stop (lo script deve prevederlo). Quelli che iniziano per S (start) vengono lanciati con l´argomento start. I file vengono eseguiti in ordine alfabetico (i servizi gireranno quindi in background, "staccandosi" da init); per cui quelli stop vengono lanciati prima di quelli start e i numeri a due cifre che seguono K o S determinano l´ordine in cui vengono eseguiti.

I file in /etc/rc.d sono semplici collegamenti simbolici agli script in /etc/init.d/ (dove appunto saranno salvati i veri e propri script di lancio/arresto dei servizi).

Il comportamento visto è relativo al "SysV init" classico, ma, non da molto, le distribuzioni hanno iniziato ad introdurre variazioni sul tema.

La problematica più importante circa l´init classico risiede nella sua sequenzialità: gli script di avvio dei servizi vengono lanciati sequenzialmente e se uno di essi blocca i rimanenti, gli altri aspettano.

Se Debian 6 ha introdotto il concetto di dependency-based boot, Ubuntu utilizza appunto Upstart, il quale mira all´accelerazione del processo di boot utilizzando una logica diversa.

Upstart è orientato agli eventi e lavora utilizzando il concetto di job. I job file sono gli script di /etc/init, ma non c´è una sequenza specifica: ogni job specifica gli eventi ai quali fare da handler e, quando questi eventi occorrono, Upstart lancia tutti gli handler in parallelo.

Un evento basilare è chiaramente rappresentato da startup (lanciato dallo stesso Upstart all´avvio): tutti i job che devono essere lanciati allo startup conterranno il codice:

start on startup

Altro chiaro evento basilare è quello legato allo stop dei servizi.

Upstart è più flessibile dell´init classico (e del dependency-based boot init di Debian Squeeze, il quale essenzialmente si occupa solo di parallelizzare l´esecuzione degli script), in quanto lancia i servizi solo se effettivamente servono. Immaginiamo che un computer venga avviato senza scheda di rete: se init avvia comunque ogni servizio relativo alla rete, Upstart non lo fa fino a che non venga lanciato l´evento network up.

Per compatibilità col passato, Upstart è anche in grado di lanciare i canonici script di init.d/ non modificati.

Quando tutti gli script di avvio saranno aggiornati, Ubuntu non contemplerà più il concetto di runlevel.

Questo articolo contiene link di affiliazione: acquisti o ordini effettuati tramite tali link permetteranno al nostro sito di ricevere una commissione nel rispetto del codice etico. Le offerte potrebbero subire variazioni di prezzo dopo la pubblicazione.

Ti consigliamo anche