Come altri hanno già notato qui, in teoria, ciò non dovrebbe influire sull'utente finale non tecnico - e in teoria non vi è alcuna differenza tra teoria e pratica, ma in pratica esiste.
Una precisazione
Penso che alcune cose pubblicate qui necessitino di alcuni chiarimenti:
È un sistema init, non qualcosa con cui gli utenti interagiscono tradizionalmente.
È stato il caso di SysV init e Upstart, ma non è più il caso di systemd. Fa molte cose con cui gli utenti interagiscono tradizionalmente:
Dovrebbe sostituire completamente la funzionalità fornita da Upstart e fare alcune cose extra
Due cose da chiarire: prima di tutto la sostituzione completa di Upstart:
Nessuno script di inizializzazione SysV
Uno dei problemi che le persone hanno con systemd è che non esegue script di init SysV. Quindi c'è un esempio non sostituisce completamente la funzionalità fornita da Upstart.
Questo è qualcosa su cui potremmo fare affidamento per oltre 30 anni e tradizionalmente hai scritto gli script SysV init per la massima portabilità senza ripetere te stesso (scrivendo più versioni degli stessi script), il che non è più il caso.
Questo non dovrebbe essere un problema quando si usano solo pacchetti dai repository ufficiali perché presumibilmente tutti i pacchetti che avevano script SysV init o Upstart avrebbero dovuto riscrivere i loro script prima di essere impacchettati.
Sarà solo un problema per le persone che usano software di terze parti o personalizzato che hanno i loro script di init scritti per SysV init o per Upstart e quelli avranno bisogno di riscrivere gli script di init prima di passare a un sistema con systemd (o ottenere il upstart installato, che è anche un'opzione , o passa a un sistema che non usa systemd).
C'è un generatore di systemd-sysv che dovrebbe tradurre automaticamente gli script di init SysV in script di systemd ma ci sono alcuni bug e un lungo elenco di incompatibilità esplicite .
Ora, il secondo chiarimento - su quelle poche cose extra:
Poche cose extra
Quelle "poche cose extra" che systemd coprirà - secondo A Perspective for systemd - What is Been Achieved, e What Lies Ahead, presentazione di Lennart Poettering nel 2014 su GNOME.asia - sono le seguenti:
- sistema init
- registrazione del diario
- gestione degli accessi
- gestione dei dispositivi
- gestione dei file temporanea e volatile
- registrazione in formato binario
- retroilluminazione salva / ripristina
- rfkill salva / ripristina
- bootchart
- readahead
- configurazione di archiviazione crittografata
- Rilevamento delle partizioni EFI / GPT
- registrazione macchina virtuale / container
- gestione dei container
- gestione del nome host
- gestione locale
- gestione del tempo
- gestione casuale delle sementi
- gestione delle variabili sysctl
- gestione console
- introspezione
- scoperta automatica
- collega e usa
- gestione della rete
- systemd-networkd
- Cache DNS
- risponditore mDNS
- LLMNR responder
- Verifica DNSSEC
- IPC nel kernel
- kdbus
- sd-bus
- sincronizzazione dell'ora con NTP
- systemd-timesyncd
- integrazione con i contenitori
- sandboxing dei servizi
- sandboxing delle app
- Formato immagine del sistema operativo
- Formato immagine contenitore
- Formato immagine dell'app
- GPT con rilevamento automatico
- Sistemi senza stato
- sistemi a istanza
- ripristino delle impostazioni di fabbrica
- inizializzazione e aggiornamenti dei nodi
- integrazione con il cloud
- gestione del servizio tra nodi
- immagini del sistema operativo verificabili fino al firmware
- Caricamento di avvio
- Costruire il sistema operativo di prossima generazione di Internet Unificare le differenze inutili tra le distribuzioni
Quindi, tornando a: "È un sistema init, non qualcosa con cui gli utenti interagiscono tradizionalmente". - Va sottolineato che il sistema init è solo una voce in quella lista.
E infine, l'ultima cosa che vorrei commentare:
[T] solo una volta che un utente non tecnico vedrà ciò è quando andrà storto.
Oh, che sollievo. :)
I cambiamenti
Le modifiche più importanti per gli utenti finali (diversi dagli script stessi) sono l'avvio e l'arresto dei servizi e l'utilizzo di comandi come:
che non funziona più come previsto. Ad esempio, nohup
è un comando POSIX per assicurarsi che il processo continui a essere eseguito dopo il logout dalla sessione. Non funziona più su systemd. Anche programmi come screen
e tmux
devono essere invocati in un modo speciale o altrimenti i processi che eseguirai con loro verranno uccisi (mentre non farli uccidere di solito è il motivo principale per eseguire screen o tmux in primo luogo).
Questo non è un bug, è una scelta progettuale, quindi non è probabile che venga risolto in futuro. Questo è quanto ha detto Lennart Poettering a proposito di questo problema:
A mio avviso, in realtà UNIX era abbastanza strano che, per impostazione predefinita, lasciava che il codice utente arbitrario rimanesse libero dopo il logout. È stato discusso per secoli tra molte persone del sistema operativo, che questo dovrebbe essere possibile, ma certamente non è il valore predefinito, ma nessuno ha osato finora girare l'interruttore per passare da un valore predefinito a un'opzione. Non ripulire le sessioni utente dopo il logout non è solo brutto e un po 'hacker, ma è anche un problema di sicurezza. systemd 230 ora ha finalmente girato l'interruttore e alla fine di default pulisce tutto correttamente quando l'utente si disconnette.
Per maggiori informazioni vedi:
In esecuzione screen
- upstart:
screen
- systemd:
systemd-run --user --scope screen
(Nota: il comportamento di "upstart" sopra è in realtà qualsiasi cosa tranne systemd, questo non è specifico per l'avvio)
Avvio di lavoro foo:
- upstart:
start foo
- systemd:
systemctl start foo
Interruzione lavoro foo:
- upstart:
stop foo
- systemd:
systemctl stop foo
Riavvio del lavoro foo:
- upstart:
restart foo
- systemd:
systemctl restart foo
Elenco dei lavori con il loro stato:
- upstart:
initctl list
- systemd:
systemctl status
(Vedi la mia risposta a Quali sono i pro / contro di Upstart e systemd? Per maggiori dettagli che non rientrano nell'ambito di questa domanda.)
logs
C'è anche una grande differenza nella gestione dei registri perché contrariamente alla tradizione Unix i registri di systemd sono memorizzati in file binari in un formato personalizzato, quindi invece di:
cat /var/log/upstart/foo.log
tail -f /var/log/upstart/foo.log
è necessario utilizzare comandi speciali per accedere ai registri:
sudo journalctl -u foo
sudo journalctl -u foo -f
controversie
L'introduzione di systemd prima su Debian e successivamente su Ubuntu non è stata priva di controversie e di una vasta opposizione, come è noto a chiunque abbia scritto uno dei seguenti articoli:
La posizione ufficiale di Debian su systemd e la conseguente controversia hanno portato alla dichiarazione di Exodus nel 2014 e si sono concluse con le dimissioni di Ian Jackson .
Sono nate le iniziative Init Freedom , Without-Systemd.org e Systemd-Free.org , con molte discussioni su Hacker News .
Ulteriori letture