aprile 12, 2018

Come aumentare la velocità di avvio in Ubuntu 18.04 eliminando i colli di bottiglia.

| 4 Comments

Canonical ha promesso una migliore velocità di avvio in Ubuntu 18.04.

Utilizzando le funzionalità di Systemd, i colli di bottiglia saranno identificati e affrontati per avviare Bionic il più rapidamente possibile.

Systemd viene generalmente utilizzato come sistema di init, ossia il processo chiamato dal kernel Linux per inizializzare l'user space durante lo startup, nonché il padre di tutti i processi nati dopo di lui.

Va a rimpiazzare l'init "classico", ossia quello discendente dallo Unix System V (SysVinit).
systemd

Come aumentare la velocità di avvio in Ubuntu 18.04

Nacque originariamente per Red Hat Linux e Debian. È un software libero distribuito sotto licenza GNU LGPL 2.1 o successive.

Uno degli obiettivi principali di systemd è unificare la configurazione base dei servizi delle principali distribuzioni.

Systemd ha generato numerose controversie tra le comunità del software libero. Le principali critiche riguardano la sua architettura, che violerebbe la filosofia Unix (do one thing and do it well) andando a creare una rete di dipendenze strette tra le sue componenti, ossia un insieme di file binari che hanno largamente superato le funzionalità di base di un init system.
Systemd-on-fedora
Boot di Fedora 17 con systemd
Secondo queste critiche, un init system non dovrebbe infatti essere responsabile del power management, dei mount point, delle schedulazioni, della crittografia, di syslog, della rete, e molto altro - funzionalità implementate in systemd.



Per gli amministratori di sistema.


Gli amministratori di sistema possono visitare questa pagina per sapere come usare systemctl che sostituisce il vecchio flusso di lavoro in SysVinit. Da notare che i comandi service e chkconfigcontinueranno a funzionare come previsto anche in systemd.


Leggi anche: Linux vs Systemd, il demone si sveglia.

Strumenti.


  • systemctl: usato per esaminare e controllare lo stato di systemd e del service manager
  • systemd-cgls: ricorsivamente mostra il contenuto della gerarchia del control group selezionato nell'albero
  • systemadm: una interfaccia grafica per systemd e per il service manager. Fa parte del pacchetto systemd-gtk. Si tratta di una versione giovane ancora in lavorazione. Non usarla se non si è sviluppatori.
Systemd_components.svg
Architettura Systemd utilizzata dal sistema operativo mobile basato su Tizen Linux


Boot Kernel Command Line.


All'avvìo systemd attiva (come predefinito), l'unità target default.target il cui compito è quello di attivare i servizi ed altre unità a seconda delle dipendenze richieste.

Per gestire l'unità da attivare, systemd analizza gli argomenti della propria linea di comando kernel attraverso l'opzione systemd.unit=. Quest'ultima può essere usata per avvii temporanei differenti. I classici run-level sono rimpiazzati come di seguito:
systemd.unit=rescue.target è uno speciale target per impostare un sistema base e la rescue shell (similli al run-level 1); systemd.unit=emergency.target è molto simile al init=/bin/sh ma con l'opzione d'avvìo per l'intero sistema; systemd.unit=multi-user.target per impostare un sistema multi utente non grafico; systemd.unit=graphical.target per impostare il login grafico.

Dettagli a riguardo si trovano alla pagina man systemd.special.

Tutti i file System V init sono stati convertiti in servizi systemd o equivalenti ?
Molti dei sevizi principali (/lib/systemd/system li ha e ne può essere controllato lo stato su http://fedoraproject.org/wiki/User:Johannbg/QA/Systemd/compatability) sono stati convertiti. La transizione è pianificata per Fedora 16. Per i dettagli: http://fedoraproject.org/wiki/Features/SysVtoSystemd. systemd è pienamente compatibile con i vecchi init script.

Quale strumento gestisce systemd ?

systemctl è lo strumento principale da usare. Combina le fuzionalità dei servizi e di chkconfig per abilitarli/disabilitarli permanentemente o solo per la connessione corrente.
Systemctl.

Far riferimento a man systemctl per maggiori dettagli. systemd-cgls lista i processi avviati con un formato ad albero. Può mostrare ricorsivamente il contenuto di ogni control group.
systemd-1
Systemd in Ubuntu con Unity 

Come avviare/fermare o abilitare/disabilitare i servizi ?


Attiva un servizio immediatamente:
systemctl start foo.service
Disattiva un servizio immediatamente:
systemctl stop foo.service
Riavvia un servizio:
systemctl restart foo.service
Mostra lo stato di un servizio o se è avviato o meno:
systemctl status foo.service
Abilita un servizio per essere inizializzato all'avvìo:
systemctl enable foo.service
Disabilita un servizio per non essere inizializzato all'avvìo:
systemctl disable foo.service
Controlla se un servizio è già abilitato o meno:
systemctl is-enabled foo.service; echo $?
0 indica che è abilitato. 1 indica che è disabilitato. In Fedora 17, in aggiunta al codice di ritorno, "enabled" o "disabled" saranno stampati in output.
Far riferimento a man systemctl per maggiori dettagli.

Come si cambiano i run-level ?


systemd ha il concetto di target che è un rimpiazzo più flessibile rispetto ai runlevel in sysvinit.
Run-level3 è emulato dal multi-user.target. Run-level5 è emulato dal graphical.target. runlevel3.target è un link simbolico al multi-user.target e runlevel5.target è un link simbolico al graphical.target.
Si cambia al 'runlevel 3' con
systemctl isolate multi-user.target (oppure) systemctl isolate runlevel3.target
Si cambia al 'runlevel 5' con
systemctl isolate graphical.target (oppure) systemctl isolate runlevel5.target


Come si cambia il run-level predefinto?


I symlink possono essere ancora usati anche se ormai resi obsoleti, data l'introduzione di un comando integrato per impostare il target predefinito.
systemctl enable graphical.target --force
Symlink:
systemd può anche usare i symlink per puntare al runlevel predefinito. Bisogna cancellare il collegamento simbolico esistente prima di crearne uno nuovo
rm /etc/systemd/system/default.target
Cambio al runlevel 3 come predefinito
ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target
Cambio al runlevel 5 come predefinito
ln -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.target
systemd non usa il file /etc/inittab.
Come si controlla il run-level corrente?
Il comando runlevel funziona ancora con systemd. E' possibile continuare ad usarlo comunque, emulandolo attraverso i 'targets' anche contemporaneamente.
systemctl list-units --type=target
systemd
Systemd in Ubuntu

Come spegnere la macchina ?

E' possibile usare
poweroff
Altre possibilità sono: halt -pinit 0shutdown -P now
Da notare che halt è usato per far funzionare lo stesso poweroff nelle versioni precedenti di Fedora, ma systemd li distingue, così halt senza parametri ora fa esattamente quello che dice - semplicemente ferma il sistema senza spegnere.
Il comando service funziona con systemd ?
Sì. E' stato modificato per richiamare systemctl automaticamente quando tratta i file systemd service. Così entrambi questi comandi fanno la stessa cosa
service NetworkManager stop
(oppure)
systemctl stop NetworkManager.service
Il comando chkconfig funziona con systemd?
Sì, per attivare/spegnere i servizi, c'é compatibilità per entrambi i metodi. chkconfig è stato modificato per richiamare systemctl quando si tratta di file systemd service. Inoltre systemctl richiama automaticamente chkconfig quando tratta i tradizionali file sysv init.
Così i seguenti comandi fanno la stessa cosa
chkconfig NetworkManager off
(oppure)
systemctl disable NetworkManager.service
chkconfig --list non lista i servizi systemd, ma solo quelli Sys V. Il suo output fornisce ulteriori informazioni.
system-config-services funziona con systemd?
La versione di system-config-services a partire da Fedora 15 può funzianare per i file systemd service. Se si hanno problemi, creare un bug report.
Come si cambia il numero di getty predefiniti avviati ?
Per aggiungere un altro getty:
Posizionare semplicemente un altro symlink per instanziare un getty nella directory getty.target.wants/ :

ln -sf /lib/systemd/system/getty@.service /etc/systemd/system/getty.target.wants/getty@tty9.service 

systemctl daemon-reload 
systemctl start getty@tty9.service

Come aumentare la velocità di avvio in Ubuntu 18.04 eliminando i colli di bottiglia.Twitta
Per rimuovere un getty:
Rimuovere il symlink nella directory getty.target.wants/ :

rm /etc/systemd/system/getty.target.wants/getty@tty5.service /etc/systemd/system/getty.target.wants/getty@tty6.service 

systemctl daemon-reload 
systemctl stop getty@tty5.service getty@tty6.service
systemd non usa il file /etc/inittab.
Come impostare un login automatico su un virtual console terminal?
Prima creare un nuovo servizio simile a getty@.service:

# cp /lib/systemd/system/getty@.service \ 

     /etc/systemd/system/autologin@.service 
# ln -s /etc/systemd/system/autologin@.service \ 
        /etc/systemd/system/getty.target.wants/getty@tty8.service
editare ExecStart, Restart e Alias values, come questo:

... 

ExecStart=-/sbin/mingetty --autologin USERNAME %I 
Restart=no 
... 
Alias=getty.target.wants/getty@tty8.service
riavviare finalmente il demone ed avviare il servizio:

systemctl daemon-reload 

systemctl start getty@tty8.service

Da notare che se si esce dalla sessione tty8, è possibile usarlo fino al riavvio successivo o fino all'avvìo manuale da systemctl, a meno che non si impone Restart come ‘always’; è raccomandato comunque evitarlo per motivi di sicurezza.

Come personalizzare un file unit o aggiungerne uno?


I file unit in /etc/systemd/system hanno precedenza sugli unit in /lib/systemd/system. Copiarli dal secondo al primo e personalizzarli a piacimento.

Se una linea inizia con .include seguita da un nome di file, lo stesso file verrà analizzato. Assicurarsi che abbia un'appropriata sezione headers prima di qualsiasi direttiva.
Si dovrebbe usare .include invece di copiare l'intero unit file da /lib/systemd/system a /etc/systemd/system se possibile. Tutto ciò consentirà di aggiornare correttamente le direttive invariate durante i futuri aggiornamenti dei pacchetti.

Prestare attenzione quando si usa .include insieme a direttive che possono essere definite più volte (come EnvironmentFile=); poiché si possono solo aggiungerne delle nuove, senza rimuovere quelle già definite. Meglio copiare l'intero file da /lib/systemd/system a /etc/systemd/system in questo caso.

Se volessimo ad esempio usare un server lighttpd e volessimo abbassare il suo valore niceness. Si deve aggiungere Nice=-5 al file lighttpd.service. é possibile farlo o copiando l'intero file /lib/systemd/system/lighttpd.service in /etc/systemd/system/lighttpd.service o creando il seguente file in /etc/systemd/system/lighttpd.service:

.include /lib/systemd/system/lighttpd.service 

[Service] 
Nice=-5
Non dimenticarsi di riavviare il demone utilizzando systemctl daemon-reload dopo la modifica del file.
Note.png
Quando si modifica un file unit che ha un symlink che punta a questa unit come fa display-manager.service -> prefdm.service, lo stesso symlink dove essere copiato al posto dell'attuale unit come il display-manager.service dev'essere copiato nella directory /etc/systemd/system oppure una nuova unit creata con .includes che porta questo nome.
Readahead.

systemd ha una implementazione readahead incorporata non abilitata negli upgrades. 

Dovrebbe migliorare la velocità di avvio, ma può variare a seconda dell'hardware. Per abilitarla:

systemctl enable systemd-readahead-collect.service 

systemctl enable systemd-readahead-replay.service



Se ti è piaciuto l'articolo , iscriviti al feed cliccando sull'immagine sottostante per tenerti sempre aggiornato sui nuovi contenuti del blog
rss-icon-feed-512x5126

Trovato questo articolo interessante? Condividilo sulla tua rete di contatti Twitter, sulla tua bacheca su Facebook o semplicemente premi "+1" per suggerire questo risultato nelle ricerche in Google, Linkedin, Instagram o Pinterest. Diffondere contenuti che trovi rilevanti aiuta questo blog a crescere. Grazie! CONDIVIDI SU!

stampa la pagina
, ,

4 commenti:

  1. Ma in italiano "aumentare la velocità di avvio" significa il contrario di quello che forse volevi dimostrare

    RispondiElimina
    Risposte
    1. Secondo Canonical le nuove funzionalità di Systemd dovrebbero essere una soluzione. E' a dir il vero per quanto riguarda il mio PC funziona alla grande.

      Elimina

Non inserire link cliccabili altrimenti il commento verrà eliminato. Metti la spunta a Inviami notifiche per essere avvertito via email di nuovi commenti.

Ultimi post pubblicati

Archivio

Etichette

Ubuntulandia in Pinterest

Post Più Popolari