【问题标题】:Get two Linux (virtual) boxes talking over a serial port让两个 Linux(虚拟)机器通过串行端口进行通信
【发布时间】:2023-03-05 15:23:01
【问题描述】:

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

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

【问题讨论】:

    标签: linux serial-port virtualization kvm qemu


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • Hein,谢谢你的回答,但你有点不明确吗?是否必须运行特定的守护进程才能使 minicom 连接到?还是两端都是minicom?
      【解决方案3】:

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

      如果您希望它自动启动并在错误时重生等等,显然还有更多工作要做。但基本思路是像文件一样从串口读取。

      【讨论】:

        猜你喜欢
        • 2016-10-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-11-02
        • 2011-04-21
        • 2010-09-08
        相关资源
        最近更新 更多