O que eu quero realizar
Gostaria de ter acesso de terminal remoto ao meu NAS (que executa o Debian Stretch) por meio de um adaptador USB-RS232. Como esta máquina deve ser sem cabeça, também gostaria de ver o processo de inicialização na linha serial.
(Ainda assim, para avaliar esse problema, há uma tela conectada na porta HDMI no momento.)
As ações que tomei
Acrescentei console=ttyUSB0
à lista de argumentos do kernel. Ao inicializar, isso faz com que meu sistema congele.
As últimas linhas da saída de boot são: (Bootloader é extlinux)
Loading /vmlinuz... ok
Loading /initrd.img...ok
Probing EDD (edd=off to disable)... ok
Ao não usar o referido parâmetro do kernel, a máquina está inicializando sem problemas. A partir daí, eu poderia realizar o acesso ao terminal serial facilmente executando
systemctl enable [email protected]
systemctl start [email protected]
no servidor remoto e
screen -F /dev/ttyUSB0 9600
na minha máquina local. Portanto, os adaptadores USB-RS232 estão funcionando corretamente. O servidor é um Intel NUC 5CPYH com chipset Braswell e roda um Linux 4.9.0-4-amd64
kernel debian.
Minha pergunta
Quais ações devo tomar para fazê-lo funcionar?
Editar № 1
Ao fornecer console=tty0 console=ttyUSB0,9600n8
como parâmetros de inicialização, a máquina inicializa bem, mas ainda não consigo conectar à porta serial. Além disso, systemctl status [email protected]
diz que o serviço é loaded
e inactive (dead)
. Eu esperava que estivesse instalado e funcionando então.
Editar № 2
Eu fiz um pouco de pesquisa e descobri que meu initramfs estava sem os módulos relevantes do kernel. Consegui entrar no shell initramfs fornecendo break=init
como parâmetro do kernel e vi que não havia /dev/ttyUSB0
dispositivo.
Eu adicionei cp210x
, pl2303
e depois ftdi_sio
de /etc/initramfs-tools/modules
recriar o initramfs, vi que agora existe um /dev/ttyUSB0
dispositivo no shell initramfs.
Ainda assim, não consegui me conectar da minha outra máquina. Então, tentei iniciar o getty nesse dispositivo manualmente:
# /sbin/getty -L 9600 /dev/ttyUSB0 vt100
getty: setsid: Operation not permitted
# su root -c "/sbin/getty -L 9600 /dev/ttyUSB0 vt100"
sh: su: not found
Então é onde estou agora.
Seu sistema não está congelando. Você acabou de direcionar TODA a sua saída para o console serial.
Passando os argumentos do console para o kernel, você precisa incluir o console local e a interface serial.
Veja TLDP - Remote Serial Console HOWTO - Capítulo 5. Configure o kernel do Linux
Atualmente, o Debian não constrói seu kernel Linux com
CONFIG_USB_SERIAL_CONSOLE=y
, que é necessário para que esse recurso funcione.O relatório de bug correspondente é https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=868352
Depois de construir meu próprio kernel com
CONFIG_USB_SERIAL_CONSOLE=y
(veja https://kernel-team.pages.debian.net/kernel-handbook/ch-common-tasks.html#s-common-official ), também tive que incluir o driver serial FTDI para o meu adaptador no initrd:Por fim, ajustei
/etc/default/grub
para ler:… e correu
update-grub
.Depois disso, vejo com êxito as mensagens de inicialização e posso fazer login por meio do serviço serial-getty@ttyUSB0 iniciado automaticamente.