O que eu quero fazer é conectar meu PC ao meu terminal um DEC vt320 e poder enviar o console Linux para ele e poder digitar comandos no terminal e enviar uma resposta na tela. Eu queria me conectar a coisas via telnet, mas não sei como fazer isso através de serial. minha conexão serial é /dev/ttyS0
Responder1
Parece que o Mint 19.3 usa systemd
, então, a menos que o Mint tenha modificado a systemd
configuração das distribuições pai (Ubuntu e, finalmente, Debian), os comandos a seguir devem fazer o trabalho.
Para iniciar imediatamente uma porta serial para acesso de login estilo terminal:
sudo systemctl start serial-getty@ttyS0
Para fazer com que a configuração persista durante as reinicializações:
sudo systemctl enable serial-getty@ttyS0
Após executar o primeiro desses comandos, um prompt de login deverá aparecer no terminal. Caso contrário, pressione Enter no terminal uma ou duas vezes: isso pode ajudar a detectar a velocidade de transferência de dados em que o terminal está operando.
(A velocidade da porta serial também é conhecida comotaxa de transmissão, embora esse termo se aplique adequadamente apenas a conexões de modem e similares onde a modulação digital para analógica está envolvida, e não à simples transferência de dados digitais.)
Esta systemd
configuração padrão para terminais conectados em série inclui detecção automática de velocidade da porta serial para velocidades de 115.200, 38.400 e 9.600 bits por segundo. Você pode confirmar isso com o comando systemctl cat serial-getty@ttyS0
. Ele gerará o arquivo de unidade gerado automaticamente para essa porta serial. Entre outras coisas, deve conter esta linha que inicia o próprio processo que irá gerenciar o terminal:
ExecStart=-/sbin/agetty -o '-p -- \\u' --keep-baud 115200,38400,9600 %I $TERM
Se a detecção automática da velocidade da porta serial não funcionar bem para você ou se você quiser especificar um valor de velocidade que não esteja incluído na lista padrão, você deverá criar umsubstituir arquivopara este serviço systemd:
sudo systemctl edit [email protected]
Este comando criará o arquivo (se necessário) e o abrirá em um editor para você.
Por exemplo, para bloquear a detecção de velocidade da porta serial para 57.600 bps, você escreveria as três linhas a seguir no arquivo de substituição:
[Service]
ExecStart=
ExecStart=-/sbin/agetty -o '-p -- \\u' 57600 %I $TERM
A primeira linha especifica que queremos substituir coisas na [Service]
seção do arquivo de serviço gerado automaticamente, a segunda especifica que queremos substituir sua ExecStart
linha e não apenas adicionar outra, e a terceira linha é a nova ExecStart
linha com a velocidade de porta desejada e /ou outras opções para o agetty
processo que gerencia o terminal.
O nome tradicional para tal processo no mundo Unix é getty
, e o Linux normalmente usa uma versão aprimorada (aAlternativa/autobauding) versão para portas seriais: agetty
.
Responder2
A resposta mais simples é simplesmente iniciar um serviço de login de terminal no dispositivo serial, como na resposta da telcoM. Isso não muda oConsola Linux. Mover o console Linux para o dispositivo serial é mais simples de executar, mas tem mais efeitos colaterais.
Basta ter console=ttyS0
na linha de comando do kernel, conforme fornecido por um carregador de bootstrap (provavelmente GRUB no seu caso).
O gerador fornecido pelo systemd verá isso e ativará automaticamente um serial-getty@ttyS0
serviço. Mas, além disso, todos os reaisconsolea saída, do kernel e dos programas gravados em /dev/console
, irá agora para o seu DEC VT320.
Infelizmente, um VT320não suportacor. (Um VT340 faz isso, e apenas 16 deles.)
Isso é uma pena porque muitos programas apenas conectam sequências de controle de cores ECMA-48 hoje em dia, incluindo aqueles que emitem mensagens para arquivos /dev/console
. Todos os programas que vêm no pacote systemd fazem isso, desde que o ambientedo processo #1, que eles vão e leem,nãocontém TERM=dumb
. Outros programas tomam decisões diferentes, muitas vezes baseadas emseus própriosambientes de processo, e alguns não tomam decisões com base em terminaistipode jeito nenhum, porque o autor nunca pensou que a saída do programa pudesse ser um dispositivo serial com um terminal monocromático real.
Então vocêtambémtemos que garantir que a linha de comando do kernel especifique TERM=dumb
, o que não é uma descrição correta de um VT320 e é lamentavelmente inadequado.
Leitura adicional
- https://unix.stackexchange.com/a/447098/5132
- https://unix.stackexchange.com/a/475043/5132
- Jonathan de Boyne Pollard (2018).Páginas de manual para dispositivos terminais virtuais do kernel Linux. Propostas.
- Jonathan de Boyne Pollard (2018).
linux-console
.guia nosh. Programas. - Jonathan de Boyne Pollard (2018).
linux-vt
.guia nosh. Programas.
- Jonathan de Boyne Pollard (2018).