17.3. Terminais

Contributed by Sean Kelly.

Terminais proporcionam um meio de acesso conveniente e de baixo-custo ao seu sistema FreeBSD quando você não possui computadores para console ou uma rede para conexão. Esta seção descreve como utilizar terminais com o FreeBSD.

17.3.1. Utilidades e Tipos de Terminais

Os sistemas UNIX® primitivos não possuiam consoles. Diante disso, os usuários conectados executavam seus programas através de terminais ligados nas portas seriais dos computadores. Processo muito similar ao uso de um modem e um programa de conexão para um sistema remoto, para trabalhos em modo texto puro.

Atualmente, os PCs possuem consoles com alta definição gráfica, mas as habilidades de estabelecer uma sessão de login através de uma porta serial foi mantida nos sistemas operacionais UNIX atuais; O FreeBSD não é uma exceção. Utilizando um terminal conectado a uma porta serial você pode logar-se e rodar programas em modo texto normalmente como seria feito em um console ou numa janela de xterm do sistema X Window.

Os usuários coorporativos tem a opção de conectar diversos terminais num sistema FreeBSD e colocá-los nas mesas de trabalho de seus funcionários. Os usuários domésticos podem utilizar de computadores antigos como IBM PCs ou Macintosh® como terminais de um computador de performance superior rodando FreeBSD. Permitindo que um computador poderoso, que na maioria das vezes seria utilizado por apenas um usuário, torne-se um sistema para múltiplos usuários.

No FreeBSD tem-se basicamente três tipos de terminais:

São descritos em sequência cada um dos tipos.

17.3.1.1. Terminais Dumb ou burros

Terminais Dumb são um tipo característico de equipamento para conexão em computadores através de portas seriais. São chamados ``dumb'' ou ``burros'' devido a serem terminais que possuem habilidade única de envio e apresentação de informações em modo texto. Não é possível executar nenhum programa neles. A execução dos programas como editores de texto, compiladores, correio eletrônico, jogos, e outros, é feita pelo computador em que o terminal está conectado.

Existem diversos tipos de terminais burros, fabricados pelos mais variados fabricantes, como por exemplo o VT-100 da Digital Equipment Corporation, ou o WY-75 da Wyse. Qualquer que seja o tipo funcionará com o FreeBSD. Alguns terminais mais avançados podem até exibir gráficos, porém apenas algums programas podem fazer uso destas funcionalidades.

Terminais burros são plataformas de trabalho bastante comuns em locais onde os usuários não necessitam de aplicações gráficas como as providas pelo sistema X Window.

17.3.1.2. PCs atuando como terminais

Se um terminal burro possui habilidades suficientes para exibir, enviar e receber texto, certamente, qualquer computador poderá ser utilizado como um terminal burro. Tudo que será preciso é um cabo apropriado e a emulação de terminal realizada por um programa executado no computador.

Tal configuração é comum para uso doméstico. Por exemplo, se tem uma pessoa ocupada trabalahndo no seu console do FreeBSD você pode realizar trabalhos em texto ao mesmo tempo de um computador conectado como um terminal ao FreeBSD.

17.3.1.3. Terminais X

Terminais X são o tipo mais sofisticado de terminais disponíveis. Ao invés de serem conectados por portas seriais, estes são usualmente conectados via rede, como por exemplo Ethernet. No lugar de executarem aplicações em modo texto, estes podem exibir qualquer aplicação gráfica do X Window.

Os terminais X são apresentados aqui somente para abordagem geral do tema. Entretanto, este capítulo não abrange a configuração ou o uso de terminais X.

17.3.2. Configuração

Esta sessão descreve o que é necessário configurar no seu sistema FreeBSD para habilitar o login e utilização através de um terminal. É assumido aqui que você tenha previamente habilitado o suporte para portas seriais no seu kernel e que você tenha feito a conexão física do terminal na porta serial.

Relembrando o Capítulo 7 que descreve que o processo init é responsável pelo controle e inícialização de todos os processos ao iniciar o sistema. Uma das atividades executadas pelo init é ler o arquivo /etc/ttys e iniciar o processo getty nos terminais disponibilizados. O processo getty é responsável pela leitura do nome de login e pela inicialização do programa login.

Assim, para configurar os terminais para o seu sistema FreeBSD os seguintes passos devem ser realizados como root:

  1. Adicione uma linha no arquivo /etc/ttys para a entrada do diretório /dev indicando a porta serial caso esta não esteja descrita no arquivo.

  2. Especifique que o /usr/libexec/getty deve ser executado na porta, e indique um tipo apropriado de getty no arquivo /etc/gettytab.

  3. Especifique o tipo padrão do terminal.

  4. Configure a porta como `` on.''

  5. Especifique se a porta deve ser ``segura.''

  6. Force o init a reler o arquivo/etc/ttys.

Como passo opcional, você pode desejar criar um tipo de getty personalizado para utilizar no passo 2 fazendo uma entrada no arquivo /etc/gettytab. Este capítulo não explica como fazer isso; é recomendável que você leia as páginas de manual gettytab(5) e a getty(8) para informações detalhadas deste processo.

17.3.2.1. Adicionando uma entrada no arquivo /etc/ttys

O arquivo /etc/ttys lista todas as portas do seu sistema FreeBSD em que você deseja permitir logins. Por exemplo, o primeiro console virtual que é definido em uma entrada deste arquivo é o ttyv0. Você pode realizar login devido esta entrada. Este arquivo também contém entradas para outros consoles virtuais, portas seriais, e pseudo-ttys. Para um terminal físico, apenas liste a porta serial que está em /dev numa entrada sem a parte do /dev (por exemplo, /dev/ttyv0 deve ser listado como ttyv0).

A instalação padrão do FreeBSD inclui no arquivo /etc/ttys o suporte para as quatro primeiras portas seriais: ttyd0 à ttyd3. Se você conectar fisicamente um terminal em uma destas portas não será necessário editar o /etc/ttys pois as entradas referentes a estes terminais já constarão no arquivo.

Exemplo 17-1. Adicionando entradas de terminais em /etc/ttys

Vamos supor que gostaríamos de conectar dois terminais ao sistema: um Wyse-50 e um velho IBM PC 286 executando o programa de terminal Procomm, que emula um terminal VT-100. Nós conectamos o Wyse na segunda porta serial e o 286 na sexta porta serial (uma porta de uma placa multi-serial). As entradas correspondentes a esta configuração no arquivo /etc/ttys deveriam ser algo como abaixo:

ttyd1(1)  "/usr/libexec/getty std.38400"(2)  wy50(3)  on(4)  insecure(5)
ttyd5   "/usr/libexec/getty std.19200"  vt100  on  insecure
     
(1)
O primeiro campo normalmente especifica o nome de arquivo do terminal e ele é localizado em /dev.
(2)
O segundo campo é o comando executado para esta linha, que é usualmente getty(8). getty que inicializa e abre a via de comunicação, definindo a velocidade, além de perguntar por um nome de usuário e em seguida executar o programa login(1).

O programa getty aceita um (opcional) parâmetro em sua linha de comando que define o tipo do getty. Um tipo de getty determina as características de comunicação de um terminal, como taxa de bps e paridade. O programa getty lê estas características do arquivo /etc/gettytab.

O arquivo /etc/gettytab contém várias entradas de terminais, tanto de terminais novos quanto de antigos. Em quase todos os casos, as entradas que iniciam com o texto std funcionarão para os terminais conectados fisicamente. Estas entradas ignoram paridade. Há uma entrada std para cada taxa de bps de 110 à 115200. É claro que você pode adicionar suas próprias entradas neste arquivo. A página de manual gettytab(5) possui maiores informações sobre o assunto.

Quando estiver configurando o tipo de getty no arquivo /etc/ttys, tenha certeza de que as configurações de comunicação do terminal sejam equivalentes.

Para o nosso exemplo, o Wyse-50 não usa paridade e conecta à 38400 bps. O 286 PC não usa paridade e conecta à 19200 bps.

(3)
O terceiro campo é o tipo de terminal usualmente conectado através desta tty. Para portas dial-up, unknown ou dialup são tipicamente definidos neste campo desde que usuários possam fazer dial up com praticamente qualquer tipo de terminal ou programa. Para terminais físicos o tipo não muda, portanto, você pode colocar um tipo real de terminal neste campo, baseando-se na coleção de terminais do arquivo termcap(5).

Para o nosso exemplo, o Wyse-50 usa um tipo real de terminal enquanto o 286 PC executa o programa Procomm emulando um terminal VT-100.

(4)
O quarto campo especifica se a porta deve ser ativada. Colocando um on neste campo fará com que o processo init inicie o programa especificado no segundo campo, getty. Caso você defina off neste campo o getty não será iniciado, o que resultará na impossibilidade de logins nesta porta.
(5)
O campo final é usado para especificar se a porta será segura. Definindo a porta como segura significará que esta é confiável ao ponto de permitir que a conta root (ou qualquer outra conta com UID 0) possa realizar login nesta porta. Definindo como não segura fará com que não seja permitido logins com direitos de acesso como os do root. Numa porta não segura os usuários devem fazer acesso ao sistema através de contas sem privilégios de superusuário, e através do uso do su(1) ou algum método similar adquirir os privilégios.

É altamente recomandável que você defina com ``insecure'' tanto os terminais quanto as portas não habilitadas. É bastante fácil fazer o acesso e utilizar su caso você precise de privilégios de superusuário.

17.3.2.2. Forçando o init a reler o /etc/ttys

Após ter realizado as configurações necessárias no arquivo /etc/ttys você deve enviar um sinal SIGHUP (hangup) para o processo init para força-lo a reler as configurações e executá-las como descrito no arquivo. Por exemplo:

# kill -HUP 1

Nota: init é sempre o primeiro processo a ser executado no sistema, portanto, ele sempre terá o PID 1.

Se tudo foi configurado corretamente, todos os cabos devidamente conectados, e os terminais ligados, entã o processo getty deve estar sendo executado em cada um dos terminais e você já poderá ver os prompts de login.

17.3.3. Resolução de problemas na sua conexão

Mesmo com a maior atenção aos detalhes, algo pode ainda estar errado enquanto configuramos um terminal. Aqui temos uma lista de sintomas e algumas sugestões para correção de eventuais problemas.

17.3.3.1. O Prompt de Login não aparece

Tenha certeza de que seu terminal está conectado e ligado. Caso seja um computador pessoal atuando como terminal tenha certeza de que está executando o programa de emulação de terminal na porta correta.

Certifique-se de que os cabos entre seu terminal e o computador FreeBSD estejam conectados firmemente. Confirme estar utilizando o tipo de cabo correto para esta conexão.

Certifique-se de que seu terminal e seu sistema FreeBSD estão configurados com a mesma velocidade em bps e com a mesma configuração de paridade. Caso seja um terminal com tela, verifique os controles de contraste e brilho. Caso seja um terminal de impressão, certifique-se que este possui papel e tinta em quantidade suficiente.

Certifique-se de que o processo getty está rodando e servindo um terminal. Por exemplo, para obter uma lista dos processos getty em execução use o ps, digite:

# ps -axww|grep getty

Você deverá  ver uma entrada referente ao terminal. Por exemplo, a listagem seguinte mostra um getty sendo executado na segunda porta serial a ttyd1 e este está  usando o parâmetro std.38400 referente a entrada no /etc/gettytab:

22189  d1  Is+    0:00.03 /usr/libexec/getty std.38400 ttyd1

Caso não se tenha um processo getty em execução, verifique se você ativou a porta no /etc/ttys. Lembre-se também de executar kill -HUP 1 após modificar o arquivo ttys.

Caso o processo getty esteja rodando e o terminal não apresente o prompt de login ou apresente sem permitir a digitação, seu terminal ou cabo podem não suportar a verificação de conexão(handshaking). Tente modificar a entrada no /etc/ttys de std.38400 para 3wire.38400 lembrando de executar kill -HUP 1 após alterar o /etc/ttys. O 3wire é uma entrada similar ao std, porém ignora a verificação de conexão. Você pode reduzir a velocidade ou ativar o controle de fluxo quando utilizar 3wire, para prevenir estouro de áreas de troca(buffer overflows).

17.3.3.2. Caso apareçam caracteres estranhos ao invés do Prompt de Login

Certifique-se de que o terminal e o FreeBSD tenham a velocidade e a configuração de paridade compatíveis. Verifique no processo getty se o tipo de getty correto está em uso. Se não, edite o /etc/ttys e execute kill -HUP 1.

17.3.3.3. Caracteres aparecem duplicados; a senha aparece quando digitada

Altere o terminal (ou o programa de emulação de terminal) de ``half duplex'' ou ``local echo'' para ``full duplex.''

Este, e outros documentos, podem ser obtidos em ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

Para perguntas sobre FreeBSD, leia a documentação antes de contatar <questions@FreeBSD.org>.
Para perguntas sobre esta documentação, envie e-mail para <doc@FreeBSD.org>.