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.
- Che cos'è?
- Cos'è systemd?
- Perché è stato necessario sostituire init?
- 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:
- Upstart – Un demone sostitutivo init implementato in Ubuntu GNU/Linux e progettato per avviare il processo in modo asincrono.
- Epoch – Un demone sostitutivo init costruito attorno alla semplicità e alla gestione dei servizi, progettato per avviare il processo a thread singolo.
- Mudar – Un demone sostitutivo init scritto in Python, implementato su Pardus GNU/Linux e progettato per avviare il processo in modo asincrono.
- 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
- Design pulito, all'avanguardia ed efficiente.
- Processo di avvio più semplice.
- Elaborazione simultanea e parallela all'avvio.
- API migliore.
- Sintassi delle unità semplici.
- Possibilità di rimuovere componenti opzionali.
- Impronte di memoria insufficienti.
- Tecnica migliorata per esprimere le dipendenze.
- Istruzioni di inizializzazione scritte nel file di configurazione e non nello script di shell.
- Utilizzare Unix Domain Socket.
- Pianificazione dei lavori utilizzando i timer del calendario di sistema.
- Registrazione eventi con journald.
- Scelta della registrazione degli eventi di sistema con systemd e syslog.
- I registri vengono archiviati in un file binario.
- lo stato systemd può essere preservato per essere chiamato più tardi in futuro.
- Tieni traccia del processo utilizzando il cgroup del kernel e non il PID.
- Accesso degli utenti gestito da systemd-logind.
- Migliore integrazione con Gnome per l'interoperabilità.
Sistema dei colli di bottiglia
- Tutto in un unico posto.
- Non standard POSIX.
Integrazione di Systemd e Distro
- Linux Distribution
Integrazione
- Fedora
Sì, la prima distribuzione ad adottare systemd
- Arch
SÌ
- RedHat
SÌ
- CentOS
SÌ
- 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
SÌ
- 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.