GNU/Linux Init System
Fino al 2006 il sistema di init delle distribuzioni di Linux aderiva essenzialmente a 2 standard, c’erano le distribuzioni che usavano System V e quelle che usavano il BSD-Style.
Entrambi si appoggiavano al programma “init” e un sistema di script scritti in shell. Non erano molto distanti l’uno dall’altro e chiunque conoscesse un po’ di shell scripting era in grado di comprendere velocemente come era costruito il boot del sistema.
Nel 2006, Ubuntu e tutte le sue derivate iniziarono ad utilizzare un nuovo sistema: Upstart, che venne anche adottato successivamente da RedHat e Fedora.
Nel 2010 venne rilasciata la prima release di un altro sistema di init inizialmente progettato da dipendenti di Redhat: systemd. Durante il 2015 tutte le maggiori distribuzioni Linux passarono a systemd.
L’approccio rivoluzionario di systemd ha da subito creato dibattito e opinioni controverse, perché rompe alcune importanti tradizioni Unix, tra le quali il principio di semplicitá, cioé che un software deve fare una sola cosa e farla bene. Alcune distribuzioni, anche se contrarie, sono state obbligate ad adottarlo de-facto, per via di alcune dipendenze legate a GNOME.
Ma facciamo una carrellata dei sistemi di init esistenti:
Sysvinit
Il system V nasce nel 1983! Si, é piú vecchio di molti di voi che leggete!
Venne sviluppato da una cordata di aziende tra cui IBM, HP, Solaris e Illumos Distributions. Non ho fatto una ricerca approfondita, ma attualmente viene utilizzato da Devuan, PCLinuxOS e LFS. Diciamo che siamo alla fine del suo percorso.
Systemd
Come dicevo, oggi é il piú utilizzato. Lo usano Fedora, Redhat, Debian, Ubuntu, OpenSuse.
BSD-Style
Credo che lo usino solo CRUX e Slackware.
OpenRC
Usato essenzialmente da Gentoo e derivate, ovviamente la natura di queste distribuzioni permette anche di usare uno qualunque degli altri sistemi di init.
La polemica
Systemd non é un semplice init, fa molte cose che nella filosofia Unix sono compito di altri software.
Piú che ad un classico init system somiglia ad svchost.exe di Windows.
Gestisce il power management, i punti di mount, cron, criptazione del disco, socket API/inetd, syslog, la configurazione della rete, gestione del login, readahead, GPT partition discovery, registrazione dei container, hostname, locale, time management, e altre cose.
La motivazione di molti esperti che criticano questo software é semplicemente che se viene trovato un bug, anche minore, in uno qualunque dei moduli che systemd gestisce, é (in teoria) possibile buttare giú l’intero sistema di init del sistema operativo.
In aggiunta, un sacco di upgrade software che una volta non richiedevano il reboot, a causa di queste invasioni di campo oggi lo richiedono. E’ monolitico e pesantemente orientato al desktop. Questo lo rende una scelta poco saggia per molti utilizzi di Linux.
A dispetto di tutte queste critiche systemd é stato adottato da tutte le distribuzioni piú importanti e GNOME lo richiede obbligatoriamente. Inutile dire che chi lavora in questo campo lo deve studiare e ci deve avere a che fare.
Riguardo a systemd Linus Torvalds ha dichiarato che non ha opinioni precise. Ha avuto qualche problema con gli sviluppatori riguardo ad alcune compatibilitá e bug, in quanto erano un po’ altezzosi, e pensa che alcune scelte sono insensate (la sua esatta parola: insane), come ad esempio i log binari, ma questi sono dettagli, non grandi problemi.
Theodore T’so uno sviluppatore del kernel di Linux e ingegnere Google sostiene che la cosa peggiore é che stanno cercando di risolvere problemi reali di alcuni usi specifici, e che questo va a discapito di assunti piú generali fatti in altre parti del sistema.
Inoltre, il passaggio a questo sistema é stato fatto troppo velocemente e loro non considerano necessariamente una loro responsabilitá mettere a posto il resto dell’ecosistema Linux.
T’so mette, inoltre, in evidenza alcune atteggiamenti che ha notato anche in GNOME 3. Cioé che loro si interessano solamente di una piccola parte degli utenti desktop Linux e hanno abbandonato alcuni modi di interagire col desktop in favore dei touchscreen per attrarre un pubblico meno specializzato, cioé, se non ti trovi nel loro target diventi un utente di serie B.
Per contro, tutti ammettono che system v é ormai datato, ma nessuno sembra volersi assumere la responsabilitá di scrivere un nuovo init. Quindi, almeno ad oggi, sembrano non esserci alternative.
Quello che sembra trasparire tra le righe é che systemd sia un tentativo di uniformare con la forza l’ecosistema Linux e che questo vada ad alienare e marginalizzare una parte della comunitá open-source.
Debian per spiegare la scelta di systemd ha prodotto un documento dove descrive tutti i vantaggi che il sistema ottiene con il suo passaggio. Il documento é lungo, ma tra i vantaggi c’é una maggiore velocitá nel boot, una maggiore semplicitá nella gestione dei file di boot dei pacchetti, che prima dovevano essere scritti dai manutentori e oggi sono uguali per tutte le distribuzioni che adottano systemd.
Un migliore sistema di shutdown dei processi, un sistema strutturato dei log, un migliorato sistema dei virtual TTY. Un sistema centralizzato di startup e monitoring dei processi, piú funzionale nei sistemi di high availability. Un sistema unificato per la gestione di molte impostazioni di sistema come timedatectl, hostnamectl, loginctl etc. etc.
un sistema di API che permette alle applicazioni di interfacciarsi con systemd. Attualmente queste API vengono usate solo da GNOME, ma puó essere usato da qualunque linguaggio di programmazione e non si esclude che altri desktop inizino ad usarle. Puó essere lanciato indifferentemente in macchine virtuali e container, salta semplicemente le parti di configurazione incompatibili. Ha un supporto watchdog completo. Puó essere utilizzato all’interno di initramfs. E’ facile effettuarne il debug e sta cercando di muovere nella direzione di un sistema configuration-less (/etc/ vuoto).
Personalmente credo che la polemica non sia ancora finita e non é detto che systemd conservi il vantaggio che ha oggi, anche se ormai si trova praticamente su tutte le distribuzioni. Se non nasce un progetto alternativo é molto probabile che le distribuzioni che sono ancora su system v, siano destinate a soccombere. La mia impressione é che piaccia al mondo commerciale ma non a quello tecnico. Io stesso non ho ancora escluso di passare a distribuzioni che non lo usano.
L’articolo finirebbe qui. Ma ho trovato in un documento la cronistoria, la metto in coda perché credo sia interessante.
La controversia
Il progetto di systemd ha provato un acceso dibattito nella comunitá del free software. I critici sostengono che systemd é eccessivamente complesso e soffre di un continuo scivolamento verso nuove funzionalitá, e la sua architettura viola i principi progettuali di un sistema unix-like. C’é anche la preoccupazione che stia formando un sistema di inter-dipendenze togliendo ai manutentori delle distribuzioni libertá di scelta, visto che l’adozione di alcuni software user-space obbliga la sua installazione.
Nel maggio 2011 Fedora é stata la prima importante distribuzione Linux ad abilitare systemd per default.
Nel 2012, in una intervista, Patrick Volkerding, leader di Slackware ha espresso riserver sull’architettura di systemd, affermando che ritiene che il suo progetto sia contrario alla filosofia Unix di utilitá interconnesse con precise e definite funzionalitá. Volkerding non ha escluso il suo supporto, ma ad oggi Slackware non supporta systemd.
Nel gennaio 2013, Lennart Poettering (systemd) ha creato un documento chiamato the The Biggest Myths dove tenta di calmare le preoccupazioni riguardo a systemd.
Tra l’ottobre 2013 e Febbraio 2014 un lungo dibattito lacera la comunitá Debian, la decisione culmina nella scelta di systemd per debian 8 Jessie. Il dibattito viene largamente pubblicizzato e continua anche dopo la decisione. Dopo questa decisione, nel febbraio, Mark Shuttleworth (Ubuntu) seguirá Debian in questa decisione, abbandonando Upstart, nonostante i suoi commenti dell’ottobre 2013 dove dichiarava che era difficile giustificare l’atteggiamento estremamente invasivo di systemd.
Nel marzo 2014, Eric Raymond dichiara che gli obiettivi di systemd provocheranno una crescita sproporzionata delle sue dimensioni e un continuo arrampicarsi verso le funzionalitá di altri software. Nell’aprile 2014 Linus Torvalds esprimerá delle riserve riguardo all’atteggiamento di Kay Sievers, uno sviluppatore chiave di systemd nei confronti di utenti e bug report riguardo a modifiche spedite da lui al kernel Linux. Alla fine dell’Aprile 2014 viene lanciata una campagna di boicottaggio di systemd con un sito web che ne spiega le motivazioni.
Nell’agosto 2014, in un articolo pubblicato su InfoWorld, Paul Venezia parlando della controversia riguardo systemd attribuisce la controversia ad un problema di ego da parte dei programmatori di systemd che pensano di non poter sbagliare. L’articolo paragona systemd a svchost.exe un componente critico del sistema Windows.
Nel novembre 2014, alcuni membri di Debian e componenti del comitato tecnico: Joey Hess, Russ Allbery, Ian Jackson, e il manuntentore del pacchetto systemd Tollef Fog Heen lasciano le loro posizioni. Tutti e quattro giustificano la loro scelta parlando di un eccessivo stress legato alla disputa sull’integrazione di systemd in Debian, che ha reso la manutenzione dei pacchetti virtualmente impossibile.
Nel dicembre 2014, nasce un fork di Debian chiamato Devuan, da parte di un gruppo che si autonomina “Veteran Unix Admins”. La loro intenzione é fornire una variante di Debian non basata su systemd.
Nell’agosto 2015, systemd rilascia una shell di login, chiamabile via machinectl shell.
Nell’ottobre 2015, viene pubblicato un articolo intitolato “Deficienze strutturali e semantiche nell’architettura systemd per la gestione dei servizi nel mondo reale”. L’articolo critica systemd in molte aree, compreso il suo progetto come un sistema ad oggetti con troppi livelli opachi che lo rendono incline ad essere esposto a casi di fallimento, un modello di esecuzione difficile da predire, un’ordine di boot non deterministico, lo stato implicito delle configurazioni dei file unit e la sua generale inadeguatezza nel fornire un’astrazione esterna uniforme per i tipi di unitá.
Riferimenti:
https://wiki.debian.org/Debate/initsystem/systemd
http://blog.erratasec.com/2015/08/about-systemd-controversy.html#.WVYZNico9hE
http://www.zdnet.com/article/linus-torvalds-and-others-on-linuxs-systemd/
http://0pointer.de/blog/projects/the-biggest-myths.html
http://without-systemd.org/wiki/index.php/Main_Page
https://chiefio.wordpress.com/2016/05/18/systemd-it-keeps-getting-worse/