sistema

Systemd - Come avvia il tuo sistema

Systemd - Come avvia il tuo sistema
Systemd è stato sviluppato quando gli sviluppatori hanno scoperto che non era possibile avviare il sistema in parallelo. I sistemi più vecchi esaminano i file di avvio del sistema uno per uno. Ciò può causare l'arresto dell'avvio durante l'attesa di risorse lente. Un esempio di ciò è quando un processo deve avere la rete in esecuzione. L'utilizzo della rete è molto lento, altre risorse non dovrebbero aspettare. Questo problema può essere mitigato in altri modi ma con systemd, tutto l'avvio viene effettuato in parallelo ove possibile. Il risultato dovrebbe essere un avvio molto più veloce per sistemi complessi, che include il tuo 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 usi 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. La tua richiesta di accesso è un servizio gestito da systemd. Systemd avvia molti altri servizi e monta anche tutti i tuoi dischi, inclusi gli snap mount.

Come controlli ciò che inizia??

Prima di tutto, il primo sistema init aveva runlevel che molti lettori riconosceranno. Il runlevel 1 era in modalità utente singolo, 2 modalità multiutente senza rete e 3-5 multiutente e grafica. Impostare il runlevel su 0 significava fermarsi e 6 significava riavviare. Gli sviluppatori di systemd hanno trovato questi livelli poco chiari, quindi l'hanno cambiato per essere chiamato obiettivi called. Gli obiettivi non sono esattamente gli stessi ma hanno una funzione simile. Quando un obiettivo specifico è in esecuzione, è in esecuzione una raccolta specifica di unità. Maggiori informazioni sulle unità in seguito.

Impostazione del "runlevel", chiamato target.

È possibile modificare il target durante l'esecuzione, ad esempio è possibile utilizzare un terminale per impostare il target su multiutente. Ciò fermerebbe la tua GUI, X o Wayland ma consentirebbe a te e ad altri di accedere con una console di testo. Usa il seguente comando.

$ systemctl isola multiutente.bersaglio

Oppure, se vuoi avviare il desktop, usa invece il seguente comando.

$ systemctl isola grafica.bersaglio

Quello che ti interessa veramente è come iniziare il livello corretto, puoi scoprire quello che hai adesso in questo modo.

$ systemctl get-default

Per modificare l'impostazione predefinita, impostalo.

$ systemctl set-default grafico.bersaglio

Questo comando in realtà fa partire molte unità e servizi all'avvio del computer. Potresti voler avviare o interrompere un singolo servizio però.

AVVIO, arresto, 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 interrompere un servizio si usa 'systemctl stop', allo stesso modo si possono usare 'start' e 'restart'. Per far partire un servizio all'avvio si usa 'enable', per fermarlo 'disable'. Scegli un servizio e avvialo e interrompilo mentre è in esecuzione.

$ systemctl status cups.servizio

Questo comando mostra lo stato del servizio, mostra anche un elenco di azioni intraprese dal sistema riguardo al servizio. Per interrompere il servizio, usa il comando qui sotto.

$ systemctl ferma tazze.servizio

Il servizio è ora interrotto per la tua sessione corrente. Per cambiarlo in modo che non si avvii al prossimo avvio, usa disabilita.

$ systemctl disabilita le tazze.servizio

Nota che puoi solo disabilitare il servizio, questo non avrebbe alcun effetto sulla tua situazione attuale. Il servizio continua a funzionare. Al prossimo avvio però, non avvierà il servizio.

Systemd controlla anche supporti, dispositivi, prese e altro. Le unità sono più basse e più facili da capire, se hai già avuto a che fare con un Linux. Puoi anche impostarli tu stesso, ma l'effetto maggiore all'avvio è controllare i servizi.

Come si aggiungono i propri script??

Puoi aggiungere i tuoi script abbastanza facilmente, i dettagli che sono interessanti da sapere sono come fai in modo che il tuo script o servizio dipenda dagli altri. Questo è chiaramente dimostrato in questo file di servizio di ripristino del wifi.

[Unità]
Description=Riavvia networkmanager al ripristino
Dopo=sospendi.bersaglio
Dopo=ibernazione.bersaglio
Dopo=ibrido-sonno.bersaglio
 
[Servizio]
Tipo=oneshot
ExecStart=/bin/systemctl riavvia il gestore di rete.servizio
 
[Installare]
WantedBy=sospendere.bersaglio
WantedBy=ibernazione.bersaglio
WantedBy=ibrido-sleep.bersaglio

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

Conclusione

Cambiando il tuo sistema, specialmente come si avvia, puoi farlo 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.

Tutorial Battaglia per Wesnoth
The Battle for Wesnoth è uno dei giochi di strategia open source più popolari a cui puoi giocare in questo momento. Non solo questo gioco è in svilupp...
0 A.D. Tutorial
Tra i tanti giochi di strategia in circolazione, 0 A.D. riesce a distinguersi come un titolo completo e un gioco molto profondo e tattico nonostante s...
Tutorial Unity3D
Introduzione a Unity 3D Unity 3D è un potente motore di sviluppo di giochi. È multipiattaforma cioè ti permette di creare giochi per mobile, web, desk...