Qemu - 将 tty 设备从主机传递到访客计算机

Qemu - 将 tty 设备从主机传递到访客计算机

我的目标是将 tty 设备从 Qemu 中的主机传递给来宾。

我正在尝试使用插入 USB-CDC 设备的 Qemu 模拟 ARM64 Linux 设备。到目前为止,我已经通过 UDP 将模拟数据传递到主机上的 pts 设备来模拟所述 USB-CDC 设备,如下所示:

sudo socat -d -d UDP-L:14550 pty,link=/dev/ttyFAKEACM0,raw,echo=0

我可以在主机上使用 minicom 读取 ttyACM0,并得到我期望的数据。

我想将主机上的 /dev/ttyFAKEACM0 传递给来宾 Qemu,并让它在来宾上显示为 tty。我尝试像这样使用 -chardev :

  qemu-system-aarch64 \
  -m 4G \
  -smp 4 \
  -cpu cortex-a57 \
  -M virt -nographic \
  -kernel ${IMGDIR}/Image \
  -initrd ${IMGDIR}/uInitrd-5.7.0 \
  -append "root=/dev/vda1 serial=tty0 ubootpart=00000000-01 console=ttyAMA0,115200n8 rootwait init=/sbin/init rw earlyprintk rootfstype=ext4" \
  -drive if=none,id=mmc0,file=${IMGDIR}/edge-rootfs.img,index=1,format=raw \
  -device virtio-blk-device,drive=mmc0 \
  -chardev tty,path=/dev/ttyFAKEACM0,id=facm \
  -device pci-serial,chardev=facm 

当我启动 Qemu ttyFAKEACM0 时,在来宾中根本不显示。我是否误解了 chardev 的工作原理?如何将字符设备从主机传递给来宾?

谢谢

答案1

我还尝试通过 TTY 设备从主机传递到访客。就我而言,它是一个 USB 适配器、控制器。

我使用 Qemu 取得了成功USB仿真

-chardev serial,path=/dev/ttyACM0,id=acm \
-usb -device usb-serial,chardev=acm

USB 被访客捕获为ttyUSB0.

如果以“root”以外的任何其他用户身份运行,那么您可能需要调整设备的权限。就我而言,我为适配器、控制器创建了一个特殊组,并相应地调整了权限;chmod g+rw /dev/ttyACM0

相关内容