通过串口获取两个Linux(虚拟)盒子

时间:2008-09-16 05:59:16

标签: linux serial-port virtualization kvm qemu

设置一个Linux机箱以在其串行端口上侦听传入连接的最佳方法是什么?我已经做了很多谷歌搜索,但我找不到合适的命令组合来实际让他们说话!

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

3 个答案:

答案 0 :(得分:5)

Linux Serial HOWTO有很多关于串行通信的详细信息。如果您希望能够使用串行端口登录虚拟化系统,就像您在控制台一样,那么您正在寻找更具体的Linux Remote Serial Console HOWTO。正如Hein所说,你需要一个零调制解调器电缆,需要在远程终端上运行minicom。

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

假设您在/ 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;

显然,如果你想让它自动启动,并在出错时重新生成,还有更多工作要做,等等。但基本思路是从串口读取文件。