Systemd: cosa devi sapere

Systemd - Ce trebuie să știți
⏱️ 6 min read

A meno che tu non abbia vissuto sotto una roccia, o peggio – non ti importa molto di come funziona Linux, devi averne sentito parlare systemd, il (relativamente) nuovo sistema init che sostituisce il vecchio e obsoleto SysV init recentemente adottato dalla maggior parte delle principali distribuzioni Linux.

Cos’è un sistema init?

All’avvio della tua macchina Linux, eseguirà prima del codice “integrato”, caricato prima dal BIOS o dall’UEFI, seguito dal bootloader, che in base alla sua configurazione carica un kernel Linux. Il kernel carica i driver e, come primo lavoro, avvia il processo di inizializzazione, al quale viene assegnato il primo PID (Process ID) 1.

Dal punto di vista dell’utente questo sembra avviare reti e database, ecc., Ma in realtà c’è un processo piuttosto complesso che si svolge sotto il cofano. I servizi vengono avviati, arrestati e riavviati, spesso in parallelo tra loro. Alcuni vengono eseguiti con privilegi diversi rispetto ad altri, gli stati del servizio vengono segnalati e registrati e vengono eseguite molte altre attività che faranno funzionare le diverse parti del sistema e saranno in grado di interagire con i suoi utenti e l’ambiente.

Il modo in cui questo viene implementato, tuttavia, è tutt’altro che uniforme, ed è qui che tutto smette di essere comune e ben definito.

Il vecchio sistema init

Il sistema di inizializzazione utilizzato dalla maggior parte delle distribuzioni Linux tradizionali fino a poco tempo fa era System V init (o SysV init in breve), da cui deriva il suo nome UNIX System V (Pronunciato “System Five”), il primo sistema UNIX disponibile in commercio. System V OS ha avuto un modo specifico per eseguire il suo processo di inizializzazione e SysV init si è mantenuto fedele a questo nel corso degli anni.

systemd-sysvinit

E sono passati molti anni. UNIX System V è stato originariamente rilasciato nel 1983, rendendo init SysV init un approccio vecchio di oltre 30 anni all’avvio di macchine Linux.

La necessità di un cambiamento

Come è stato notato, SysV init è obsoleto e da tempo doveva essere sostituito. Alcuni dei motivi per questo includono:

  • SysV init usa / sbin / init per avviare il processo init, ma lo stesso init ha un ruolo molto limitato. init fa poco più che avviare /etc/init.d/rc, secondo la configurazione letta da / etc / inittab, che a sua volta eseguirà gli script per fare il vero lavoro del processo di init. Questo, a meno che non venga pannellato esplicitamente (come con startpar su Debian), avverrà in sequenza, uno script si avvia dopo l’altro, rallentando l’intero processo poiché ogni script deve attendere il termine di quello precedente.
  • SysV init non ha accesso al PID o ai processi che ha (indirettamente) avviato. Legge solo i PID e li associa ai processi effettivi in ​​modo circostanziato e complicato.
  • Per gli amministratori di sistema che cercano di modificare l’ambiente in cui si avvia un determinato processo, è abbastanza difficile con SysV init. (Per ottenere ciò dovranno modificare l’init strcipt responsabile dell’avvio del processo dato.)
  • Ci sono alcune funzionalità comuni a ogni servizio che SysV non implementa, ma ogni processo dovrebbe invece implementarsi da solo, come “demonizzare” se stessi (diventando un demone di sistema), che è un processo elaborato e lungo. Invece di implementare questi passaggi una volta, SysV richiede che ogni processo esegua il lavoro da solo.
  • SysV lascia anche alcune funzionalità a programmi esterni e non sa nulla dei servizi avviati da questi.

Tutto quanto sopra, e molti altri difetti di progettazione, o meglio il design del sistema obsoleto di SysV, ha reso necessaria da tempo la creazione di un moderno sistema di inizializzazione.

Inserisci systemd

Ci sono stati molti tentativi di creare un sistema init alternativo, di cui systemd è solo uno di questi. Ubuntu era solito eseguire il proprio sistema di inizializzazione chiamato upstart. Gentoo usa ancora OpenRC. Altri sistemi init includono initng, busybox-init, eseguirlo, e Mudur e altri.

Il motivo per cui systemd è un chiaro vincitore è che è stato adottato dalla maggior parte delle principali distribuzioni. RHL e CentOS sono naturalmente andati nella direzione di systemd, poiché Fedora è stata la prima distribuzione ad adottare ufficialmente systemd nel 2011. Ma systemd è diventato davvero l’unico sistema di init a governarli tutti, quando Debian 8 è passata ufficialmente a systemd, portando con sé Ubuntu e derivati , superando Canonical (o più precisamente Mark Shuttleworth) opposizione iniziale verso systemd.

In che modo systemd è diverso?

  • Systemd mira a fornire un unico modo centralizzato per gestire il processo di inizializzazione dall’inizio alla fine.
  • Avvia e arresta processi e servizi tenendo traccia delle loro dipendenze. Può persino avviare un processo in risposta al requisito di dipendenza di un altro processo.
  • Oltre ad avviare e arrestare i processi durante il tempo di avvio, Systemd può anche avviarsi in qualsiasi momento quando il sistema è attivo in risposta a determinati eventi di attivazione, ad esempio quando un dispositivo è collegato.
  • Inoltre non richiede che i processi si demonizzino da soli. A differenza di SysV init, systemd può gestire i servizi in esecuzione senza dover passare attraverso il lungo processo per diventare demoni.
  • A differenza di SysV init, systemd conosce e tiene traccia di tutti i processi, inclusi i PID, e ottenere informazioni sui processi è molto più semplice per gli amministratori di sistema in systemd.
  • Systemd supporta contenitori che sono fondamentalmente ambienti di servizio isolati senza il requisito di macchine virtuali. Ciò ha un grande potenziale verso progetti di sistema più sicuri e più semplici in futuro.

systemd-containers

Naturalmente questi sono solo alcuni dei principali vantaggi. Per una discussione completa sui vantaggi di systemd, dovresti leggere Debian 8 “Dichiarazione di posizione di Systemd

Controversia

Ovviamente systemd non è stato accolto favorevolmente da tutti. In effetti, molti lo hanno fatto e lo fanno ancora disapprovarlo, definendolo monolitico e ingombrante, alcuni addirittura accusandolo di andare alla “via delle finestre” per avere tutto centralizzato. Molti sostengono che non sia “alla maniera di Linux”, e certamente systemd non sembra essere in accordo con gli standard POSIX, e se consideriamo systemd come un toolkit (oltre al semplice binario), è decisamente hugae.

systemd-infografica

Tuttavia, systemd è chiaramente un passo avanti e, sebbene non sia perfetto, molte delle critiche che ha ricevuto sono state indirizzato dal suo autore originale e lo sviluppatore Lennart Poettering. È sicuramente un progresso molto necessario e un passo avanti rispetto al vecchio sistema di inizializzazione. Linus Torvalds, il creatore di Linux, non sembra dare fastidio a systemd troppo, e chi siamo noi per discutere con “Il Creatore”.

Conclusione

Essendo stato adottato da tutte le principali distribuzioni Linux, systemd è qui per restare. Qualunque cosa dicano alcuni amministratori di sistema per qualsiasi motivo, systemd è il futuro di Linux mainstream, piaccia o meno ai singoli utenti, il che, considerando i suoi distinti vantaggi, non è necessariamente una cosa negativa.

Per l’utente medio porta tempi di avvio più rapidi e probabilmente sistemi più affidabili, mentre in futuro le distribuzioni che lo adottano potranno diventare più “compatibili” tra loro. Per quanto riguarda l’utente, trarremo sicuramente vantaggio dal design di sistema più aggiornato e contemporaneo che porta ai nostri desktop.

Join our Newsletter and receive offers and updates! ✅

0 0 votes
Article Rating
Avatar di Routech

Routech

Routech is a website that provides technology news, reviews and tips. It covers a wide range of topics including smartphones, laptops, tablets, gaming, gadgets, software, internet and more. The website is updated daily with new articles and videos, and also has a forum where users can discuss technology-related topics.

Potrebbero interessarti anche...

Subscribe
Notificami
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x