Qemu - 호스트에서 게스트 시스템으로 tty 장치 전달

Qemu - 호스트에서 게스트 시스템으로 tty 장치 전달

내 목표는 Qemu의 호스트에서 게스트로 tty 장치를 전달하는 것입니다.

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.

"루트"가 아닌 다른 사용자로 실행하는 경우 장치의 권한을 조정해야 할 수도 있습니다. 제 경우에는 어댑터, 컨트롤러를 위한 특수 그룹을 만들고 이에 따라 권한을 조정했습니다 chmod g+rw /dev/ttyACM0.

관련 정보