O sistema falha ao inicializar ao fornecer o parâmetro de inicialização 'console' para ativar o acesso serial

1

O que eu quero realizar

Eu gostaria de ter acesso terminal remoto ao meu NAS (que executa o Debian Stretch) através de um adaptador USB-RS232. Como esta máquina é supostamente sem cabeça, eu 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

Eu adicionei console=ttyUSB0 à lista de argumentos do kernel. Ao inicializar, isso faz com que meu sistema congele.

As últimas linhas de saída de inicialização são: (O bootloader é extlinux)

Loading /vmlinuz... ok
Loading /initrd.img...ok
Probing EDD (edd=off to disable)... ok

Quando não estiver usando o parâmetro do kernel, a máquina está inicializando sem problemas. A partir daí, eu poderia realizar facilmente o acesso ao terminal serial rodando

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 da Braswell e executa um kernel Linux 4.9.0-4-amd64 debian .

Minha pergunta

Quais ações eu tenho que tomar para que funcione?

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 me conectar à porta serial. Além disso, systemctl status [email protected] diz que o serviço é loaded e inactive (dead) . Eu teria esperado que ele estivesse em funcionamento na época.

Editar № 2

Eu fiz um pouco de pesquisa e descobri que meu initramfs não tinha os módulos do kernel relevantes. Eu consegui entrar no shell initramfs fornecendo break=init como parâmetro do kernel e vi que não havia nenhum dispositivo /dev/ttyUSB0 .

Eu adicionei cp210x , pl2303 e ftdi_sio a /etc/initramfs-tools/modules e, depois de recriar o initramfs, vi que agora há um dispositivo /dev/ttyUSB0 no shell initramfs.

Ainda assim, não consegui me conectar da minha outra máquina. Então eu tentei iniciar o getty no 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 é aí que eu estou agora.

    
por Multisync 19.02.2018 / 22:19

1 resposta

3

Seu sistema não está congelando. Você acabou de direcionar ALL a sua saída para o console serial.

Passando argumentos do console para o kernel, você precisa incluir tanto o console local quanto a interface serial.

Veja TLDP - Remote Serial Console HOWTO - Capítulo 5. Configurar o kernel do Linux

Figure 5-2. Recommended kernel parameters, PCs with video card

console=tty0 console=ttyS0,9600n8

Kernel messages will appear on both the first virtual terminal and the serial port. Messages from the init system and the system logger will appear only on the first serial port. This can be slightly confusing when looking at the attached monitor: the machine will appear to boot and then hang. Don't panic, the init system has started but is now printing messages to the serial port but is printing nothing to the screen. If a getty has been configured then a login: prompt will eventually appear on the attached monitor.

For PCs without a video card, this HOWTO suggests the kernel parameters:

Figure 5-3. Recommended kernel parameters, PCs without video card

console=ttyS0,9600n8

These parameters are passed to the booting kernel by the boot loader. Next we will configure the boot loader used by your Linux installation to pass the console parameters to the kernel.

    
por 19.02.2018 / 22:37