Estou trabalhando em um sistema Linux embarcado (5.19.10) e estou usando o busybox como parte principal do sistema de arquivos.
Agora estou tentando executar um teste que deve gerar logs para a porta serial (ttyS0). Mas eu NÃO configurei console
na linha de comando do kernel.
O /etc/inittab
é o seguinte,
# now run any rc scripts
::sysinit:/etc/init.d/rcS
# Put a getty on the serial port
#::respawn:/sbin/getty -L ttyS1 115200 vt100
#no login
::respawn:-/bin/sh
# Stuff to do for the 3-finger salute
::ctrlaltdel:/sbin/reboot
# Stuff to do before rebooting
null::shutdown:/etc/init.d/rcK
null::shutdown:/bin/umount -a -r
null::shutdown:/sbin/swapoff -a
Eu mudei o /etc/profile
seguinte,
export PATH="/bin:/sbin:/usr/bin:/usr/sbin"
stty -F /dev/ttyS0 speed 38400
setconsole /dev/ttyS0
echo "Hello world" > /dev/ttyS0
/home/test/test_app 2>&1 &
Quando o sistema inicializou, eu pude ver Hello world
na porta serial. Mas não consegui ver o prompt do shell ou os logs do test_app
.
Acho que o console do sistema NÃO está sendo configurado corretamente neste caso. Então, estou pensando se há alguma maneira suave de definir o console do sistema no meu próprio script (por exemplo, /etc/init.d/rcS ou /etc/profile) sem usar getty
ou console=XXX
e fazer a saída do log para o console serial esperado??
Essa é
> /dev/ttyS0
a parte importante aqui. Você instrui explicitamente seu shell a redirecionar a saída do seuecho
comando para a porta serial.Se você quiser que seu test_app faça o mesmo, você
test_app > /dev/ttyS0
também terá quesetconsole
fazer algo diferente!