获取两个通过串行端口交谈的Linux(虚拟)盒

问题描述:

设置一个Linux盒以侦听其串行端口以接收传入连接的最佳方式是什么?我做了很多谷歌搜索,但是我找不到合适的命令组合来让他们说话!获取两个通过串行端口交谈的Linux(虚拟)盒

我的主要目标是提供一个串行接口来运行kvm/qemu虚拟机的实例。他们目前只有一个VNC接口(他们在无头服务器上,没有X)。我可以通过使用-serial file:标志启动它来创建一个串行设备,但如何与它交谈,是另一个问题。两个盒子都运行Ubuntu 8.04。

Linux Serial HOWTO一般有很多关于串行通信的详细信息。更具体的Linux Remote Serial Console HOWTO是您真正想要的,如果您希望能够像使用控制台一样使用串行端口登录到虚拟化系统。正如Hein所指出的那样,您需要一条零调制解调器电缆,并且需要在远程终端上运行minicom。

Linux控制台以两种方式使用,每种方式都必须单独配置以便串行使用。您可以将内核配置为通过串口复制它的消息,这对于观察系统启动有时很有趣,而且如果您正在进行内核调试,这几乎是不可或缺的。 (这需要内核支持并更新引导参数,以便内核知道您需要串行输出;请参阅第二个howto的chapter 5。)您可能更感兴趣通过串行端口登录,这需要在串行端口上运行getty (就像你的系统已经在启动后在虚拟终端上运行getty一样),这在chapter 6的详细说明中有详细描述。

我假设你使用“null调制解调器”电缆连接两个串行端口。

使用像minicom这样的程序与远程系统通话 - 您可能需要设置通信参数,并且可能需要关闭硬件流量控制(如果您的电缆没有连接流量控制线)。

+0

海因,谢谢你的回答,但你有点显灵?有没有一个特定的守护进程,我必须运行minicom连接到?还是两端都是小型的? – 2008-09-16 06:13:53

假设你在/ dev/tty1上执行此操作。

在外壳

chown *youruser* /dev/tty1 

然后在Perl脚本example.pl称为

open PORT, "</dev/tty1" || die "Can't open port: $!"; 
while (defined ($_ = <PORT>)) 
{ 
do_something($_); 
} 
close PORT; 

显然有更多的事情要做,如果你想这个自动启动,并重生错误,等等。但基本的想法是从串口读取文件。