Chapitre 12. Pilotes de console

Table des matières
12.1. wscons
12.2. pccons
12.3. pcvt

Dans les versions de NetBSD précédant la 1.4, l'utilisateur pouvait choisir entre deux pilotes différents pour l'écran et le clavier: pccons (spécifique à i386) et pcvt. Avec la version 1.4, est apparu le pilote multi-plateforme wscons qui se substitue aux deux précédents (qui sont toujours supportés).

12.1. wscons

Wscons est le nouveau pilote de console de NetBSD. Il permet les terminaux virtuels, supporte les claviers internationaux, gère la souris... Les capacités de wscons varient suivant le portage (il n'est pas disponible pour tous): la version pour i386 est particulièrement riche en fonctions.

A la fin de l'installation, wscons est actif par défaut et n'a besoin de rien d'autre pour fonctionner. En version 1.4, les consoles virtuelles sont activées par défaut: voyez le Chapitre 4. Le reste de cette section décrit les options de wscons du fichier de configuration du noyau.

Si vous compilez un noyau personnel, pour disposer de wscons, vous devez activer les options adéquates et commenter les options concernant pcvt et pccons (ils ne peuvent pas tourner en même temps). Par exemple:

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

Dans le fichier de configuration du noyau, vous pouvez aussi paramètrer un clavier étranger. Par exemple, pour utiliser un clavier italien par défaut:

options     PCKBD_LAYOUT="KB_IT"    

Note : le clavier italien n'est pas idéal pour la programmation. Pour le modifier, voyez le Chapitre 4.

Le nombre pré-alloué de consoles virtuelles est contrôlé par l'option suivante:

options     WSDISPLAY_DEFAULTSCREENS=4    

D'autres consoles peuvent être ajoutées en activant les bonnes lignes du fichier /etc/wscons.conf: le signe de commentaires (#) doit être enlevé des lignes commençant par "screen x". Dans l'exemple suivant, une cinquième console est ajoutée aux quatre précédentes:

# 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    

Le script rc.wscons transforme chaque ligne non commentée en appels à la commande wsconscfg: chaque colonne devient un paramètre. La colonne idx correspond au paramètre index, screen correspond à -t type (qui définit le type d'écran: lignes, colonnes, couleurs...) et emul à -e emul (qui définit l'émulation). Par exemple:

screen 3       -       vt100    

est transformé en cet appel:

wsconscfg -e vt100 3    

Note : il est possible qu'apparaissent des conflits entre les consoles pré-définies par le noyau et celles définies au démarrage par /etc/wscons.conf. Si pendant le démarrage, le système essaie d'allouer un écran déja défini, le message suivant sera affiché:

wsconscfg: WSDISPLAYIO_ADDSCREEN: Device busy    

La solution est de commenter les lignes incriminées dans /etc/wscons.conf.

Les consoles virtuelles doivent aussi être actives dans /etc/ttys. Par exemple:

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 ligne

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

de /etc/ttys est utilisée par le serveur X pour trouver un terminal libre. Pour utiliser un écran différent du numéro 4, un paramètre sous la forme vtn doit être passé au serveur (n est le numéro de la touche de fonction utilisée pour activer l'écran de X).

Par exemple, "screen 7" doit être activé dans /etc/wscons.conf et X démarré avec " vt8" . Si vous utilisez xdm, vous devez modifier /usr/X11R6/lib/X11/xdm/Xserver. Par exemple:

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

Pour xdm3d, le chemin est différent: /usr/X11R6/share/xdm3d/Xservers.

12.1.1. Mode texte de 50 lignes avec wscons

Un mode texte de 50 lignes peut être utilisé depuis la version 1.4.1 de NetBSD. Il est activé dans /etc/wscons.conf. La ligne suivante doit être décommentée:

font ibm  -  8  ibm  /usr/share/pcvt/fonts/vt220l.808      

Les lignes suivantes doivent être modifiées:

#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      

Cette configuration permet d'utiliser huit écrans, accessibles avec la combinaison de touches Ctrl-Alt-Fn (où n varie de 1 à 8). Les pilotes correspondants sont ttyE0 à ttyE7. Pour y accéder et obtenir l'invite de connexion, modifiez /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      

Il n'est pas possible de modifier la résolution " 80x25"  de l'écran 0, sans doutes pour garantir que, même en cas de problème, il y ait un écran qui fonctionne toujours.

12.2. pccons

C'est le pilote de console qui se trouve sur la disquette d'installation i386. Il ne permet pas les consoles virtuelles et les programmes utilitaires mais prend très peu de place.

12.3. pcvt

Pcvt est un émulateur de terminal VT220 et possède des fonctions plus avancées que celles du simple pccons. Il supporte les claviers étrangers et les consoles virtuelles (avec Ctrl-Alt-F1 à F8 ou avec les touches de fonction F9 à F12). Pour activer pcvt, les lignes suivantes doivent être décommentées du fichier de configuration du noyau:

# Enable only one of the following lines
#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    

Pour utiliser un clavier étranger, vous devez l'activer au démarrage. Il faut aussi choisir le terminal correct. Par exemple:

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

/etc/ttys doit être modifié en fonction. Par exemple:

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

Clavier italien Pcvt : la définition du clavier i2 est incorrecte, le fichier /sys/arch/i386/isa/pcvt/Util/keycap/keycap.src doit donc être modifié. Voici une modification qui a été testée avec NetBSD 1.3.3:

i2|italy142|Italian 142 mapping:\
	    :A8={:A9=[:A10=]:A11=}:\
	    :A12=`:A13=~:\
	    :A17=@:A18=#:\
	    :tc=italy141:      

Les paramètrages d'un clavier étranger (ici le clavier italien), doivent être chargés au démarrage, par exemple dans /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

#------------------------------------------------------
# En cas, mise en place du clavier italien
#------------------------------------------------------

if [ X${set_keybd} = X"YES" -a -x $KCONP/kcon ]
then
  echo
  echo 'passage en clavier italien'
  $KCONP/kcon -m i2
fi

echo '.'     

/etc/ttys doit aussi être modifié:

#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    

L'utilitaire pcvt doit être compilé et installé:

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

12.3.1. Changer la taille écran

Avec pcvt, vous pouvez changer le nombre de lignes et de colonnes à l'écran. L'exemple de script qui suit peut être utilisé pour passer automatiquement d'une résolution à une autre:

#!/bin/sh
# Mettre l'écran à # lignes
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 "Nombre de lignes invalide (25/28/40/50)"
    ;;
esac