[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [translators] [docinfo] [indice analitico] [volume] [parte]
La console di un sistema GNU/Linux è normalmente priva di funzioni grafiche, con una risoluzione di 25 righe per 80 colonne di caratteri. Tuttavia, considerate le dimensioni comuni di uno schermo recente, diventa auspicabile la possibilità di visualizzare una densità maggiore di caratteri.
In generale, si ritiene consigliabile e necessario solo l'utilizzo delle funzioni di programmazione del tipo di carattere per lo schermo, in modo da poter gestire simboli di alfabeti non latini; tutto il resto, anche la gestione del frame buffer, sarebbe meglio riservarlo alle situazioni in cui dovesse rivelarsi indispensabile.
All'avvio di un kernel Linux in un elaboratore provvisto di adattatore grafico VGA, è possibile utilizzare il parametro vga, per richiedere la visualizzazione sullo schermo della console a una densità maggiore di caratteri:
vga=n |
vga=ask |
Il valore numerico che si può assegnare al parametro vga dipende dalle caratteristiche dell'adattatore grafico. Pertanto, generalmente si usa assegnare la parola chiave ask, con la quale si ottiene un menù dal quale è possibile selezionare ciò che è disponibile effettivamente.
L'utilizzo con successo di questo parametro di avvio implica che durante il funzionamento del sistema operativo non si modifichino i caratteri predefiniti (si veda la sezione successiva), cosa che però è quasi necessario fare, per poter gestire qualche simbolo in più, oltre a quelli essenziali delle lingue occidentali.
Le console virtuali, che normalmente utilizzano schermi VGA, possono essere configurate in modo da utilizzare un insieme di caratteri differente da quello standard (il famigerato CP437) e anche per permettere la visualizzazione di più righe e più colonne.
In passato, nei sistemi GNU/Linux è stato usato il programma setfont, (1) ora sostituito con consolechars, (2) per l'impostazione dei caratteri da mostrare sullo schermo di una console:
setfont [opzioni] file_di_configurazione |
consolechars [opzioni] |
È molto importante l'uso di setfont o di consolechars quando si decide di utilizzare un insieme di caratteri esteso, come ISO 8859-1 o meglio ancora come ISO 10646, per poter visualizzare caratteri come le lettere accentate maiuscole, che non fanno parte della codifica standard di un'interfaccia video a caratteri tipica.
Per ottenere il risultato, questi programmi si avvalgono di file di definizione dei caratteri, collocati nella directory /usr/share/consolefonts/
.
L'esempio seguente, visto sia per setfont, sia per consolechars, serve a ottenere la visualizzazione di caratteri utili nelle lingue europee, incluso l'arabo e l'ebraico, in uno schermo composto da 25 righe.
#
setfont /usr/share/consolefonts/LatArCyrHeb-16.psf
[Invio]
#
consolechars -f /usr/share/consolefonts/LatArCyrHeb-16.psf
[Invio]
Eventualmente, se la dimensione dei caratteri non è quella desiderata, si possono provare altri file della famiglia LatArCyrHeb-*.psf
.
Per approfondire la sintassi di questi programmi, si veda la pagina di manuale setfont(8) oppure consolechars(8); inoltre si veda la sezione 81.3.1.
Per i sistemi GNU/Linux esiste anche un altro programma che, oltre a definire l'insieme di caratteri, consente di sfruttare le caratteristiche della grafica VGA per ridimensionare lo schermo, allo scopo di consentire la visualizzazione di più righe e colonne:
SVGATextMode [opzioni] [Voce_di_configurazione] |
SVGATextMode, (3) per funzionare, non richiede il riavvio del sistema, interviene su tutte le console virtuali, però può entrare in conflitto con altri programmi che accedono direttamente alla gestione dell'adattatore grafico VGA. Sotto questo aspetto, sarebbe bene limitare l'uso di questo programma ai sistemi in cui non si usano programmi che richiedono la grafica o che emulano altri sistemi operativi.
È necessaria la configurazione con il file /etc/TextConfig
, piuttosto complesso. Generalmente, questo viene fornito già pronto per essere utilizzato con un adattatore grafico VGA standard, con un insieme di caratteri ISO 8859-1 normale.
Questa configurazione potrebbe andare bene, se non fosse che la codifica scelta non permette la visualizzazione dei caratteri pseudo-grafici utilizzati per le cornici nei programmi a tutto schermo come Midnight Commander (mc). Sarebbe il caso di modificare il file di configurazione in modo che contenga le righe seguenti, in pratica ritoccando quelle corrispondenti della configurazione originale.
|
Più avanti, nello stesso file di configurazione sono elencate le varie risoluzioni video a cui si può fare riferimento quando si vuole utilizzare SVGATextMode.
|
In base a quanto mostrato, si può tentare di visualizzare una schermata di 80 caratteri per 30 righe, con il comando seguente:
#
SVGATextMode 80x30x8
[Invio]
In generale, non è conveniente modificare la definizione delle risoluzioni disponibili; tuttavia, per approfondire il significato delle righe che compongono l'esempio di configurazione mostrato poco sopra, occorre conoscere in che modo si configura X, in particolare la sezione Monitor, come descritto nel capitolo 150.
Per approfondire l'uso di questo programma, si vedano le pagine di manuale SVGATextMode(8) e TextConfig(5).
Il kernel Linux è in grado di gestire graficamente la console, attraverso ciò che viene chiamato frame buffer. In pratica, nel kernel vengono incluse delle funzionalità apposite, assieme al codice specifico per l'adattatore grafico da controllare, di solito in forma di moduli (si veda eventualmente la sezione 49.2.17).
In pratica, è consigliabile che queste funzioni risiedano all'interno di moduli, in modo da poter attivare esattamente ciò che serve al proprio adattatore grafico. Il primo modulo da attivare per mettere in funzione il frame buffer è fbcon:
#
modprobe fbcon
[Invio]
#
lsmod | grep fbcon
[Invio]
fbcon 37024 0 tileblit 2688 1 fbcon font 8320 1 fbcon bitblit 5376 1 fbcon |
Dopo il caricamento di questo modulo, non si dovrebbe osservare alcun cambiamento per quanto riguarda l'aspetto dello schermo. La fase successiva richiede il caricamento del modulo specifico per l'adattatore grafico, che prima va identificato:
#
lspci | grep VGA
[Invio]
0000:01:00.0 VGA compatible controller: nVidia Corporation NV5M64 \ |
Quindi si cerca il modulo nella directory /lib/modules/versione/kernel/drivers/video/
:
#
uname -a
[Invio]
Linux nanohost 2.6.15.6 #1 PREEMPT Mon Mar 6 16:05:13 CET 2006 i686 GNU/Linux |
#
cd /lib/modules/2.6.15.6/kernel/drivers/video
[Invio]
#
find . -name \*fb\* -print
[Invio]
./cyber2000fb.ko ./arcfb.ko ./aty/aty128fb.ko ./aty/atyfb.ko ... ./neofb.ko ./nvidia/nvidiafb.ko ./pm2fb.ko ... ./vga16fb.ko ./vfb.ko |
Intuitivamente, si opta per il modulo nvidiafb:
#
modprobe nvidiafb
[Invio]
#
lsmod | grep fb
[Invio]
nvidiafb 48284 1 fbcon 37024 73 tileblit 2688 1 fbcon font 8320 1 fbcon bitblit 5376 1 fbcon |
Se si dispone del programma fbset, si può tentare di modificare al volo la risoluzione. Per farlo, occorre conoscere leggere prima il contenuto del file /etc/fb.modes
:
#
grep ^mode /etc/fb.modes
[Invio]
mode "640x480-60" mode "640x480-72" mode "640x480-75" mode "640x480-90" mode "640x480-100" mode "768x576-75" mode "800x600-48-lace" mode "800x600-56" mode "800x600-60" mode "800x600-70" mode "800x600-72" mode "800x600-75" mode "800x600-90" mode "800x600-100" mode "1024x768-43-lace" mode "1024x768-60" mode "1024x768-70" mode "1024x768-72" mode "1024x768-75" mode "1024x768-90" mode "1024x768-100" mode "1152x864-43-lace" mode "1152x864-47-lace" mode "1152x864-60" mode "1152x864-70" mode "1152x864-75" mode "1152x864-80" mode "1280x960-75-8" mode "1280x960-75" mode "1280x960-75-32" mode "1280x1024-43-lace" mode "1280x1024-47-lace" mode "1280x1024-60" mode "1280x1024-70" mode "1280x1024-74" mode "1280x1024-75" mode "1600x1200-60" mode "1600x1200-66" mode "1600x1200-76" |
Si tenta di utilizzare una risoluzione di 800x600-60:
#
fbset 800x600-60
[Invio]
L'utilizzo del frame buffer ha degli inconvenienti: pur usando i moduli, una volta caricati, non è più possibile ritornare alla gestione normale; se si commettono degli errori, si rischia di rendere invisibile e inutilizzabile la console.
Appunti di informatica libera 2006.07.01 --- Copyright © 2000-2006 Daniele Giacomini -- <daniele (ad) swlibero·org>
1) Linux console font and keytable utilities dominio pubblico, salva la licenza particolare di alcuni tipi speciali di carattere
2) Linux console tools GNU GPL
3) SVGATextMode GNU GPL
Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome console_grafica_vga_nei_sistemi_gnu_linux.htm
[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [translators] [docinfo] [indice analitico]