使用串口让两个Linux虚拟机进行通信

4
什么是在Linux上设置串口监听传入连接的最佳方法?我做了很多谷歌搜索,但我找不到正确的命令组合来使它们实际通信!
我的主要目标是为正在运行的kvm/qemu虚拟机提供串行接口。它们目前只有VNC接口(它们在无头服务器上,没有X)。我可以通过使用-serial file:标志启动虚拟机来创建一个串行设备,但如何与其通信,则是另一个问题。这两个盒子都运行Ubuntu 8.04。
3个回答

5
Linux串口HOWTO提供了关于串口通信的详细信息。如果您想通过串口登录虚拟系统,那么更具体的Linux远程串口控制台HOWTO是您真正需要的。如Hein所指出的那样,您需要一个空模拟电缆,并在远程终端上运行minicom。

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


1
假设你正在 /dev/tty1 上进行操作。
在 shell 中。
chown *youruser* /dev/tty1

然后在名为example.pl的Perl脚本中

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

显然,如果您希望此操作自动启动并在出现错误时重新启动等等,则还有更多要做。但基本思路是像读取文件一样从串行端口读取。


0
我假设您使用“空模拟”电缆连接了两个串行端口。
使用类似于 minicom 的程序与远程系统通信--您可能需要设置通信参数并可能关闭硬件流控(如果您的电缆没有流控线连接)。

Hein,感谢您的回答,但您能再明确一些吗?我需要运行特定的守护进程才能使minicom连接吗?还是两端都需要运行minicom? - Andrew Cholakian

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接