Mensagens de erro do Serial Getty

0

Eu tenho um servidor em nuvem, com distribuição do CentOS, e uma instância do Apache para gerenciar alguns aplicativos da web, como o Wordpress ou o PrestaShop.

Percebi que um erro é relatado em arquivos de log (var / log /). Em particular, em "mensagens":

May 30 11:54:41 xxx00962 systemd: Starting Serial Getty on ttyS0...

May 30 11:54:41 xxx00962 systemd: Started Serial Getty on ttyS0.

May 30 11:54:51 xxx00962 systemd: [email protected] holdoff time over, scheduling restart.

May 30 11:54:51 xxx00962 systemd: Stopping Serial Getty on ttyS0...

em "seguro":

May 30 15:51:30 xxx00962 agetty[24693]: /dev/ttyS0: not a character device

em que xxx00962 é o nome do host.

Eu não sei o que é getty, mas gostaria de resolver o problema. Alguém pode me ajudar e explicar como o getty funciona?

Obrigado.

    
por Round Robin 31.05.2018 / 11:09

2 respostas

2

getty é um dos programas Unix mais antigos. Você está usando um programa de trabalho escrito por Wietse Venema, agetty , que foi escrito quando getty tinha cerca de vinte anos de idade.

Este programa está sendo executado porque seu sistema acha que você tem um terminal conectado a um dispositivo serial, com o nome de arquivo do dispositivo de caractere /dev/ttyS0 . Quando o sistema foi inicializado, um programa chamado systemd-getty-generator viu ttyS0 in /sys/class/tty/console/active , porque ele está listado após um console= na linha de comando do kernel. O gerador causou o instanciamento da unidade de serviço [email protected] template como [email protected] ; e este é o serviço cuja ativação está sendo registrada.

O serviço fornece o login do terminal por meio desse dispositivo.

Por algum motivo (supondo que você tenha uma versão do systemd de 2014 ou posterior), seu sistema é inconsistente e agora acredita que /dev/ttyS0 não é arquivo de dispositivo de caractere, e muito menos um dispositivo de caractere que é um terminal. systemd-getty-generator achou que estava no bootstrap. Existem pelo menos duas maneiras pelas quais isso poderia ter mudado. O que, se qualquer um deles ocorreu, não pode ser determinado a partir da sua pergunta.

Corrigir /dev/ttyS0 .

  • Se é suposto ser um dispositivo de caracteres, mas não é, então descubra o que está mudando em tempo de execução.
  • Se não for um dispositivo de caracteres, descubra por que ele era um dispositivo de terminal no bootstrap quando systemd-getty-generator o verificou. Também pare de dizer ao kernel em sua linha de comando que é o console. Se não é suposto ser um dispositivo de caracteres, porque você não tem uma porta serial (com terminal conectado ou sem), então dizer ao kernel que uma porta serial inexistente é o console está simplesmente errado.
  • Se é suposto ser um dispositivo de caractere que é um terminal, mas você não quer poder efetuar logon a partir desse terminal, pare de dizer ao kernel em sua linha de comando que é o console.
  • Se é suposto ser um dispositivo de caractere que é um terminal, mas você quer que ele seja o console do kernel, mas ainda não quer ser capaz de fazer logon a partir desse terminal (ou de fato outros consoles que não sejam do terminal virtual), desative systemd-getty-generator porque sua funcionalidade principal não é o que você deseja.

Leitura adicional

por 31.05.2018 / 13:38
0

Em qualquer sistema Unix, getty é o nome tradicional de um processo que apresenta um prompt de login em uma conexão de porta serial (um terminal com fio ou uma linha de modem) e aguarda o usuário efetuar login.

Em um sistema moderno (físico), getty processos são normalmente encontrados fornecendo o prompt de login no (s) console (s) virtuais do modo de texto. Se o sistema tiver hardware de acesso remoto ao console (como o HP iLO, Sun / Oracle ILOM, Fujitsu IRMC ou Oracle iDRAC), eles geralmente fornecem portas seriais virtuais acessíveis estabelecendo uma conexão SSH por meio da interface do console remoto, se o administrador do sistema apenas configura um processo getty para a porta serial correspondente.

Isso geralmente é muito mais confiável do que usar uma interface de console remota baseada na Web que usa Java ou HTML5: como uma porta serial virtual não precisa emular um teclado de PC, não é necessário mapear de volta os caracteres de entrada scancodes de teclado e espero que o layout do teclado realmente configurado no sistema operacional do servidor corresponda ao que foi usado para a operação de mapeamento reverso. E no lado da saída, ele não precisa tentar raspar a RAM de vídeo para uma imagem exibível.

Em máquinas virtuais, as portas seriais virtuais podem ser usadas da mesma maneira, pelo mesmo motivo: uma conexão de porta serial virtual precisa de menos transformações nos dados do que um "KVM virtual".

No seu caso específico, o sistema operacional da máquina virtual em nuvem está aparentemente configurado para esperar uma porta serial virtual como /dev/ttyS0 , mas parece que a porta serial virtual não existe na VM agora. Talvez tenha sido usado no processo de inicialização da VM pela infraestrutura de nuvem?

Você provavelmente pode desligar o processo getty em /dev/ttyS0 , pois não parece estar fazendo nada útil no momento. Para fazer isso, esses comandos podem ser a solução mais simples:

systemctl stop [email protected]
systemctl disable [email protected]

O primeiro comando diz ao systemd para parar de tentar iniciar o processo até a próxima reinicialização, o segundo comando irá marcá-lo como desativado.

Até que você use o segundo comando, o primeiro comando pode ser desfeito simplesmente reiniciando o sistema. Então, se você está incerto, você pode simplesmente usar o primeiro comando e esperar alguns dias para ver se ele causa algum problema. Se você achar que sua VM está agora inacessível, uma reinicialização simples retornaria as coisas ao que costumava ser.

Como na resposta do JdeBP , você também deve verificar suas opções de inicialização: se console=ttyS0 estiver listado lá systemd gerará automaticamente um processo getty em /dev/ttyS0 .

    
por 31.05.2018 / 13:52

Tags