6 999
contributi
Nessun oggetto della modifica |
S3v (discussione | contributi) Nessun oggetto della modifica |
||
Riga 2: | Riga 2: | ||
=Colorare il boot di Debian= | =Colorare il boot di Debian= | ||
Lo scopo di questa guida è quella di colorare i messaggi che scorrono all'avvio del sistema su una debian-box.<br> | Lo scopo di questa guida è quella di colorare i messaggi che scorrono all'avvio del sistema su una debian-box.<br> | ||
Il file che si occupa della stampa a schermo dei log è < | Il file che si occupa della stampa a schermo dei log è <code>'''/lib/lsb/init-functions'''</code>, fornito dal pacchetto <code>'''lsb-base'''</code>, ed è quello che andremo a modificare. | ||
<br> | <br> | ||
Le modifiche che effettueremo non colorano solo i messaggi al boot, ma anche eventuali messaggi stampati su terminale in caso di operazioni sui servizi del sistema (ad esempio il "restart" di un demone). | Le modifiche che effettueremo non colorano solo i messaggi al boot, ma anche eventuali messaggi stampati su terminale in caso di operazioni sui servizi del sistema (ad esempio il "restart" di un demone). | ||
=Funzionamento di init-functions= | =Funzionamento di init-functions= | ||
Qualsiasi comportamento degli script di init del sistema, in ambiente shell, è specificato dal file init-functions. Esso contiene varie funzioni richiamate dagli init-script e si occupa di determinare lo ''status'' e l'identificazione del processo in corso per poi rilasciare dei log delle operazioni. | Qualsiasi comportamento degli script di init del sistema, in ambiente shell, è specificato dal file <code>init-functions</code>. Esso contiene varie funzioni richiamate dagli init-script e si occupa di determinare lo ''status'' e l'identificazione del processo in corso per poi rilasciare dei log delle operazioni. | ||
<br> | <br> | ||
Le sezioni fondamentali del file sono: | Le sezioni fondamentali del file sono: | ||
Riga 30: | Riga 30: | ||
</pre> | </pre> | ||
Prima di iniziare è bene conoscere alcune caratteristiche del comando < | Prima di iniziare è bene conoscere alcune caratteristiche del comando <code>'''echo'''</code>, la cui funzione è quella di mostrare a schermo righe di testo. | ||
<br> | <br> | ||
In Bash bisogna distinguere due tipi di comandi. | In Bash bisogna distinguere due tipi di comandi. | ||
* Comandi esterni: comandi presi con path assoluto, che fanno parte del sistema operativo e che, di solito, generano un processo separato (forking). Ad esempio: | * Comandi esterni: comandi presi con path assoluto, che fanno parte del sistema operativo e che, di solito, generano un processo separato (forking). Ad esempio: | ||
<pre>/bin/echo</pre> | <pre>/bin/echo</pre> | ||
* Comandi ''builtin'': comandi appartenenti alla serie degli strumenti Bash, e incorporati in essa. Sono usati per aumentarne l'efficienza, in quanto assolvono più rapidamente al loro compito, e | * Comandi ''builtin'': comandi appartenenti alla serie degli strumenti Bash, e incorporati in essa. Sono usati per aumentarne l'efficienza, in quanto assolvono più rapidamente al loro compito, e perché particolari builtin necessitano di un accesso diretto alle parti interne della shell. Ad esempio: | ||
<pre>echo</pre> | <pre>echo</pre> | ||
Un builtin può avere un nome identico a quello di un comando di sistema. In questo caso Bash lo reimplementa internamente. Per esempio, il comando Bash "echo" non è uguale a "/bin/echo", sebbene la loro azione sia quasi identica. | Un builtin può avere un nome identico a quello di un comando di sistema. In questo caso Bash lo reimplementa internamente. Per esempio, il comando Bash "echo" non è uguale a "/bin/echo", sebbene la loro azione sia quasi identica. | ||
Riga 43: | Riga 43: | ||
<br> | <br> | ||
Altre caratteristiche fondamentali sono le opzioni che seguono il comando ''echo''. | Altre caratteristiche fondamentali sono le opzioni che seguono il comando ''echo''. | ||
* < | * <code>'''-n'''</code>: Normalmente, ogni comando echo visualizza una nuova riga. L'opzione ''-n'' annulla questo comportamento e fa sì che il testo successivo sia stampato sulla stessa riga | ||
* < | * <code>'''-e'''</code>: Opzione richiesta per poter visualizzare le sequenze di escape. | ||
<br> | <br> | ||
Le '''sequenze di escape''' sono sequenze di caratteri <u>non stampabili</u> che provocano particolari comportamenti della funzione "echo". | Le '''sequenze di escape''' sono sequenze di caratteri <u>non stampabili</u> che provocano particolari comportamenti della funzione "echo". | ||
I caratteri di escape non stampabili devono essere racchiusi da < | I caratteri di escape non stampabili devono essere racchiusi da <code>'''\033['''</code> e <code>'''m'''</code>. | ||
<br> | <br> | ||
Le sequenze di escape che utilizzeremo nel nostro script non sono altro che sequenze di caratteri che colorano il testo che lo segue: | Le sequenze di escape che utilizzeremo nel nostro script non sono altro che sequenze di caratteri che colorano il testo che lo segue: | ||
Riga 62: | Riga 62: | ||
Normal 0 | Normal 0 | ||
</pre> | </pre> | ||
La sequenza < | La sequenza <code>''Normal''</code> si occupa di riportare il colore a quello predefinito della shell. | ||
<br> | <br> | ||
Se vogliamo colorare una porzione di testo è necessario inserire, prima del testo, la sequenza di escape riferita al colore voluto e, eventualmente, terminare il testo con il colore ''Normal'' | Se vogliamo colorare una porzione di testo è necessario inserire, prima del testo, la sequenza di escape riferita al colore voluto e, eventualmente, terminare il testo con il colore ''Normal'' affinché il testo successivo non resti colorato. | ||
=Modifica di "init-functions"= | =Modifica di "init-functions"= | ||
==log_use_fancy_output== | ==log_use_fancy_output== | ||
Per prima cosa andiamo a definire le sequenze di escape dei colori come variabili, per evitare di dover riscrivere la sequenza ogni volta nei messaggi. In più diamo la possibilità a Bash di evitare di interpretare le sequenze nel caso il nostro sistema non utilizzi la modalità '''fancy output''', il testo colorato, nella funzione | Per prima cosa andiamo a definire le sequenze di escape dei colori come variabili, per evitare di dover riscrivere la sequenza ogni volta nei messaggi. In più diamo la possibilità a Bash di evitare di interpretare le sequenze nel caso il nostro sistema non utilizzi la modalità '''fancy output''', il testo colorato, nella funzione <code>log_use_fancy_output</code>, al fine di evitare caratteri incomprensibili nell'output. | ||
<pre> | <pre> | ||
Riga 89: | Riga 89: | ||
</pre> | </pre> | ||
Questa parte di codice verrà inserita dopo la sezione < | Questa parte di codice verrà inserita dopo la sezione <code>''log_use_fancy_output''</code>, per esattezza dopo il blocco: | ||
<pre> | <pre> | ||
Riga 107: | Riga 107: | ||
</pre> | </pre> | ||
Fatto ciò, nella parte successiva del file, andiamo a sostituire il comando builtin < | Fatto ciò, nella parte successiva del file, andiamo a sostituire il comando builtin <code>echo</code> con il comando di sistema <code>/bin/echo</code> con l'aggiunta dell'opzione <code>-e</code>. | ||
In seguito aggiungiamo, prima e dopo la parte di testo compresa fra doppi apici che segue il comando echo, le variabili colore precedentemente definite. | In seguito aggiungiamo, prima e dopo la parte di testo compresa fra doppi apici che segue il comando <code>echo</code>, le variabili colore precedentemente definite. | ||
Le variabili definite devono essere inserite fra parentesi '''{ }''' e poste dopo il simbolo del '''$'''. | Le variabili definite devono essere inserite fra parentesi '''{ }''' e poste dopo il simbolo del '''$'''. | ||
<pre>${RED}</pre> | <pre>${RED}</pre> | ||
Riga 147: | Riga 147: | ||
==log_progress_msg== | ==log_progress_msg== | ||
Stampa il nome del servizio su cui sta operando. Utilizzeremo il "PINK" | Stampa il nome del servizio su cui sta operando. Utilizzeremo il "PINK": | ||
<pre> | <pre> | ||
Riga 228: | Riga 228: | ||
</pre> | </pre> | ||
Una modifica di questo tipo colora tutti i messaggi stampati durante l'avvio del sistema. Alcuni init-scripts, però, hanno una propria formattazione del testo di output e questo scavalcherà le direttive di init-functions. | Una modifica di questo tipo colora tutti i messaggi stampati durante l'avvio del sistema. Alcuni init-scripts, però, hanno una propria formattazione del testo di output e questo scavalcherà le direttive di <code>init-functions</code>. | ||
=Una modifica meno invasiva= | =Una modifica meno invasiva= | ||
Riga 235: | Riga 235: | ||
Ad esempio: | Ad esempio: | ||
<div style="padding: 10px; background-color: black;color: white;"> | <div style="padding: 10px; background-color: black;color: white;"> | ||
< | <code>Starting GNOME Login Manager:<font color="blue"> gdm</font> <font color="green"> done.</font></code> | ||
</div> | </div> | ||
contributi