그래픽에는 Spice, 사운드에는 PulseAudio

그래픽에는 Spice, 사운드에는 PulseAudio

KVM/qemu/libvirt의 가상 머신에서 Spice를 사용할 때 QEMU_AUDIO_DRV는 기본적으로 spice로 설정됩니다.
내 호스트(debian-Stretch)는 좋은 사운드 카드(Xonar DX)와 더 나은 사운드 드라이버(pulseaudio, alsa)를 사용합니다.
가상 머신에서 그래픽 측면에 spice를 사용하고 게스트 OS에 관계없이 사운드 측면에 pulseaudio 또는 alsa를 사용할 수 있습니까?

참고 1: domain.xml에 다음을 추가했습니다.

<qemu:commandline>
  <qemu:env name='QEMU_AUDIO_DRV' value='pa'/>
  <qemu:env name='QEMU_PA_SERVER' value='/run/user/1000/pulse/native'/>
</qemu:commandline>

이제 domain.log에 다음이 표시됩니다.

QEMU_AUDIO_DRV=pa QEMU_PA_SERVER=/run/user/1000/pulse/native

좋습니다. 하지만 domain.xml에 다음 섹션이 있으므로 게스트가 pulseaudio를 사용하는지 모르겠습니다.

<sound model='ich6'>
  <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
</sound>

노트 2: 기타 시도:

<qemu:commandline>
  <qemu:env name='QEMU_AUDIO_DRV' value='alsa'/>
</qemu:commandline>

소리가 나지 않습니다.

답변1

PulseAudio는 일반적으로 한 사용자의 연결만 허용합니다. 이를 완화하려면 다음을 수행하십시오.

  1. 사용자 1000으로 QEMU 실행 -편집하다 /etc/libvirt/qemu.conf추가/변경 user = "<user>"하거나
  2. 펄스오디오 허용익명 연결 허용.

답변2

첫 번째 qemu:commandline클립은 괜찮습니다. 게스트의 음성을 호스트 컴퓨터의 특정 PA 사운드 카드로 보내는 데 잘 사용합니다. 콘솔의 볼륨 제어 대화 상자 항목은 다음과 같습니다. 볼륨 조절 대화 상자 현재 사용자 PA에 연결하려면 아래에 도메인을 생성하기만 하면 됩니다 qemu:///session. 즉, VM 프로세스는 기본적으로 현재 사용자 ID로 실행됩니다. 글로벌 QEMU 또는 PA 구성을 변경할 필요가 없습니다. 헤드리스를 디버깅하려면 다음 명령을 사용하여 PA가 virt-manager에서 연결을 얻는지 확인할 수 있습니다 pacmd list-clients.

index: 137
driver: <protocol-native.c>
owner module: 11
properties:
    application.name = "virt-manager"
    native-protocol.peer = "UNIX socket client"
    native-protocol.version = "34"
    application.process.id = "97515"
    application.process.user = "xyz"
    application.process.host = "xyz"
    application.process.binary = "python3.9"
    application.icon_name = "virt-manager"
    application.language = "en_US.UTF-8"
    window.x11.display = ":0.0"
    application.process.machine_id = "68058b3d029948a1ae03d28f827a6f53"
    application.process.session_id = "c2"

관련 정보