Breve introduzione critica a Systemd, il nuovo sistema di init introdotto nel 2010 e recentemente adottato da molte distribuzioni.
La presentazione illustra in modo semplice come 竪 nato Systemd, quali le sue caratteristiche salienti, gli aspetti positivi e negativi riscontrati.
Relatore: Christopher R. Gabriel
Evento: Serata su Systemd - 11 Giugno 2015
Organizzatore LUG Como
Luogo: Circoscrizione 6 Via Achille Grandi 21
1 of 33
Download to read offline
More Related Content
Systemd - Como Lug
1. 11/06/2015 Systemd
SystemD
11 Giugno 2015
Christopher R. Gabriel
< cgabriel @ truelite.it >
息 2015 Truelite Srl - La copia letterale e la distribuzione del materiale qui raccolto nella sua integrit sono permesse con qualsiasi
mezzo, a condizione che questa nota sia riprodotta.
2. 11/06/2015 Systemd
Perch竪 siamo qui?
Provare a capire cosa 竪 Systemd.
Come 竪 fatto, e come impatta nella routine di
un amministratore di sistema.
Avere le nozioni sufficienti per capire se ci
piace o no.
Condividere opinioni/esperienze personali.
3. 11/06/2015 Systemd
NON siamo qui per...
Promuovere Systemd, senza motivazioni
oggettive.
Respingere Systemd, senza motivazioni
oggettive.
Valutare la bont o meno di un software
giudicando l'autore (sarebbe una lista infinita)
5. 11/06/2015 Systemd
WTF!
18 Maggio 2015:
Revert upstream commit 743970d which
immediately SIGKILLs units during shutdown
This leads to problems like bash not being
able to write its history, mosh not saving
its state, and similar failed cleanup
actions.
6. 11/06/2015 Systemd
Contesto: chi sono
NON sono un amministratore di sistema
20 anni che uso e lavoro con Unix, Linux e software
libero
Incuriosito e interessato alla discussione
Influenzato professionalmente da Systemd
Mi piace capire e sapere per poter giudicare
Non ho mai avuto problemi con systemd sui miei
sistemi
Giusto per chiarirsi subito: Systemd non mi piace.
9. 11/06/2015 Systemd
Un sistema di init
In un sistema operativo Unix, 竪 il primo processo
che il kernel manda in esecuzione dopo la fase di
bootstrap. (PID 1)
Deve avviare programmi e servizi necessari allo
stato operativo.
Deve prendere in affido i processi orfani (senza
parent PID), curando il recupero della loro
terminazione, per evitare di creare processi
zombie.
10. 11/06/2015 Systemd
Sistemi storici
SysV Init (runlevel, directory per ogni runlevel)
BSD (runlevel, script per ogni runlevel)
Upstart (ubuntu, parallelizzazione)
E poi, nel 2010....
12. 11/06/2015 Systemd
SystemD
Progetto di Lennart Poettering e Kay Sievers
Licenza LGPL
Sviluppato sopra la Linux API (non utilizzabile
su kernel diversi, allo stato attuale)
Ispirato in parte a launchd (OSX)
File di configurazione in formato simil-INI
13. 11/06/2015 Systemd
Una breve storia
30 Marzo 2010: Prima release di systemd
Maggio 2011: Fedora 竪 la prima tra le principali distribuzioni Linux ad abilitare l'uso
di system come predefinito.
2012: Patrick Volkerding esprime riserve sull'architettura di systemd, a suo dire
contraria alla filosofia Unix. All'agosto 2014, Slackware non supporta ancora
systemd.
Gennaio 2013: Lennart Poettering scrive un lungo post sul suo blog chiamato The
Biggest Myths, per sfatare alcuni miti riguardo systemd.
Ottobre 2013 Agosto 2014 : dibattito interno al comitato tecnico Debian riguardo a
quale sistema di init utilizzare per la release Debian 8 Jessie, che culmina con la
decisione di utilizzare systemd. Il dibattito in ogni caso 竪 ancora in corso.
Febbraio 2014: Mark Shuttleworth annuncia che Ubuntu adotter systemd a seguito
delle decisioni di Debian, pur ricordando i suoi commenti dell'Ottobre 2013 che
descriveva no systemd come altamente invasivo e difficilmente giustificabile.
14. 11/06/2015 Systemd
Una breve storia (2)
Aprile 2014: Linus Torvalds esprime le sue riserve riguardo il comportamento degli autori
principali di systemd verso gli utenti e le segnalazioni di bug (ma dai?).
Aprile 2014: Viene avviata un campagna di boicottaggio verso systemd, pubblicando su
un sito web dedicato le varie ragioni contro la sua adozione.
Ottobre 2014: Poettering si lamenta del fatto che la comunit Open Source 竪 piena di
str*nzi, io sono probabilmente uno dei loro obbiettivi preferiti
Novembre 2014: I maintainer Debian e membri del comitato tecnico Joey Hess, Russ
Allbery, Ian Jackson e il maintainer del pacchetto systemd Tollef Fog Heen rassegnano le
dimissioni dai loro ruoli. Hanno giustificato la loro decisione sulla mailing list pubblica di
Debian e su blog personali, adducendola allo straordinario livello di stress riguardo le
disputa dell'integrazione in Debian di systemd, rendendo difficile lavorare con serenit al
suo mantenimento.
Dicembre 2014: Un fork di Debian, chiamato Devuan, 竪 stato annunciato da un gruppo di
persone che si fanno chiamare Veteran Unix Admins. L'intento 竪 quello di fornire una
variante di Debian senza systemd installato di default.
15. 11/06/2015 Systemd
Attuale adozione
Distribuzione Repository Predefinito Dal
Arch Linux Gen 2012 Si Ott 2012
CoreOS Lug 2013 Si Ott 2013
Debian Apr 2012 Debian 8 Aprile 2015
Fedora Mag 2011 Si Mag 2011
Gentoo 2011 No
Mageia Mag 2012 Si Mag 2012
OpenSuse Mar 2011 Si Set 2012
RHEL Giu 2014 Si Giu 2014
SUSE ES 2014 si Ott 2014
Tizen 2012 Si 2012
Ubuntu Apr 2013 Pianificato
16. 11/06/2015 Systemd
Perch竪 Systemd (1)
Problemi di performance (serializzazione dell'avvio dei
processi)
Avvio di tutti i processi (anche se gi attivi, o anche se
non necessari)
Dipendenze (es. rete non configurata, avvio di demone
di rete) e successiva serializzazione (Upstart)
Complessit direttamente proporzionale alla flessibilit
(scripts)
Creazione di socket per IPC
17. 11/06/2015 Systemd
Perch竪 Systemd (2)
Socket e D-Bus activation, avvio servizi on-demand
Parallelizzazione aggressiva
Esecuzione asincrona rispetto alla disponibilit delle
risorse
Logica transazionale di controllo dei servizi e relative
dipendenze
Snapshotting & restoring
Approccio utilizzato da superdaemon e launchd (OS-X)
Uso estensivo dei cgroups
19. 11/06/2015 Systemd
Demoni
systemd
systemd user
consoled: supporto per virtual terminal in userspace
journald: logger degli eventi, append only, binario.
logind: gestione dei login (avvio di unit specifiche per l'utenza).
Integrato nei login manager. Sostituisce ConsoleKit
networkd: gestione della configurazione di rete
timedated: gestione dell'ora di sistema, timezone. Accessibile tramite
D-Bus
udevd: gestione dei device (/dev), gestione dei firmware. Integrato in
systemd dall'aprile 2012.
21. 11/06/2015 Systemd
Unit (2)
Supporta sintassi con specifier
Configurazione di un servizio, device,
partizione, filesystem, path, timer etc etc
controllati e supervisionati da Systemd
Estensione uguale alla tipologia di contenuto,
ma sono sempre Unit
systemd-unit(1)
22. 11/06/2015 Systemd
Target
Unit con estensione .target
Raggruppamento di altre unit (cfr. runlevel)
Fissano punti di sincronizzazione
Vengono forniti target di compatibilit per i
runlevel, cosi' come tool di supporto tipo telinit
23. 11/06/2015 Systemd
Sistema di log
systemd-journald.service(8)
Demone di logging, riceve dati via:
syslog(3)
Api nativa
Messaggi del kernel
stdout/stderr di service controllati
Aggiunge metadati
24. 11/06/2015 Systemd
Sistema di log
Log BINARIO
Formato ancora incerto
Messaggi fino a 2^64-1 B
Dati volatili o meno, a seconda della
configurazione
Possibilit di interrogazione strutturate
Log multipli per utente, personalizzati
25. 11/06/2015 Systemd
Strumenti accessori
systemctl: controllo di systemd e del service
manager
journalctl: interrogazione del log di sistema
loginctl: controllo del login manager
26. 11/06/2015 Systemd
Alternative
Rimpiazzi, fork e alternative a systemd, che
garantiscono (o tentano di) fornire compatibilit
verso le applicazioni.
uselessd
eudev
systembsd (per sistemi BSD)
Altra alternativa: non usarlo (il bello del software
libero!)
27. 11/06/2015 Systemd
Critiche (in ordine sparso)
Contro la filosofia Unix un compito solo e fallo
bene
Log in formato binario
Solo Linux
Single Point of Failure ad alta complessit
Glibc
Interazione con upstream (problema diffuso)
28. 11/06/2015 Systemd
Cosa mi piace
Processo di standardizzazione (che in generale, fa
bene alla salute)
Quindi, compatibilit tra distribuzioni che lo
adottano (write once , run everywhere!)
Possibilit di personalizzazioni per l'utente non
privilegiato
Query strutturate sui log
Uso dei cgroups
29. 11/06/2015 Systemd
Cheat sheet
SysV SystemD Descrizione
service foobar start systemctl start goober Avvia un servizio
service goober stop systemctl stop goober Termina un servizio
service goober restart systemctl restart goober Riavvia un servizio
service goober reload systemctl reload goober Se supportato, ricarica il file di configurazione senza interruzione
service goober condrestart systemctl condrestart
goober
Riavvia un servizio se gi avviato
service goober status systemctl status goober Mostra se il servizio 竪 gi avviato o meno
chkconfig goober on systemctl enable goober Abilita il servizio al prossimo avvio
chkconfig goober off systemctl disable goober Disabilita il servizio al prossimo riavvio
chkconfig goober systemctl is-enabled goober Mostra se configurato per l'avvio
30. 11/06/2015 Systemd
systemctl
Comando Alias Significato
systemctl default systemctl isolate default.target Modalit predefinita
systemctl rescue systemctl isolate rescue.target Entra in modalit rescue
systemctl emergency systemctl isolate emergency.target Modalit emergenza (init 1)
systemctl halt systemctl start halt.target
--irreversible
Shutdown della macchina, inviando
messaggio agli utenti.
systemctl poweroff systemctl start poweroff.target
--irreversible
Shutdown e spegnimento della
macchina
systemctl reboot systemctl start reboot.target
--irreversible
Riavvio della macchina
systemctl suspend Trigger di suspend.target Suspend to RAM
systemctl hibernate Trigger di hibernate.target Ibernazione
31. 11/06/2015 Systemd
journalctl
Opzione Significato
-b N Limita i risultati a partire dal Nesimo riavvio
-e Si porta direttamente alla fine del log
-f Resta agganciato al terminal per mostrare nuove voci registrate (tail
-f )
-k Solo messaggi del kernel
-p prio Solo i messaggi a partire dalla priorit indicata (0->7)
-u unit Solo i messaggi relativi alla unit indicata
--since=data Solo i messaggi a partire dalla data fornita (in formato date)