audiodev를 가상 머신에 전달하고 싶지만 libvirt가 이 오류와 함께 종료됩니다.
error: internal error: process exited while connecting to monitor: 2024-03-17T23:29:37.725695Z qemu-system-x86_64: XDG_RUNTIME_DIR not set
이것은 vm에 대한 라인입니다.
<qemu:arg value="-device"/>
<qemu:arg value="usb-audio,audiodev=my_audiodev"/>
<qemu:arg value="-audiodev"/>
<qemu:arg value="pa,id=my_audiodev"/>
XML에 사운드 카드를 직접 삽입하는 것이 가능하다는 것을 알고 있지만 왜 이 오류가 발생하는지 알고 싶고 "virtio-sound"도 시도해보고 싶습니다.
<qemu:arg value="-device"/>
<qemu:arg value="virtio-sound,audiodev=my_audiodev"/>
<qemu:arg value="-audiodev"/>
<qemu:arg value="pa,id=my_audiodev"/>
물론 이 줄이 없으면 가상 머신이 실행됩니다.
qemu 버전은 8.2.2, libvirt 버전은 10.0.0, 시스템은 Slackware 15입니다.
pulseaudio를 사용하는 qemu에서 오류가 발생합니다.
qemu-system-x86_64 -audiodev pa,id=hda,out.mixing-engine=off -audiodev pa,id=usb,out.mixing-engine=off
qemu-system-x86_64: XDG_RUNTIME_DIR not set
xdg-runtime-dir을 설정해 보세요..
export XDG_RUNTIME_DIR=$TMPDIR
qemu-system-x86_64 -device usb-audio -audiodev alsa,id=hda,out.mixing-engine=off -audiodev pa,id=usb,out.mixing-engine=off
qemu-system-x86_64: could not stat pidfile /pulse/pid: No such file or directory
답변1
솔루션을 찾았으며 qemu와 작동합니다.
XDG_RUNTIME_DIR 사용
mkdir /tmp/pulse
XDG_RUNTIME_DIR=/tmp/pulse pulseaudio -D
qemu-system-x86_64 -device usb-audio -audiodev pa,id=hda,out.mixing-engine=off -audiodev pa,id=usb,out.mixing-engine=off
XDG_RUNTIME_DIR 없음
qemu-system-x86_64 -device usb-audio -audiodev pa,id=hda,out.mixing-engine=off -audiodev pa,id=usb,server=unix:/tmp/pulse-socket
libvirt에 대한 또 다른 질문(xdg_runtime_dir 사용)은 다른 사용자(qemu)에서 실행되므로 qemu 사용자와 사운드를 공유하는 방법을 찾아야 합니다.
error: internal error: process exited while connecting to monitor: 2024-03-17T23:56:30.886989Z qemu-system-x86_64: could not stat pidfile /tmp/pulse/pulse/pid: Permission denied
libvirt에 대한 솔루션도 찾았습니다(이 경우 xdg_runtime은 쓸모가 없습니다).
<qemu:arg value="-device"/>
<qemu:arg value="usb-audio,audiodev=my_audiodev"/>
<qemu:arg value="-audiodev"/>
<qemu:arg value="pa,id=my_audiodev,server=unix:/tmp/pulse-socket"/>
default_pa에서
정력 $HOME/.config/pulse/default_pa
load-module module-native-protocol-unix auth-anonymous=1 socket=/tmp/pulse-socket
load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1;192.168.0.2;192.168.0.10
이 구성을 사용하면 다른 사용자가 IP 기반 ACL을 사용하여 인증 없이 귀하의 음성을 사용하고 들을 수 있습니다(100% 안전하지는 않지만 가정용으로는 괜찮습니다).