代码之家  ›  专栏  ›  技术社区  ›  Andrew Cholakian

让两个Linux(虚拟)设备通过串行端口进行对话

  •  4
  • Andrew Cholakian  · 技术社区  · 16 年前

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

    我的主要目标是为运行kvm/qemu-vms的实例提供一个串行接口。它们目前只有一个VNC接口(它们在无头服务器上,不是X)。我可以让虚拟机通过用-serial文件:标志启动来创建一个串行设备,但是如何与它对话是一个完全不同的问题。两个盒子都在运行Ubuntu 8.04。

    3 回复  |  直到 11 年前
        1
  •  5
  •   Commodore Jaeger    16 年前

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

    Linux控制台有两种使用方式,每种方式都必须单独配置以供串行使用。您可以将内核配置为通过串行端口复制其消息,这对于监视系统引导有时是很有趣的,而且在进行内核调试时几乎是必不可少的。(这需要内核支持并更新引导参数,以便内核知道您需要串行输出;请参阅 chapter 5 第二种方法。)您可能更感兴趣的是通过串行端口登录,这需要在引导后在串行端口上运行getty(就像您的系统在引导后已经在虚拟终端上运行getty一样),这在 chapter 6 霍托的

        2
  •  0
  •   quoo    16 年前

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

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

        3
  •  0
  •   catfood    16 年前

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

    壳中

    chown *youruser* /dev/tty1
    

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

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

    很明显,如果您希望它自动启动,并在出错时重新显示,还有更多的事情要做,等等。但基本思想是像文件一样从串行端口读取数据。