Capitolo 13. Driver di console

Sommario
13.1. wscons
13.2. pccons
13.3. pcvt

Nelle versioni prima della 1.4 per gestire lo schermo e la tastiera si poteve scegliere tra pccons (specifico per i386) e pcvt. Nella versione 1.4 ha fatto la sua comparsa il nuovo driver wscons che, col tempo, è destinato a sostituire completamente i primi due.

13.1. wscons

wscons è il nuovo driver di console di NetBSD, che dovrebbe sostituire pccons e pcvt. Offre terminali virtuali, supporto per tastiere internazionali, gestione del mouse, ecc. Le capacità di wscons cambiano a seconda del port: quello per i386 è il più ricco di funzionalità.

wscons è attivo di default al termine dell'installazione e, pertanto, non è necessario fare nulla per poterlo utilizzare. Per abilitare le console virtuali vedere Capitolo 4. Nel resto della sezione verranno descritte le opzioni del file di configurazione del kernel che riguardano wscons.

Per abilitare wscons nel file di configurazione del kernel bisogna attivare l'apposita opzione e disabilitare quelle di pcvt e pccons. (Attenzione, solo uno dei tre driver deve essere abilitato).

#pc0    at isa? port 0x60 irq 1   # pccons generic PC console driver
#vt0    at isa? port 0x60 irq 1   # PCVT console driver    

Per abilitare la tastiera italiana

options     PCKBD_LAYOUT="KB_IT"    

La disposizione della tastiera italiana non è l'ideale, specie per chi programma. Per una modifica vedere Capitolo 4.

Il numero di console virtuali autoallocate è controllato da

options     WSDISPLAY_DEFAULTSCREENS=4    

Le console aggiuntive, cioè quelle in più rispetto alle console autoallocate, vanno abilitate in /etc/wscons.conf, togliendo il segno di commento (#) alle righe del tipo "screen x". Nell'esempio seguente viene riservata un'ulteriore console rispetto a quelle autoallocate:

# screens to create
#       idx     screen  emul
#screen 0       -       vt100
screen 1        -       vt100
screen 2        -       vt100
screen 3        -       vt100
screen  4       -       -
#screen 4       80x25bf vt100
#screen 5       80x50   vt100    

Lo script rc.wscons trasforma ogni riga non commentata di questa tabella in una chiamata al comando wsconscfg: le colonne diventano parametri del comando stesso. La colonna idx diventa il parametro index, la colonna screen diventa il parametro -t type (che definisce il tipo di schermo, cioè il formato, il numero di colori, ecc.) e la colonna emul diventa il parametro -e emul (che definisce l'emulazione). Per esempio, se "screen 3" fosse attivo diventerebbe una chiamata a:

wsconscfg -e vt100 3    

Nota: si noti che si può verificare un conflitto (innocuo) tra le console autoallocate dal kernel e quelle allocate al momento del boot attraverso /etc/wscons.conf. Se all'avviamento si tenta di allocare uno schermo già autoallocato dal kernel verrà visualizzato un messaggio del tipo:

wsconscfg: WSDISPLAYIO_ADDSCREEN: Device busy      

La soluzione consiste nel commentare le righe inutili di /etc/wscons.conf.

Le console create vanno naturalmente anche attivate in /etc/ttys. Per esempio:

console "/usr/libexec/getty Pc"         pc3     off secure
ttyE0   "/usr/libexec/getty Pc"         vt220   on secure
ttyE1   "/usr/libexec/getty Pc"         vt220   on secure
ttyE2   "/usr/libexec/getty Pc"         vt220   on secure
ttyE3   "/usr/libexec/getty Pc"         vt220   off secure
...    

La linea

ttyE3   "/usr/libexec/getty Pc"         vt220   off secure    

di /etc/ttys consente al server X di trovare un terminale libero. Per usare uno schermo diverso dal numero 4 bisogna fare in modo di passare un parametro nella forma vtn al server X (n è il numero del tasto funzione associato allo schermo da riservare per la grafica).

Per esempio si può abilitare lo "screen 7" in /etc/wscons.conf e poi avviare X con "vt8". Nel caso di xdm bisogna editare /usr/X11R6/lib/X11/xdm/Xserver, per esempio:

:0 local /usr/X11R6/bin/X +kb dpms -bpp 16 dpms vt8    

Se si usa xdm3d, invece, il percorso è diverso: /usr/X11R6/share/xdm3d/Xservers.

Nota: in wscons la combinazione Ctrl-Alt-Backspace resetta l'emulatore di terminale. Può essere utile in caso di problemi.

13.2. pccons

Pccons è il driver di console utilizzato dai dischetti di installazione del port i386 (e forse anche di altri port). Si tratta di un driver molto compatto (richiede poco spazio) ma che non dispone di console virtuali o di altre caratteristiche avanzate.

13.3. pcvt

pcvt è un emulatore di terminale VT220 ed è dotato di funzionalità molto più avanzate rispetto al semplice pccons. Tra le altre cose supporta più configurazioni di tastiera e console virtuali multiple (con Ctrl+Alt+F1...F8 oppure con i tasti funzione F9-F12). Per attivare pcvt è necessario ricompilare il kernel; occorre avere le seguenti linee nel proprio file di configurazione:

# Attivare solo una delle due linee seguenti
#pc0    at isa? port 0x60 irq 1
vt0     at isa? port 0x60 irq 1
# Options for PCVT console driver
#options FAT_CURSOR 
options PCVT_NETBSD=132
options PCVT_NSCREENS=3    

Inoltre bisogna attivare la tastiera italiana all'avvio e scegliere il tipo giusto di terminale:

/usr/local/bin/kcon -m i2
TERM=pcvt25;    export TERM    

Corrispondentemente bisogna modificare /etc/ttys. Per esempio:

#console "/usr/libexec/getty Pc"   pcvt25  on secure
ttyv0    "/usr/libexec/getty Pc"   pcvt25  on secure    

All'avvio occorre caricare le impostazioni per la tastiera italiana, per esempio modificando /etc/rc.local:

KCONP=/usr/local/bin 
SCONP=/usr/local/bin 
LDFNP=/usr/local/bin
ISPCP=/usr/sbin
CURSP=/usr/local/bin

set_keybd=YES

#------------------------------------------------------
# if desired, setup keyboard for italian keyboard layout
#------------------------------------------------------

if [ X${set_keybd} = X"YES" -a -x $KCONP/kcon ]
then
  echo
  echo 'switching to italian keyboard layout'
  $KCONP/kcon -m i2
fi

echo '.'     

Inoltre occorre modificare /etc/ttys:

#console  "/usr/libexec/getty Pc" pcvt25  on secure
ttyv0   "/usr/libexec/getty Pc" pcvt25  on secure
ttyv1   "/usr/libexec/getty Pc" pcvt25  on secure
ttyv2   "/usr/libexec/getty Pc" pcvt25  on secure    

Occorre anche compilare e installare i programmi di utilità di pcvt.

cd /sys/arch/i386/isa/pcvt/Util
make
make install