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.
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 busyLa 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.
La modalità di testo a 50 linee si può utilizzare a partire dalla versione 1.4.1 di NetBSD. Per attivare questa modalità, oltre alle operazioni precedentemente descritte bisogna editare /etc/wscons.conf togliendo il commento alla linea:
font ibm - 8 ibm /usr/share/pcvt/fonts/vt220l.808
Alla fine del file modificare le righe nel modo seguente:
#screen 0 80x50 vt100 screen 1 80x50 vt100 screen 2 80x50 vt100 screen 3 80x50 vt100 screen 4 80x50 vt100 screen 5 80x50 vt100 screen 6 80x50 vt100 screen 7 80x50 vt100
In questo modo si ottengono otto schermi, ai quali si accede con la combinazione Ctrl-Alt-Fn (con n che va da 1 a 8); i dispositivi corrispondenti sono quelli da ttyE0 a ttyE7. Per abilitarli e avere un prompt di login, modificare /etc/ttys:
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 on secure ttyE4 "/usr/libexec/getty Pc" vt220 on secure ttyE5 "/usr/libexec/getty Pc" vt220 on secure ttyE6 "/usr/libexec/getty Pc" vt220 on secure ttyE7 "/usr/libexec/getty Pc" vt220 on secure
A quanto sembra, non è possibile modificare l'impostazione di 80x25 dello schermo 0, probabilmente per evitare, in caso di problemi, di perdere l'unico schermo funzionante di console.
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.
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
Nota: Nella definizione della tastiera i2 c'è un errore. Occorre modificare il file /sys/arch/i386/isa/pcvt/Util/keycap/keycap.src; la versione corretta è:
i2|italy142|Italian 142 mapping:\ :A8={:A9=[:A10=]:A11=}:\ :A12=`:A13=~:\ :A17=@:A18=#:\ :tc=italy141:
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
Nota: In caso di errori di compilazione, controllare che in /usr/include/machine sia presente il file pcvt_ioctl.h. Se non c'è bisogna copiarlo.
Con pcvt è possibile cambiare il numero di righe e di colonne sullo schermo. Il seguente programma, per esempio, esegue l'operazione automaticamente, consentendo di scegliere tra varie configurazioni:
#!/bin/sh # Set the screen to # lines case $1 in 25) /usr/local/bin/scon -s 25 /usr/local/bin/cursor -s13 -e14 ;; 28) /usr/local/bin/loadfont -c1 -f /usr/share/misc/pcvtfonts/vt220l.814 /usr/local/bin/loadfont -c2 -f /usr/share/misc/pcvtfonts/vt220h.814 /usr/local/bin/scon -s 28 /usr/local/bin/cursor -s12 -e14 ;; 40) /usr/local/bin/loadfont -c3 -f /usr/share/misc/pcvtfonts/vt220l.810 /usr/local/bin/loadfont -c4 -f /usr/share/misc/pcvtfonts/vt220h.810 /usr/local/bin/scon -s 40 /usr/local/bin/cursor -s8 -e10 ;; 50) /usr/local/bin/loadfont -c5 -i /usr/share/misc/pcvtfonts/vt220l.808 /usr/local/bin/loadfont -c6 -i /usr/share/misc/pcvtfonts/vt220h.808 /usr/local/bin/scon -s 50 /usr/local/bin/cursor -s6 -e8 ;; *) echo "Invalid # of lines (25/28/40/50)" ;; esac