QEMU chardev pty 的用例是什么

QEMU chardev pty 的用例是什么

我是 QEMU 的新手,正在尝试使用它chardev。我遇到了名为 的选项-chardev pty,id=id。因此,我尝试使用 创建 VM-chardev pty,id=pty0并收到消息。

char device redirected to /dev/pts/9 (label pty0)

因此我尝试向它发送一些数据:

root@super-pc:~# cat /dev/pts/9

并没有看到任何输出。

这个 chardev 的用例是什么?

答案1

这是一个老问题,但对于那些通过谷歌找到方法的人来说:

单独设置 chardev 并不是特别有用,但如果将它与串行设备关联起来……

-chardev pty,id=char0 -serial chardev=char0

...那么您已经设置了一个虚拟串行端口,将虚拟机中的串行设备连接到主机上相应的 pty 设备。

例如,如果我像这样启动 Linux 虚拟机:

qemu-system-x86_64 -enable-kvm -smp 1 -m 1024 \
  -drive if=virtio,format=qcow2,file=fedora.cow \
  -netdev user,id=net0 \
  -device virtio-net-pci,netdev=net0 \
  -serial mon:stdio \
  -chardev pty,id=char0 \
  -serial chardev:char0

然后在虚拟机内部,/dev/ttyS0是串行控制台,并/dev/ttyS1连接到-chardev pty选项创建的 PTY 设备。假设在启动虚拟机时我看到:

char device redirected to /dev/pts/9 (label char0)

然后在主机上我可以将串行通信程序连接到/dev/pts/9

$ picocom /dev/pts/9

在虚拟机中,如果我运行:

echo hello world > /dev/ttyS1

我将在输出中picocom

hello world

/dev/ttyS1如果我在虚拟机内部启动一个 shell :

bash < /dev/ttyS1 > /dev/ttyS1 2> /dev/ttyS1

然后我就可以/dev/pts/9通过主机与该 shell 进行交互。

相关内容