我正在尝试配置从我的 libvirt 主机到其一个客户机的串行访问。
我已经在客户机上配置了该设备并启动了它:
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
在主机上,我尝试连接 virsh:
jsharpe@twoface:~ $ virsh console sel-app1
Connected to domain sel-app1
Escape character is ^]
... 此时,主机就挂了。我可以用 ^] 将其杀死,但其他按键不会显示在终端中。
现在,回到客人,让我们重新启动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
太好了,回馈楼主:
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:
登录提示?所以我必须重启 ttyS0后尝试连接了吗?什么鬼?请注意,这不是超时问题。主机/控制台命令将无限期挂起。直到重新启动 ttyS0 后,连接才会发生。
答案1
如果我没记错的话,串行端口没有标准的方法来检测另一端是否有终端连接——或者如果有,大多数虚拟串行控制台根本不会费心实现它们。因此代理ttyS0 的实例在客户机启动时启动,登录横幅只是发送到无处(发送到断开连接的端口)。当您最终连接时,代理不知道这一点;它只是停留在登录提示符处。您可以尝试盲目输入用户名,它就会被发送。
按下某个键(例如 )Enter将导致代理重新显示登录横幅。