グラフィックには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人のユーザーの接続のみを許可します。これを軽減するには、次のようにします。

  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"

関連情報