26.3. Terminais
Anterior | Capítulo 26. Comunicações Seriais | Próxima

## 26.3. Terminais

Contributed by Sean Kelly.

Os terminais fornecem uma maneira conveniente e barata de acessar um sistema FreeBSD quando não estão no console do computador ou em uma rede conectada. Esta seção descreve como usar terminais com o FreeBSD.

Os sistemas originais UNIX® não tinham consoles. Em vez disso, os usuários efetuaram login e executaram programas por meio de terminais conectados as portas seriais do computador.

A capacidade de estabelecer uma sessão de login em uma porta serial ainda existe em quase todos os sistemas operacionais do tipo UNIX® hoje, incluindo o FreeBSD. Usando um terminal conectado a uma porta serial não usada, um usuário pode efetuar login e executar qualquer programa de texto que possa ser executado normalmente no console ou em uma janela `xterm`.

Muitos terminais podem ser conectados a um sistema FreeBSD. Um computador sobressalente mais antigo pode ser usado como um terminal conectado a um computador mais potente executando o FreeBSD. Isso pode transformar o que poderia ser um computador de usuário único em um poderoso sistema de múltiplos usuários.

O FreeBSD suporta três tipos de terminais:

Terminais Burros

  Terminais burro são um hardware especializado que se conecta a computadores através de linhas seriais. Eles são chamados de “dumb” porque eles possuem apenas poder computacional suficiente para exibir, enviar e receber texto. Nenhum programa pode ser executado nesses dispositivos. Em vez disso, os terminais burros se conectam a um computador que executa os programas necessários.

  Existem centenas de tipos de terminais burro feitos por muitos fabricantes, e praticamente qualquer tipo funciona com o FreeBSD. Alguns terminais high-end podem até exibir gráficos, mas apenas determinados pacotes de software podem aproveitar esses recursos avançados.

  Terminais burro são populares em ambientes de trabalho onde os trabalhadores não precisam de acesso a aplicativos gráficos.

Computadores Atuando como Terminais

  Como um terminal burro tem capacidade suficiente para exibir, enviar e receber texto, qualquer computador de reserva pode ser um terminal burro. Tudo o que é necessário é o cabo adequado e algum software de terminal emulation para ser executado no computador.

  Esta configuração pode ser útil. Por exemplo, se um usuário está ocupado trabalhando no console do sistema FreeBSD, outro usuário pode fazer algum trabalho somente de texto ao mesmo tempo de um computador pessoal menos potente ligado como um terminal ao sistema FreeBSD.

  Existem pelo menos dois utilitários no sistema base do FreeBSD que podem ser usados ​​para trabalhar através de uma conexão serial: cu(1) e tip(1).

  Por exemplo, para conectar-se de um sistema cliente que executa o FreeBSD para a conexão serial de outro sistema:

      # cu -l /dev/cuauN

  Portas são numeradas a partir de zero. Isso significa que `COM1` é `/dev/cuau0`.

  Programas adicionais estão disponíveis através da coleção de ports, como comms/minicom.

Terminais X

  Os terminais X são o tipo de terminal mais sofisticado disponível. Em vez de se conectar a uma porta serial, eles geralmente se conectam a uma rede como a Ethernet. Em vez de serem relegados a aplicativos somente de texto, eles podem exibir qualquer aplicativo Xorg.

  Este capítulo não cobre a configuração ou uso de terminais X.

### 26.3.1. Configuração do Terminal

Esta seção descreve como configurar um sistema FreeBSD para ativar uma sessão de login em um terminal serial. Assume-se que o sistema reconhece a porta serial a qual o terminal está conectado e que o terminal está conectado com o cabo correto.

No FreeBSD, o `init` lê o `/etc/ttys` e inicia um processo `getty` nos terminais disponíveis. O processo `getty` é responsável por ler um nome de login e iniciar o programa `login`. As portas no sistema FreeBSD que permitem logins estão listadas em `/etc/ttys`. Por exemplo, o primeiro console virtual, `ttyv0`, possui uma entrada nesse arquivo, permitindo logins no console. Este arquivo também contém entradas para os outros consoles virtuais, portas seriais e pseudo-ttys. Para um terminal com fio, a entrada `/dev` da porta serial é listada sem a parte `/dev`. Por exemplo, `/dev/ttyv0` está listado como `ttyv0`.

Por padrão o `/etc/ttys` configura o suporte para as quatro primeiras portas seriais, `ttyu0` até `ttyu3`:

    ttyu0   "/usr/libexec/getty std.9600"   dialup  off secure
    ttyu1   "/usr/libexec/getty std.9600"   dialup  off secure
    ttyu2   "/usr/libexec/getty std.9600"   dialup  off secure
    ttyu3   "/usr/libexec/getty std.9600"   dialup  off secure

Ao conectar um terminal a uma destas portas, modifique a entrada padrão para definir a velocidade e o tipo de terminal necessários, para ligar o dispositivo `on` e, se necessário, para alterar o `secure` da porta. Se o terminal estiver conectado a outra porta, adicione uma entrada para a porta.

Exemplo 26.1, “Configurando Entradas de Terminal” configura dois terminais em `/etc/ttys`. A primeira entrada configura um Wyse-50 conectado ao `COM2`. A segunda entrada configura um computador antigo executando o software do terminal Procomm emulando um terminal VT-100. O computador está conectado à sexta porta serial em uma placa serial com várias portas.

Exemplo 26.1. Configurando Entradas de Terminal

    ttyu1  "/usr/libexec/getty std.38400"  wy50  on  insecure
    ttyu5   "/usr/libexec/getty std.19200"  vt100  on insecure

| O primeiro campo especifica o nome do dispositivo do terminal serial.

O segundo campo informa ao `getty` para inicializar e abrir a linha, definir a velocidade da linha, solicitar um nome de usuário e, em seguida, executar o programa `login`. O tipo de getty type configura características na linha do terminal, como taxa e paridade bps. Os tipos de getty disponíveis estão listados em `/etc/gettytab`. Em quase todos os casos, os tipos de getty que começam com `std` funcionarão para terminais conectados, já que essas entradas ignoram a paridade. Há uma entrada `std` para cada taxa de bps de 110 a 115200. Consulte gettytab(5) para mais informações.

Ao definir o tipo de getty, certifique-se de coincidir com as configurações de comunicação usadas pelo terminal. Para este exemplo, o Wyse-50 não usa paridade e se conecta a 38400 bps. O computador não usa paridade e se conecta a 19200 bps.

O terceiro campo é o tipo de terminal. Para portas dial-up, `unknown` ou `dialup` é normalmente usado, pois os usuários podem discar praticamente com qualquer tipo de terminal ou software. Como o tipo de terminal não muda para terminais com fio, um tipo de terminal real de `/etc/termcap` pode ser especificado. Para este exemplo, o Wyse-50 usa o tipo de terminal real enquanto o computador executando o Procomm está configurado para emular um VT-100.

| O quarto campo especifica se a porta deve estar ativada. Para ativar logins nessa porta, este campo deve ser definido como `on`.

O campo final é usado para especificar se a porta é segura. Marcar uma porta como `secure` significa que ela é confiável o suficiente para permitir que `root` faça login a partir dessa porta. As portas inseguras não permitem logins `root`. Em uma porta insegura, os usuários devem efetuar login de contas não privilegiadas e, em seguida, usar o `su` ou um mecanismo semelhante para obter privilégios de superusuário, conforme descrito em Seção 3.3.1.3, “A conta de superusuário”. Por razões de segurança, recomenda-se alterar esta configuração para `insecure`.

Depois de fazer qualquer alteração em `/etc/ttys`, envie um sinal SIGHUP (hangup) para o processo `init` para forçá-lo a reler seu arquivo de configuração:

    # kill -HUP 1

Como o `init` é sempre o primeiro processo executado em um sistema, ele sempre tem um processo ID de`1`.

Se tudo estiver configurado corretamente, todos os cabos estiverem no lugar e os terminais ligados, um processo `getty` deverá estar em execução em cada terminal e as solicitações de login deverão estar disponíveis em cada terminal.

### 26.3.2. Solução de Problemas da Conexão

Mesmo com a mais meticulosa atenção aos detalhes, algo poderia dar errado ao configurar um terminal. Aqui está uma lista de sintomas comuns e algumas correções sugeridas.

Se nenhum prompt de login aparecer, verifique se o terminal está conectado e ligado. Se for um computador pessoal atuando como um terminal, verifique se ele está executando o software de emulação de terminal na porta serial correta.

Certifique-se de que o cabo esteja conectado firmemente ao terminal e ao computador do FreeBSD. Certifique-se de que é o tipo certo de cabo.

Certifique-se de que o terminal e o FreeBSD concordem com as configurações de taxa e paridade de bps. Para um terminal de exibição de vídeo, verifique se os controles de contraste e brilho estão ativados. Se for um terminal de impressão, verifique se o papel e a tinta estão em bom estado.

Use `ps` para certificar-se de que um processo `getty` esteja em execução e atendendo ao terminal. Por exemplo, a listagem a seguir mostra que um `getty` está sendo executado na segunda porta serial, `ttyu1`, e está usando a entrada `std.38400` em `/etc/gettytab`:

    # ps -axww|grep ttyu
    22189  d1  Is+    0:00.03 /usr/libexec/getty std.38400 ttyu1

Se nenhum processo `getty` estiver em execução, certifique-se de que a porta esteja ativada em `/etc/ttys`. Lembre-se de executar `kill -HUP 1` após modificar `/etc/ttys`.

Se o processo `getty` estiver em execução, mas o terminal ainda não exibir um prompt de login ou se exibir um prompt, mas não aceitar entrada digitada, o terminal ou cabo poderá não suportar handshaking de hardware. Tente alterar a entrada em `/etc/ttys` de `std.38400` para `3wire.38400` e, em seguida, execute `kill -HUP 1` depois de modificar o `/etc/ttys`. A entrada `3wire` é semelhante a `std`, mas ignora handshaking de hardware. Pode ser necessário reduzir a taxa de transmissão ou ativar o controle de fluxo de software ao usar `3wire` para evitar buffer overflows.

Se aparecer lixo em vez de um prompt de login, certifique-se de que o terminal e o FreeBSD concordem com as configurações de taxa e paridade de bps. Verifique os processos `getty` para certificar-se de que o tipo correto `getty` esteja em uso. Se não, edite `/etc/ttys` e execute `kill -HUP 1`.

Se os caracteres aparecerem duplicados e a senha aparecer quando digitada, alterne o terminal ou o software de emulação de terminal de “half duplex” ou “local echo” para “full duplex.”

Anterior | Acima | Próxima
26.2. Terminologia serial e hardware | Principal | 26.4. Serviço Dial-in

All FreeBSD documents are available for download at https://download.freebsd.org/ftp/doc/

Questions that are not answered by the documentation may be sent to <freebsd-questions@FreeBSD.org>.
Send questions about this document to <freebsd-doc@FreeBSD.org>.