kvm 声卡的直通 穿透 映射

本文未完成,目前用 spice 和 rdp 调用控制机声卡

kvm下支持声卡作为usb或者pice 直通, 也支持 映射到虚拟机。 usb声卡的直通很简单,不用多说。pice的也简单,但是在面对多个设备同一个组的时候,麻烦一些。另外就是 宿主机映射到虚拟机可以多虚拟机复用的情况。

主要记录这两个过程

  • 声卡所在 分组存在多个设备,直通声卡给虚拟机
  • 宿主机声卡映射给多个,多个虚拟机。

# 基于pcie的声卡直通

我这里整组直通存在问题,所以打算使用映射的反射光

# 声卡映射

soundhw 应该是已经被弃用的参数了,不要使用。 如果要穿映射,先确定 sudo nano /etc/modprobe.d/vfio.conf 里面没有声卡的id

然后确保物理机的声卡 可以驱动起来 这里用了 alsa

qemu-system-x86_64 -audio model=help 可用的模拟设备

Valid sound card names (comma separated):
sb16        Creative Sound Blaster 16
hda         Intel HD Audio
gus         Gravis Ultrasound GF1
es1370      ENSONIQ AudioPCI ES1370
cs4231a     CS4231A
adlib       Yamaha YM3812 (OPL2)
ac97        Intel 82801AA AC97 Audio

qemu-system-x86_64 -audio-help 提示只能用none

Environment variable based configuration deprecated.
Please use the new -audiodev option.

Equivalent -audiodev to your current environment variables:
(Since you didn't specify QEMU_AUDIO_DRV, I'll list all possibilities)
-audiodev id=none,driver=none

还需要一个包 qemu-audio-alsa/qemu-audio-pa sudo pacman -S qemu-audio-alsa

尝试启动一个 空白虚拟机

1
qemu-system-x86_64 -audiodev id=snd0,driver=alsa -device ich9-intel-hda -device hda-output,audiodev=snd0

没有错误提示,巡航时启动一个win 虚拟机 加上上面的参数,注意之前有 ich9-intel-hda 的话记得冲突问题。 经过测试 有声音,但是杂音。完全听不清

尝试使用pulseaudio sudo pacman -S  pulseaudio qemu-audio-pa

执行 pulseaudio 会提示几个目录不存在,他会自动创建,如果没有创建 手动创建,最后还提示 一个 /etc/pulse/default.pa.d 也创建一下sudo mkdir /etc/pulse/default.pa.d 尝试启动一个 空白虚拟机

1
2
pulseaudio & 
qemu-system-x86_64 -audiodev id=snd0,driver=pa -device ich9-intel-hda -device hda-output,audiodev=snd0

依旧是杂音

试着换 ac97 -audiodev id=snd0,driver=pa -device AC97,audiodev=snd0

win10 里面安装ac97 驱动比较麻烦,需要找到 cab包下载解压后,手动从可用驱动列表,然后磁盘安装找到 对应的inf后安装。经过我测试,更换ac97驱动后,第一次有概率生意正常,然后重启后 会再次出现巴拉巴拉的声音,完全听不清。

经过我反复测试。。。。无论是前端用pa 还是alsa 后端 用ac97 hda sb16 usb-audio 最终的结果 都完全一样。。。杂音 听不清 偶尔可以 pa添了麦克风回声模块 也没用。

# kvm 进阶和相关小问题处理

查看这里 https://dev.leiyanhui.com/kvm/all_list/

Licensed under CC BY-NC-SA 4.0
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计