3.2. Console virtuali

Quasi tutte le distribuzioni Free Software possiedono "terminali virtuali" predefiniti, console o schermi testuali completamente separati, che sono disponibili tramite pressione dei tasti Alt sinistro + F1-F6 (solo circa 6 console sono abilitate in maniera predefinita). Si tenga presente che è anche possibile usare un metodo a riga di comando per spostarsi tra le console (si veda il comando chvt) e che si possono aprire nuove console automaticamente (tramite script o in altro modo) con il comando open. Alcuni Unix proprietari utilizzano la combinazione Ctrl + Alt + 1-6 (tasti numerici standard al posto dei tasti funzione).

Per abilitare più console virtuali di quelle presenti come predefinite, si avvii sudo editor /etc/inittab e si aggiungano più righe simili a quelle:

5:23:respawn:/sbin/getty 38400 tty5
6:23:respawn:/sbin/getty 38400 tty6

[Si può vedere quali campi devono essere incrementati.] Per far sì che le modifiche in questo file abbiano effetto, si esca dall'editor di testo e si digiti telinit q.

Se si creano più di 12 console, non si può riuscire ad accedervi con Alt sinistro (dato che l'ultimo tasto F che si possiede è il 12), perciò si usi il tasto Alt destro per raggiungere le console da 13 a 24. Si può anche utilizzare Alt + freccia sinistra o Alt + freccia destra per passare ciclicamente tra le console. Il tasto Alt + Stamp sposta tra le due console virtuali usate per ultime.

Non abbiamo ancora trattato nessun argomento riguardo il Sistema X Window (interfaccia grafica Unix), ma si ricordi solo che si deve utilizzare Ctrl+Alt invece che solo Alt per passare da una finestra X a una console.

Il comando deallocvt libera la memoria ancora associata ai terminali virtuali che non sono più utilizzati (naturalmente dalle applicazioni, non da voi), tuttavia questo non è probabilmente così importante oggigiorno, a causa del pazzesco quantitativo di RAM nei personal computer.

Alcune cose più utili che si possono fare con le console includono la modifica della dimensione del carattere VGA. Questo può essere velocemente realizzato eseguendo qualcosa del tipo consolechars -f lat1-08, dove i font disponibili si trovano nella directory /usr/share/consolefonts/.

Un altro modo è di avviare lilo -R 'linux vga=ask' ; reboot, che farà riavviare il sistema e verrà fornita una opzione per specificare la dimensione del carattere (una dimensione di 6 risulta piccola e piacevole). La riga di comando suddetta imposta i parametri di LILO solo per il prossimo avvio (linux vga=ask). Così quando si trova una modalità VGA piacevole, si dovrebbe modificare /etc/lilo.conf e renderla permanente in questo modo:

image=/vmlinuz
label=Linux
read-only
# aggiungere semplicemente la riga qui sotto
append="vga=X"

"X" è sostituito con il valore reale a piacimento, per esempio 6. Poi, avviare lilo per applicare le modifiche (non dimenticando sudo, naturalmente).

È anche possibile pilotare la console in modalità VESA ad alta risoluzione, ma questo è piuttosto complicato da impostare e non è giustificabile inserirlo nella nostra Guida.

Inoltre, se si vede il pinguino nell'angolo superiore sinistro del proprio schermo quando il sistema si avvia, oppure se il puntatore testuale della console è un rettangolo lampeggiante (invece che un semplice simbolo di sottolineatura lampeggiante), allora si sta utilizzando una modalità grafica "framebuffer". In quel caso ci sono ulteriori modalità video disponibili, solo che non sono elencate nel menu di selezione di avvio; si veda la tabella sulla pagina di Framebuffer HOWTO per l'elenco completo. C'è disponibile anche il comando fbset (dal pacchetto fbset) per controllare l'aspetto del framebuffer.

Nota

In termini molto semplici, i framebuffer mappano direttamente una porzione della RAM al dispositivo grafico del display. L'ammontare di memoria occupata corrisponde a risoluzione orizzontale * risoluzione verticale * bit per pixel. Tutto ciò che è necessario fare per disegnare sullo schermo allora, è modificare le posizioni appropriate nella RAM.

Sebbene l'idea del framebuffer sia molto bella (e i framebuffer giochino un ruolo più importante su altre architetture di quello che giocano sui PC), e benché i framebuffer possano essere veramente veloci, non hanno mai raggiunto molta popolarità sui PC GNU/Linux. Sono generalmente troppo difficili da mettere a punto correttamente e la documentazione del framebuffer Linux è terribilmente povera (il miglior punto di partenza è il libro Programming Linux Games di John R. Hall, Loki software).

Tuttavia, siccome tutte le schede VESA2 supportano i framebuffer, per un certo periodo (pressapoco dall'anno 1998 al 2001) i framebuffer erano spesso utilizzati per far girare interfacce grafiche X su schede grafiche per le quali non esistevano ancora driver di software libero; erano lente e così via (ovviamente, dato che non impiegavano nessuna tecnica di accelerazione), ma pur sempre in grado di fornire un display con risoluzione e profondità di colore normali (al contrario della modalità VGA anch'essa supportata, ma che permetteva solamente una risoluzione a 640x480 in 16 colori).

Oggigiorno, i framebuffer sono utilizzati per lo più in programmi di installazione del sistema operativo che necessitano di ottenere una maggiore compatibilità su un ampio spettro di hardware.

Oltre alla ricordata dimensione del carattere, si può anche cambiare il tipo di carattere. Si installi il pacchetto fonter e si sarà in grado di modificare e creare i propri tipi di carattere eseguendo fonter o di utilizzare alcuni tra quelli standard che si possiedono:

$ consolechars -f /usr/share/fonter/crakrjak.fnt
$ consolechars -f /usr/share/fonter/elite.fnt
$ consolechars -f iso01.f16

È bello sapere anche che si può facilmente cambiare la mappatura dei tasti della tastiera. Per vedere le mappature della tastiera attuali, avviare semplicemente dumpkeys > keymap; editor keymap.

Dopo avere regolato il file keymap secondo le proprie necessità, lo si ricarichi con il comando loadkeys ./keymap.

Per vedere come sia semplicemente grandiosa la console, avviare il programma loadkeys e digitare quanto segue al suo "prompt" dei comandi:

string F1 = "Hello, World!"
[Ctrl+d]

Poi si prema solo il tasto F1 per vederne le conseguenze.

Notare che questa non è la cosa migliore che si possa fare con la console; è solo una piccola collezione di veloci e utili trucchi per mostrare la direzione in cui guardare. Se si è interessati ad ulteriori trucchi, si dia uno sguardo ad (alcune tra) setterm(1), stty(1), tput(1), tset(1) e possibilmente tic(1).