Ricerca nel sito web

La storia dietro "init" e "systemd": perché è necessario sostituire "init" con "systemd" in Linux


Sono iscritto a diverse mailing list relative a varie distribuzioni e applicazioni Linux solo per tenermi aggiornato su cosa sta succedendo e dove. Quali sono i nuovi bug? Quali sono le patch rilasciate? Cosa ci si aspetta nella prossima versione? e un sacco di altre cose. In questi giorni la mailing list è fortemente popolata di "Scegli da che parte stare su Linux Divide", principalmente sulla mailing list Debian insieme a poche altre.

In cosa consiste "Scegli da che parte stare su Linux Divide"?

Il demone init verrà sostituito con il demone systemd su alcune distribuzioni Linux, mentre molte di loro lo hanno già implementato. Ciò sta creando un enorme divario tra la tradizionale Unix/Linux Guard e la nuova Linux Guard: programmatori e amministratori di sistema.

In questo articolo discuteremo e risolveremo tutte le domande una per una.

  1. Che cos'è?
  2. Cos'è systemd?
  3. Perché è stato necessario sostituire init?
  4. Quali funzionalità avrà systemd.

Cosa c'è dentro?

In Linux, init è l'abbreviazione di Inizializzazione. init è un processo demone che si avvia non appena il computer si avvia e continua a funzionare fino allo spegnimento. Infatti init è il primo processo che si avvia all'avvio di un computer, rendendolo il genitore di tutti gli altri processi in esecuzione direttamente o indirettamente e quindi in genere gli viene assegnato "pid=1".

Se per qualche motivo il demone init non riesce ad avviarsi, nessun processo verrà avviato e il sistema raggiungerà una fase chiamata “Kernel Panic“. init è più comunemente indicato come System V init. System V è il primo sistema operativo UNIX commerciale progettato e l'utilizzo di init sulla maggior parte delle distribuzioni Linux odierne è identico al sistema operativo System V con alcune eccezioni come Slackware che utilizza lo stile BSD e Gentoo che utilizza init personalizzato .

La necessità di sostituire init con qualcosa di più perfetto era sentita da molto tempo e di volta in volta sono state sviluppate diverse alternative, alcune delle quali sono diventate il sostituto init nativo della distribuzione, alcune delle quali sono:

  1. Upstart – Un demone sostitutivo init implementato in Ubuntu GNU/Linux e progettato per avviare il processo in modo asincrono.
  2. Epoch – Un demone sostitutivo init costruito attorno alla semplicità e alla gestione dei servizi, progettato per avviare il processo a thread singolo.
  3. Mudar – Un demone sostitutivo init scritto in Python, implementato su Pardus GNU/Linux e progettato per avviare il processo in modo asincrono.
  4. systemd – Un demone sostitutivo init progettato per avviare il processo in parallelo, implementato in una serie di distribuzioni standard: Fedora, OpenSuSE, Arch, RHEL, CentOS, ecc.

Cos'è systemd?

Un systemd è un demone di gestione del sistema denominato con la convenzione UNIX per aggiungere "d" alla fine del demone. In modo che possano essere facilmente riconosciuti. Inizialmente è stato rilasciato sotto la GNU General Public License, ma ora le versioni sono effettuate sotto GNU Lesser General Public License. Similmente a init, systemd è il genitore di tutti gli altri processi direttamente o indirettamente ed è il primo processo che si avvia all'avvio, quindi in genere gli viene assegnato un "pid=1".

Un systemd può fare riferimento a tutti i pacchetti, utilità e librerie attorno al demone. È stato progettato per superare le carenze di init. Si tratta di un processo in background progettato per avviare processi in parallelo, riducendo così il tempo di avvio e il sovraccarico computazionale. Ha molte altre funzionalità rispetto a init.

Perché era necessario sostituire init?

Un processo di inizializzazione viene avviato in serie, ovvero un'attività viene avviata solo dopo che l'avvio dell'ultima attività ha avuto esito positivo ed è stato caricato in memoria. Ciò spesso comportava tempi di avvio ritardati e lunghi. Tuttavia, systemd non è stato progettato per la velocità ma per portare a termine le cose in modo ordinato, evitando così tutti i ritardi necessari alle Nazioni Unite.

Funzionalità di systemd
  1. Design pulito, all'avanguardia ed efficiente.
  2. Processo di avvio più semplice.
  3. Elaborazione simultanea e parallela all'avvio.
  4. API migliore.
  5. Sintassi delle unità semplici.
  6. Possibilità di rimuovere componenti opzionali.
  7. Impronte di memoria insufficienti.
  8. Tecnica migliorata per esprimere le dipendenze.
  9. Istruzioni di inizializzazione scritte nel file di configurazione e non nello script di shell.
  10. Utilizzare Unix Domain Socket.
  11. Pianificazione dei lavori utilizzando i timer del calendario di sistema.
  12. Registrazione eventi con journald.
  13. Scelta della registrazione degli eventi di sistema con systemd e syslog.
  14. I registri vengono archiviati in un file binario.
  15. lo stato systemd può essere preservato per essere chiamato più tardi in futuro.
  16. Tieni traccia del processo utilizzando il cgroup del kernel e non il PID.
  17. Accesso degli utenti gestito da systemd-logind.
  18. Migliore integrazione con Gnome per l'interoperabilità.
Sistema dei colli di bottiglia
  1. Tutto in un unico posto.
  2. Non standard POSIX.

Integrazione di Systemd e Distro

Linux Distribution

Integrazione

Fedora

Sì, la prima distribuzione ad adottare systemd

Arch

RedHat

CentOS

Debian

Sì, il nome in codice di Debian 8 Jessie avrà systemd per impostazione predefinita

Gentoo

Sì, ma deve essere scaricato, installato e configurato con l'init personalizzato

OpenSUSE

Slack

No (Sebbene non sia stato adottato fino ad ora in Slackware, Patric Volkerding non ha mostrato alcuna indicazione se verrà adottato o meno)

Ubuntu

Sì, deve essere installato e configurato con Upstream.

Controversia

Linus Torvalds, capo architetto del kernel Linux, ritiene che l'atteggiamento dello sviluppatore chiave di systemd nei confronti degli utenti e le segnalazioni di bug non sembrino accettabili. È stato anche riferito che la filosofia systemd è strana e un modo estraneo per controllare i processi di sistema. Lo stesso è stato registrato da Patric Volkerding e da altri importanti utenti e sviluppatori Linux, nonché sui forum online, di tanto in tanto.

systemd contro init

Features init systemd
DBus Dependency – Mandatory No Yes
Device based Activation No Yes
Device dependency configuration with udev No Yes
Timer based Activation Cron/at Proprietary
Quota Management No Yes
Automatic Service Dependency Handling No Yes
Kills users Process at logout No Yes
Swap Management No Yes
SELinux integration No Yes
Support for Encrypted HDD No Yes
Static kernle module loading No Yes
GUI No Yes
List all the child processes No Yes
Sysv compatible Yes Yes
Interactive booting No Yes
Portable to non x86 Yes No
Adopted on Several Distro Several Distro
Parallel service startup No Yes
Resource limit per service No Yes
Easy extensible startup script Yes No
Separate Code and Configuration File Yes No
Automatic dependency calculation No Yes
Verbose debug Yes No
Version N/A V44+
Size 560 KB N/A
Number of Files 75 files 900 files + glib + DBus
Lines of code – LOC 15000 (Approx) 224000 (Approx) (inc Codes, comments and white space) 125000 (Approx) (acctual code)

Conclusione

Tutto ciò che viene eseguito come pid=1 non deve rompersi, non deve creare confusione e deve essere controllato dagli utenti in modo efficace ed efficiente. Molti utenti credono che sostituire init con systemd non sia altro che reinventare la ruota ogni volta come effetto collaterale di Linux. Ma questa è la diversa natura di Linux. Questo perché Linux è molto potente. Il cambiamento è positivo e dobbiamo apprezzarlo se è per una buona ragione.

È tutto per ora. Sarò di nuovo qui con un altro articolo interessante che amerete leggere. Fino ad allora restate sintonizzati e connessi a Tecmint. Non dimenticare di fornirci il tuo prezioso feedback nei commenti qui sotto.