SystemD - Come avvia il tuo sistema

SystemD - Come avvia il tuo sistema
SystemD è stato sviluppato quando gli sviluppatori hanno scoperto che l'avvio del sistema in parallelo non era possibile. I sistemi più vecchi passano attraverso i file di avvio del sistema uno per uno. Questo può far sì che l'avvio si fermi quando si aspettano risorse che siano lente. Un esempio di ciò è quando un processo deve far funzionare la rete. L'uso della rete è molto lento, altre risorse non dovrebbero aspettare. Questo problema può essere mitigato in altri modi, ma con SystemD, tutta l'avvio è realizzata in parallelo ove possibile. Il risultato dovrebbe essere un'avvio molto più veloce per sistemi complessi, che include il sistema desktop.

SystemD: padre di tutti gli altri processi

Un sistema Linux e qualsiasi altro *Nix, avvia sempre un processo che è il padre di tutti gli altri processi. Quando si utilizza SystemD, quel processo è SystemD, il processo viene sempre chiamato "init" indipendentemente dal sistema INIT. Una volta che SystemD è in esecuzione, avvierà i demoni che eseguono i sottosistemi. I demoni controllano quali risorse hai e quali sistemi sono aperti. Il prompt di accesso è un servizio gestito da SystemD. SystemD avvia molti altri servizi e monta anche tutti i tuoi dischi, compresi i supporti a scatto.

Come controlli ciò che inizia?

Prima di tutto, il primo sistema di init aveva i runlevels che molti lettori riconosceranno. Runlevel 1 era una modalità utente singolo, 2 modalità multiutente senza reti e 3-5 utenti e grafici. L'impostazione del runlevel su 0 significava fermare e 6 significa riavvio. Gli sviluppatori di sistema hanno trovato questi livelli poco chiari, quindi lo hanno cambiato per essere chiamati bersagli. Gli obiettivi non sono esattamente gli stessi ma hanno una funzione simile. Quando è in esecuzione un obiettivo specifico, è in esecuzione una raccolta specifica di unità. Altro sulle unità più tardi.

Impostazione del "runlevel", chiamato target.

È possibile modificare il target durante l'esecuzione, ad esempio potresti utilizzare un terminale per impostare il tuo target su Multi-User. Ciò fermerebbe la tua GUI, X o Wayland, ma lasciare te e gli altri, accedere con una console di testo. Usa il seguente comando.

$ systemctl Isolato Multiuser.bersaglio

Oppure, se si desidera avviare il tuo desktop, usa invece il seguente comando.

$ SystemCtl Isolato Grafico.bersaglio

Quello che sei veramente interessato è come iniziare il livello corretto, puoi scoprire cosa hai in questo momento in questo modo.

$ SystemCtl Get-Default

Per modificare il set predefinito.

$ SystemCtl Set-Default Graphical.bersaglio

Questo comando effettivamente inizia molte unità e servizi mentre avvia il tuo computer. Potresti voler iniziare o fermare un singolo servizio però.

Avvio, fermata, abilitazione e disabilitazione di un servizio.

Qui è dove hai la possibilità di cambiare ciò che accade all'avvio e durante il normale funzionamento. Contrariamente agli obiettivi, le unità sono speciali per un particolare servizio. Per fermare un servizio utilizza "Sistemactl Stop", ugualmente è possibile utilizzare "Avvia" e "Riavvia". Per creare un servizio inizia all'avvio, utilizzare "abilita", per fermarlo "disabilita". Scegli un servizio e inizia e fermalo mentre è in esecuzione.

$ SystemCtl Status Cups.servizio

Questo comando mostra lo stato del servizio, mostra anche un elenco di azioni intraprese dal sistema relative al servizio. Per fermare il servizio, utilizzare il comando qui sotto.

$ SYSTEMCTL STOP CUPS.servizio

Il servizio è ora interrotto per la tua sessione attuale. Per cambiarlo per non iniziare al prossimo avvio usati Disabilita.

$ SystemCtl Disabilita tazze.servizio

Si noti che si può solo disabilitare il servizio, questo non avrebbe alcun effetto sulla tua situazione attuale. Il servizio continua a funzionare. Al prossimo avvio, però, non avrà il servizio.

SystemD controlla anche supporti, dispositivi, prese e altro ancora. Le unità sono più basse e più facili da capire, se hai affrontato un Linux prima. Puoi anche impostarli da solo, ma il maggior effetto sullo avvio è controllare i servizi.

Come si aggiungono i tuoi script?

Puoi aggiungere i tuoi script abbastanza facilmente, i dettagli che sono interessanti da sapere sono come fai a dipendere il tuo script o il tuo servizio. Questo è ben dimostrato in questo file di servizio con riserve wifi.

[Unità]
Descrizione = Riavvia NetworkManager al curriculum
Dopo = sospendere.bersaglio
After = Hibernate.bersaglio
Dopo = sonno ibrido.bersaglio
[Servizio]
Type = OneShot
ExecStart =/bin/systemctl Riavvia Network-Manager.servizio
[Installare]
WantedBy = sospendere.bersaglio
WantedBy = Hibernate.bersaglio
Wantedby = ibrido-sonno.bersaglio

Questo codice crea un servizio che si verifica una volta (OneShot) dopo i tre obiettivi menzionati nel codice. Il codice eseguito è in questo caso un singolo comando. Puoi anche indicare ExecStart a uno script di tua scelta.

Conclusione

Cambiare il tuo sistema, in particolare il modo in cui si avvia, puoi fare da solo, ma fai attenzione che questo ha molte conseguenze per ogni servizio, quindi assicurati che il tuo codice sia stabile e veloce da eseguire.