Capítulo 13. Driver de console

Índice
13.1. wscons
13.2. pccons
13.3. pcvt

Nas versões anteriores à 1.4, para gerenciar a tela do monitor e o teclado podia-se escolher entre pccons (específico para i386) e pcvt. Na versão 1.4 foi introduzido o novo driver wscons que, com o tempo, destinava-se a substituir completamente os dois primeiros.

13.1. wscons

wscons é o novo driver de console do NetBSD que deveria substituir pccons e pcvt. Oferece terminais virtuais, suporte para teclados internacionais, gerenciamento do mouse, etc. As capacidades do wscons alteram-se segundo a arquitetura. O i386 é o mais rico de funcionalidade.

wscons é ativado por default ao término da instalação e, portanto, não é necessário fazer nada para poder utilizá-lo. Para habilitar os consoles virtuais ver Capítulo 4. No resto da seção serão descritas as opções do arquivo de configuração do kernel que dizem respeito ao wscons.

Para habilitar wscons no arquivo de configuração do kernel é necessário ativar a opção adequada e desabilitar aquelas que dizem respeito ao pcvt e ao pcccons. (Atenção, somente um dos três drivers deve ser habilitado).

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

Para habilitar o teclado italiano

options     PCKBD_LAYOUT="KB_IT"    

A disposição do teclado italiano não é a ideal, em especial para os programadores. Para uma modificação ver Capítulo 4.

O número de consoles virtuais alocados automaticamente é controlado por

options     WSDISPLAY_DEFAULTSCREENS=4    

Os consoles adicionais, isto é, aqueles a mais com relação aos consoles auto-alocados, são habilitados no arquivo /etc/wscons.conf, tirando-se os indicadores de cometário (#) nas linhas do tipo "screen x". No exemplo seguinte é reservado um console adicional em relação aos alocados de modo automático.

# 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    

O script rc.wscons transforma cada linha não comentada desta tabela em uma chamada ao comando wsconscfg. As colunas tornam-se parâmetros do próprio comando. A coluna idx torna-se o parâmetro index; a coluna screen torna-se o parâmetro -t type (que define o tipo de tela, ou seja, o formato, o número de cores, etc.) e a coluna emul torna-se o parâmetro -e emul (que define a emulação). Por exemplo, se "screen 3" estivesse ativo, tornar-se-ia uma chamada a:

wsconscfg -e vt100 3    

Nota: note-se que pode ocorrer um conflito (inócuo) entre consoles alocados automaticamente pelo kernel e os consoles alocados no momento da inicialização através do /etc/wscons.conf. Se na inicialização tenta-se alocar uma tela já auto-alocada pelo kernel, será visualizada uma mensagem do tipo:

wsconscfg: WSDISPLAYIO_ADDSCREEN: Device busy      

A solução consiste em se comentar as linhas inúteis do /etc/wscons.conf.

Os consoles criados são naturalmente também ativados em /etc/ttys. Por exemplo:

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
...    

A linha

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

do /etc/ttys permite ao servidor X encontrar um terminal livre. Para usar uma tela diferente da número 4 é necessário fazer de tal modo que se passe um parâmetro na forma vtn ao servidor X (onde n é o número da tecla de função associada à tela a ser reservada para a interface gráfica).

Pode-se, por exemplo, habilitar a "screen 7" no /etc/wscons.conf e depois inicializar o X com "vt8". No caso do xdm é necessário editar o /usr/X11R6/lib/X11/xdm/Xserver. Por exemplo:

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

Se, no entanto, é usado o xdm3d, o percurso é diferente: /usr/X11R6/share/xdm3d/Xservers.

Nota: no wscons a combinação Ctrl+Alt+Backspace reseta o emulador do terminal. Pode ser útil em caso de problemas.

13.2. pccons

Pccons é o driver de console utilizado pelos disquetes de instalação da versão de hardware i386 (e talvez também de outras arquiteturas). Trata-se de um driver muito compacto (exige pouco espaço), mas que não dispõe de consoles virtuais ou de outras características avançadas.

13.3. pcvt

pcvt é um emulador de terminal VT220 e é dotado de funcionalidade muito mais avançada se o comparamos com o simples pccons. Entre outras coisas, suporta mais configurações de teclado e consoles virtuais múltiplos (com Ctrl+Alt+F1...F8 ou com as teclas de função F9-F12). Para ativar o pcvt é necessário recompilar o kernel. É preciso que se tenha as seguintes linhas no próprio arquivo de configuração:

# Ativar somente uma das duas linhas seguintes
#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    

Ademais, é necessário ativar o teclado italiano na inicialização e escolher o tipo certo de terminal:

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

Simultaneamente é necessário modificar o /etc/ttys. Por exemplo:

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

Na inicialização é necessário carregar as definições para o teclado italiano modificando, por exemplo, o arquivo /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 '.'     

Além disso, é preciso modificar o /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    

É necessário também compilar e instalar os programas utilitários do pcvt.

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