\ /
DevOps  Open source  Engineered Systems  DEV/ARCH  Training 

Systemd e le sue alternative

In molti sistemi operativi GNU/Linux moderni, systemd è il sistema init predefinito. Tuttavia, ci sono molte persone che preferiscono altri sistemi init, come OpenRC. In questo articolo, esploreremo le ragioni per cui alcune persone scelgono di utilizzare OpenRC invece di systemd.

Prima di tutto, è importante comprendere cosa sia un sistema init e il suo ruolo in un sistema operativo GNU/Linux. Un sistema init è il primo processo che viene eseguito al boot (all'avvio) del sistema operativo. Il suo compito principale è di avviare gli altri processi e i servizi del sistema operativo. Un sistema init è anche responsabile di gestire lo stato dei processi e dei servizi nel sistema operativo.

Il sistema init predefinito per molti sistemi operativi GNU/Linux moderni è systemd, scritto e rilasciato dall'azienda RedHat e assunto di default da molte distribuzioni tra cui Fedora, Ubuntu e persino Arch Linux. Tuttavia, molte persone preferiscono utilizzare altri sistemi init, come OpenRC. Una delle ragioni principali per cui alcune persone preferiscono OpenRC è la sua semplicità. OpenRC è progettato per essere facile da usare e configurare, con una sintassi semplice e intuitiva. Ciò lo rende molto adatto per i sistemi operativi che richiedono una configurazione personalizzata. Inoltre, OpenRC è noto per la sua affidabilità. Molti utenti lo preferiscono perché non dispone di alcune delle complessità di systemd, il che lo rende meno soggetto a malfunzionamenti e crash. Inoltre, OpenRC ha dimostrato di funzionare bene in molti ambienti, inclusi sistemi embedded, server e desktop. Un'altra ragione per cui alcune persone preferiscono OpenRC è la sua maggiore flessibilità: mentre systemd è fortemente integrato con il sistema operativo e ha un approccio più monolitico alla gestione dei processi e dei servizi, OpenRC è progettato per essere più modulare. Ciò significa che gli utenti possono personalizzare facilmente il loro sistema per soddisfare le loro esigenze specifiche. Infine, molti utenti preferiscono OpenRC perché è open source. Ciò significa che gli utenti possono vedere e modificare il codice sorgente per adattarlo alle loro esigenze specifiche. Inoltre, ci sono molti sviluppatori e comunità che lavorano attivamente su OpenRC, il che significa che ci sono molte risorse disponibili per gli utenti che hanno bisogno di assistenza o supporto.

Mentre systemd è il sistema init predefinito per molti sistemi operativi GNU/Linux moderni, cosa parzialmente non giustificata (che sia per abitudine degli informatici che cominciano con Fedora o Ubuntu?) ci sono molte ragioni per cui alcune persone preferiscono OpenRC. Se potessimo fare un paragone tra systemd e altri init come OpenRC potremmo dire che OpenRC è come una bicicletta, mentre systemd come un automobile di ultima generazione: quale delle due è più comoda? L'automobile, per certo. Attenzione però che per dare questa comodità (intesa come facilità d'uso in relazione ad una parsimonia energetica dell'utente), un'automobile è estremamente complessa, soprattutto se paragonata ad una bicicletta. E pensiamo ora se dovessimo aggiustarle entrambe: è più semplice aggiustare un'automobile o una bicicletta? Sicuramente la risposta sarebbe la bicicletta. Pertanto prestiamo attenzione: Semplicità != facilità

Su GNU Linux il focus non è mai l'utente. Il focus del kernel e di ogni componente ad esso vicino, è mantenere il codice robusto e semplice "nello sviluppo". Che poi ad oggi ci siano distro nate per rendere alcune distro Linux "semplici" è un altro conto. Dal punto di vista della programmazione e del mantenimento di un software, meno si demanda ad un unico componente e meglio è. Systemd fa il contrario: cerca proprio di centralizzare tutto, tanto è che ad oggi ottenuto il controllo di systemd si può controllare anche la rete, oltre ai servizi, gli unit files, i processi, il controllo dell'avvio del sistema, la gestione dei log, della potenza, etc. La filosofia KISS (keep it simple stupid) riguarda proprio la filosofia che si ereditò dallo sviluppo dei sistemi operativi Unix e consisteva nello sviluppo di software semplicemente modificabile e dunque mantenibile. La filosofia KISS si basa sull'idea che i sistemi complessi sono più difficili da capire e da usare rispetto a quelli semplici. Inoltre, la complessità può portare a errori, problemi di sicurezza e difficoltà di manutenzione. Per questo motivo, la filosofia KISS incoraggia i progettisti a creare soluzioni che siano il più possibile semplici e chiare. E questo atteggiamento vale dai building blocks (leggasi le classi per cui si dice che se una classe sta facendo più di 3 o 5 cose, allora si rende necessario l'utilizzo di un'altra classe), fino ai software fatti e finiti. Systemd, centralizzando, rende troppe cose dipendenti da un elemento della catena. Se quell'elemento si "rovina", a seguire la maggior parte del sistema crolla con esso.

In conclusione, esistono molte meno distro che fanno uso di altri init system diversi da systemd. Alcune di esse sono Gentoo, Artix (una fork di Arch), Devuan, Guix (usa shepherd). Come esperienza personale posso dire che, su Artix, la configurazione dei servizi su OpenRC è facile ma talvolta richiede proprio un intervento manuale per la scrittura da sé dei servizi. Ma d'altronde come già ben sappiamo, maggiore sicurezza implica necessariamente tempi più lunghi. Ho provato anche ad installare Arch Linux con OpenRC, ma ho constatato che non è affatto semplice e richiede conoscenze abbastanza approfondite del sistema operativo che si sta usando. Per rimuovere systemd da Arch Linux bisogna trovare un'alternativa ad udev, chiamata eudev, sviluppata dagli sviluppatori di Gentoo, poiché udev è una dipendenza del pacchetto gnome. E sugli AUR la release del pacchetto risale al 2020, pertanto uno si vede costretto ad andare sul repository github, scaricare il codice, provare a compilarselo e produrre un pacchetto binario da caricare sugli AUR. Artix non usa udev e per questo allora la soluzione più razionale sarebbe allora usare Gentoo... peccato che richieda conoscenze ancora più approfondite, che gli AUR siano molto più ricchi di software e che la maggior parte dei pacchetti su di esso si debbano compilare.

Che in futuro per garantire alla privacy e all'anonimato saremo costretti a dovere reinventare la ruota, compilando da zero LFS (Linux From Scratch)?

comments powered by Disqus