ubuntu o console serial libvirt requer que o ttyS0 reinicie para conectar-se?

3

Estou tentando configurar o acesso serial do meu host libvirt para um de seus convidados.

Configurei o dispositivo no convidado e o iniciei:

jsharpe@sel-app1:~$ cat /etc/init/ttyS0.conf 
# ttyS0 - getty
#
# This service maintains a getty on ttyS0 from the point the system is
# started until it is shut down again.

start on stopped rc or RUNLEVEL=[2345]
stop on runlevel [!2345]

respawn
exec /sbin/getty -8 9600 ttyS0

jsharpe@sel-app1:~$ sudo restart ttyS0
ttyS0 start/running, process 767

jsharpe@sel-app1:~$ ps aux|grep ttyS0
root       767  0.2  0.0   6080   632 ttyS0    Ss+  17:20   0:00 /sbin/getty -8 9600 ttyS0
jsharpe    769  0.0  0.0   7624   904 pts/0    S+   17:20   0:00 grep --color=auto ttyS0

No Host, eu tento me conectar com o virsh:

jsharpe@twoface:~ $ virsh console sel-app1
Connected to domain sel-app1
Escape character is ^]

... neste ponto, o host apenas trava. Eu posso matá-lo com ^], mas outras teclas não aparecem no terminal.

Agora, volte para guest, vamos reiniciar o ttyS0:

jsharpe@sel-app1:~$ sudo restart ttyS0
ttyS0 start/running, process 772
jsharpe@sel-app1:~$ ps aux|grep ttyS0
root       772  1.0  0.0   6076   560 ttyS0    Ss+  17:23   0:00 /sbin/getty -8 9600 ttyS0
jsharpe    774  0.0  0.0   7624   904 pts/0    S+   17:23   0:00 grep --color=auto ttyS0

Ótimo, de volta ao host:

jsharpe@twoface:~ $ virsh console sel-app1
Connected to domain sel-app1
Escape character is ^]

Ubuntu 10.04.3 LTS sel-app1 ttyS0

sel-app1 login: 

Um prompt de login? Então eu tenho que reiniciar o ttyS0 depois de uma conexão ter sido tentada? wtf. Observe que isso não é um problema de tempo limite. O comando do host / console será interrompido indefinidamente. Não é até reiniciar o ttyS0 que a conexão acontece.

    
por jsharpe 20.12.2011 / 18:25

1 resposta

3

Se bem me lembro, as portas seriais não possuem um meio padrão de detectar se existe um terminal conectado ao outro lado - ou, se o fizerem, a maioria dos consoles seriais virtuais simplesmente não se incomodam em implementá-los. Portanto, a instância agetty para ttyS0 é iniciada quando o guest inicializa, e o banner de login é simplesmente enviado para lugar nenhum (para uma porta desconectada). Quando você finalmente se conecta, o agetty não está ciente disso; apenas fica lá em um prompt de login. Você pode tentar digitar seu nome de usuário às cegas e ele será enviado.

Pressionar uma tecla, como Enter , fará com que agetty exiba novamente o banner de login.

    
por 20.12.2011 / 19:08