26.6. Configurando o Console Serial
Anterior | Capítulo 26. Comunicações Seriais | Próxima

## 26.6. Configurando o Console Serial

Contributed by Kazutaka YOKOTA.
Based on a document by Bill Paul.

O FreeBSD tem a capacidade de inicializar um sistema com um terminal burro em uma porta serial como um console. Esta configuração é útil para administradores de sistemas que desejam instalar o FreeBSD em máquinas que não possuem teclado ou monitor conectados, e desenvolvedores que desejam depurar o kernel ou drivers de dispositivos.

Como descrito em Capítulo 12, O processo de inicialização do FreeBSD, o FreeBSD emprega um bootstrap de três estágios. Os dois primeiros estágios estão no código do bloco de inicialização que é armazenado no início da slice do FreeBSD no disco de inicialização. O bloco de inicialização, em seguida, carrega e executa o carregador de boot como o código do terceiro estágio.

Para configurar a inicialização a partir de um console serial, o código do bloco de inicialização, o código do carregador de inicialização e o kernel precisam ser configurados.

### 26.6.1. Configuração Rápida do Console Serial

Esta seção fornece uma visão geral rápida da configuração do console serial. Este procedimento pode ser usado quando o terminal burro é conectado ao `COM1`.

Procedimento 26.1. Configurando um Console Serial no `COM1`

1. Conecte o cabo serial ao `COM1` e ao terminal de controle.

2. Para configurar mensagens de inicialização para exibição no console serial, emita o seguinte comando como o superusuário:

       # sysrc -f /boot/loader.conf console=comconsole

3. Edite `/etc/ttys` e mude `off` para `on` e `dialup` para `vt100` para a entrada `ttyu0`. Caso contrário, uma senha não será necessária para conectar-se através do console serial, resultando em uma potencial brecha de segurança.

4. Reinicialize o sistema para ver se as alterações entraram em vigor.

Se uma configuração diferente for necessária, consulte a próxima seção para obter uma explicação de configuração mais detalhada.

### 26.6.2. Configuração do console serial em profundidade

Esta seção fornece uma explicação mais detalhada das etapas necessárias para configurar um console serial no FreeBSD.

Procedimento 26.2. Configurando um Console Serial

1. Prepare um cabo serial.

   Use um cabo de null-modem ou um cabo serial padrão e um adaptador de null-modem. Veja Seção 26.2.1, “Cabos Serial e Portas” para uma discussão sobre cabos seriais.

2. Desconecte o teclado.

   Muitos sistemas detectam o teclado durante o Power-On Self-Test (POST) e geram um erro se o teclado não for detectado. Algumas máquinas recusarão a inicialização até que o teclado esteja conectado.

   Se o computador reclamar do erro, mas inicializar de qualquer maneira, nenhuma outra configuração será necessária.

   Se o computador se recusar a inicializar sem um teclado conectado, configure o BIOS para que ele ignore este erro. Consulte o manual da placa-mãe para obter detalhes sobre como fazer isso.

   ### Dica:

   Tente configurar o teclado para “Not installed” no BIOS. Esta configuração diz ao BIOS para não detectar um teclado ao ligar, então ele não deve reclamar se o teclado estiver ausente. Se essa opção não estiver presente no BIOS, procure uma opção “Halt on Error”. Configurando isto para “All but Keyboard” ou para “No Errors” terá o mesmo efeito.

   Se o sistema tiver um mouse PS/2®, desconecte-o também. Os mouses PS/2® compartilham algum hardware com o teclado e, deixar o mouse conectado, pode enganar o sistema e faze-lo pensar que o teclado ainda está lá.

   ### Nota:

   Embora a maioria dos sistemas inicialize sem um teclado, alguns não inicializarão sem um adaptador gráfico. Alguns sistemas podem ser configurados para inicializar sem nenhum adaptador gráfico alterando a configuração do “graphics adapter” na configuração BIOS para “Not installed”. Outros sistemas não suportam esta opção e recusarão a inicialização se não houver hardware de exibição no sistema. Com estas máquinas, deixe algum tipo de placa gráfica ligada, mesmo que seja apenas uma placa mono lixo. Um monitor não precisa ser conectado.

3. Conecte um terminal burro, um computador antigo com um programa de modem ou a porta serial de outra máquina UNIX® na porta serial da máquina freebsd.

4. Adicione as entradas `hint.sio.*` apropriadas para o `/boot/device.hints` para a porta serial. Algumas placas com várias portas também exigem opções de configuração do kernel. Consulte sio(4) para obter as opções necessárias e os device hints para cada porta serial suportada.

5. Crie o `boot.config` no diretório raiz da partição `a` na unidade de inicialização.

   Este arquivo instrui o código do bloco de inicialização como inicializar o sistema. Para ativar o console serial, uma ou mais das seguintes opções são necessárias. Ao usar várias opções, inclua todas elas na mesma linha:

   `-h`

     Alterna entre os consoles interno e serial. Use isso para alternar dispositivos do console. Por exemplo, para inicializar a partir do console (vídeo) interno, use `-h` para direcionar o carregador de boot e o kernel para usar a porta serial como seu dispositivo de console. Alternativamente, para inicializar a partir da porta serial, use `-h` para dizer ao gerenciador de inicialização e ao kernel para usar a exibição de vídeo como o console.

   `-D`

     Alterna entre as configurações de console única e dupla. Na configuração única, o console será o console interno (exibição de vídeo) ou a porta serial, dependendo do estado de `-h`. Na configuração do console duplo, a exibição de vídeo e a porta serial se tornarão o console ao mesmo tempo, independentemente do estado de `-h`. No entanto, a configuração do console duplo entrará em vigor somente enquanto o bloco de inicialização estiver em execução. Depois que o gerenciador de boot obtiver controle, o console especificado por `-h` se tornará o único console.

   `-P`

     Faz com que o bloco de inicialização avalie o teclado. Se nenhum teclado for encontrado, as opções `-D` e `-h` serão automaticamente definidas.

     ### Nota:

     Devido a restrições de espaço na versão atual dos blocos de inicialização, `-P` é capaz de detectar somente teclados estendidos. Teclados com menos de 101 teclas e sem as teclas F11 e F12 podem não ser detectados. Teclados em alguns laptops podem não ser encontrados corretamente devido a essa limitação. Se este for o caso, não use `-P`.

   Use `-P` para selecionar o console automaticamente ou `-h` para ativar o console serial. Consulte boot(8) e boot.config(5) para maiores detalhes.

   As opções, exceto para `-P`, são passadas para o carregador de boot. O gerenciador de boot determinará se o vídeo interno ou a porta serial deve se tornar o console examinando o estado de `-h`. Isto significa que se `-D` for especificado mas `-h` não estiver especificado no `/boot.config`, a porta serial pode ser usada como console somente durante o bloco de inicialização, pois o gerenciador de inicialização usará a exibição de vídeo interna como o console.

6. Inicialize a máquina.

   Quando o FreeBSD inicia, os blocos de inicialização mostram o conteúdo do `/boot.config` para o console. Por exemplo:

       /boot.config: -P
       Keyboard: no

   A segunda linha aparece somente se `-P` aparecer no `/boot.config` e indica a presença ou ausência do teclado. Estas mensagens vão para o console serial ou interno, ou ambos, dependendo da opção em `/boot.config`:

   Opções | Mensagem vai para
   --- | ---
   nenhum | console interno
   `-h` | console serial
   `-D` | consoles seriais e internos
   `-Dh` | consoles seriais e internos
   `-P`, teclado presente | console interno
   `-P`, teclado ausente | console serial

   Após a mensagem, haverá uma pequena pausa antes que os blocos de inicialização continuem carregando o carregador de boot e antes que qualquer outra mensagem seja impressa no console. Em circunstâncias normais, não há necessidade de interromper os blocos de inicialização, mas pode-se fazê-lo para garantir que as coisas sejam configuradas corretamente.

   Pressione qualquer tecla, exceto Enter, no console para interromper o processo de inicialização. Os blocos de inicialização então solicitarão mais ações:

       >> FreeBSD/i386 BOOT
       Default: 0:ad(0,a)/boot/loader
       boot:

   Verifique se a mensagem acima aparece no console serial ou interno, ou em`/boot.config`. Se a mensagem aparecer no console correto, pressione Enter para continuar o processo de inicialização.

   Se não houver nenhum prompt no terminal serial, algo está errado com as configurações. Digite `-h` e depois Enter ou Return para informar o bloco de inicialização (e depois o carregador de inicialização e o kernel) para escolher a porta serial para o console. Quando o sistema estiver ativo, volte e verifique o que deu errado.

Durante o terceiro estágio do processo de inicialização, ainda é possível alternar entre o console interno e o console serial definindo as variáveis ​​de ambiente apropriadas no carregador de inicialização. Veja loader(8) para obter maiores informações.

### Nota:

Esta linha no `/boot/loader.conf` ou `/boot/loader.conf.local` configura o carregador de inicialização e o kernel para enviar suas mensagens de inicialização para o console serial, independentemente das opções no `/boot.config`:

    console="comconsole"

Esta linha deve ser a primeira linha do `/boot/loader.conf` para que as mensagens de boot sejam exibidas no console serial o mais cedo possível.

Se essa linha não existir, ou se estiver definida como `console="vidconsole"`, o carregador de inicialização e o kernel usarão qualquer console indicado por `-h` no bloco de inicialização. Veja loader.conf(5 ) para maiores informações.

No momento, o carregador de boot não tem nenhuma opção equivalente a `-P` no bloco de inicialização, e não há provisão para selecionar automaticamente o console interno e o console serial com base na presença do teclado.

### Dica:

Embora não seja obrigatório, é possível fornecer um prompt `login` na linha serial. Para configurar isto, edite a entrada para a porta serial em `/etc/ttys` usando as instruções em Seção 26.3.1, “Configuração do Terminal”. Se a velocidade da porta serial tiver sido alterada, altere `std.9600` para corresponder à nova configuração.

### 26.6.3. Defina uma velocidade de porta serial mais rápida

Por padrão, as configurações da porta serial são 9600 baud, 8 bits, sem paridade e 1 bit de parada. Para alterar a velocidade do console padrão, use uma das seguintes opções:

- Edite o `/etc/make.conf` e configure o `BOOT_COMCONSOLE_SPEED` para a nova velocidade do console. Em seguida, recompile e instale os blocos de inicialização e o carregador de boot:

      # cd /sys/boot
      # make clean
      # make
      # make install

  Se o console serial estiver configurado de alguma outra maneira que não seja inicializando com `-h`, ou se o console serial usado pelo kernel for diferente daquele usado pelos blocos de inicialização, adicione a seguinte opção, com a velocidade desejada, em um arquivo de configuração de kernel personalizado e compile um novo kernel:

      options CONSPEED=19200

- Acrescente a opção de inicialização `-S`19200`` ao `/boot.config`, substituindo `19200` pela velocidade a ser utilizada.

- Adicione as seguintes opções ao `/boot/loader.conf`. Substitua `115200` pela velocidade de uso.

      boot_multicons="YES"
      boot_serial="YES"
      comconsole_speed="115200"
      console="comconsole,vidconsole"

### 26.6.4. Entrando no Depurador DDB da Linha Serial

Para configurar a capacidade de inserir o depurador de kernel no console serial, inclua as seguintes opções em um arquivo de configuração de kernel personalizado e compile o kernel usando as instruções em Capítulo 8, Configurando o kernel do FreeBSD. Observe que, embora isso seja útil para diagnósticos remotos, também é perigoso se um BREAK espúrio for gerado na porta serial. Consulte ddb(4) e ddb(8) para mais informações sobre o depurador do kernel.

    options BREAK_TO_DEBUGGER
    options DDB

Anterior | Acima | Próxima
26.5. Serviço de Dial-in | Principal | Capítulo 27. PPP

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