客户操作系统上的 QEMU 和串行端口

客户操作系统上的 QEMU 和串行端口

是否有人成功地在 QEMU/KVM 中运行客户操作系统,其中客户操作系统可以完全访问主机串行端口,无论是 /dev/ttyS0、COM1 还是主机提供的虚拟串行端口。

似乎 -chardev、-serial 等文档有点令人困惑(至少对我来说)。我印象中,客户操作系统能够看到/使用串行端口,只要在启动客户机时传递了正确的参数。但许多人说“不,串行端口仅用于 QEMU/KVM 中客户操作系统和主机之间的控制台重定向”……这没有道理,因为 QEMU/KVM 似乎是运行需要与 RS232 设备等通信的旧东西的好方法。

此外,如果主机上没有物理串行端口,如何“创建一个”?目前,我正在使用 NetSerial,它实际上创建了一个“COM 端口”(带有一个“调制解调器”)。但 QEMU 似乎也不太喜欢这种构造。

答案1

首先需要为主机串行端口定义一个 chardev 并为其附加一个名称(id 参数),如下所示:

-chardev tty,path=/dev/ttyUSB0,id=hostusbserial

接下来,您必须向虚拟机添加一些串行设备并将其链接到您刚刚创建的 chardev:

-device pci-serial,chardev=hostusbserial

完成。必须在客户机中配置线路速度等,qemu 将获取这些设置并将其应用到主机串行端口。

命令-serial开关是一种方便的快捷方式,它将创建一个 chardev 并将其链接到默认串行端口(在 x86 上是通常的 ioport 0x3f8 上的 isa-serial 设备,在其他架构上则是其他设备)。

相关内容