虚拟机 Linux 没声音,绝大多数情况不是 Linux 坏了,而是虚拟声卡没启用、宿主音频服务没桥接、Linux 输出设备选错这三件事中的一件,按“查虚拟硬件→查音频服务→查应用路由”这 3 步走,通常十分钟内能定位。
虚拟机Linux没声音怎么解决?先看清音频链路
虚拟机里的声音不是从虚拟机直接传到音箱,它要经过:
- 宿主机物理声卡
- Hypervisor 虚拟声卡(VMware、VirtualBox、KVM/QEMU)
- Linux 内核 ALSA 驱动
- 用户态声音服务(PulseAudio 或 PipeWire)
- 具体应用(浏览器、播放器、会议软件)
任何一环断了,表现都是“没声音”,据 Linux 内核文档,ALSA 负责内核级音频设备管理,PulseAudio/PipeWire 负责多应用混音和路由,行业共识认为,虚拟化音频问题多数出在用户态路由,而不是内核驱动,业内专家指出,虚拟化音频的延迟和稳定性通常不如物理机直通,排查时先保证“有设备”,再追求“低延迟”。
| 平台 | 虚拟声卡 | 常见问题 | 检查入口 |
|---|---|---|---|
| VMware Workstation | HD Audio / AC97 | 声卡未连接、默认主机声卡未勾选 | 虚拟机设置-声音 |
| VirtualBox | ICH AC97 / Intel HD Audio | 控制器选错、主机驱动未启用 | 设置-音频 |
| KVM/QEMU | ich9/intel-hda | 虚拟机 XML 没声卡 | virt-manager 添加硬件 |
| 云服务器 | 通常无 | 不分配声卡,需远程音频重定向 | 控制台/SPICE/RDP |
第1步:确认虚拟声卡和宿主音频服务
VMware虚拟机Ubuntu没声音怎么办?检查声卡映射
打开 VMware Workstation,关机状态下进入“虚拟机设置”->“声音”。
- 勾选“已连接”和“启动时连接”
- 选择“使用默认主机声卡”
- 声卡类型优先选“HD Audio”,老系统再试“AC97”
开机后,在 Linux 终端执行:
lspci | grep -i audio aplay -l
lspci 没有音频设备,说明虚拟声卡没挂上,回到设置检查。

aplay -l 显示 card 0: ...,说明内核认到了,如果只看到 dummy,继续第 2 步。
VirtualBox安装Linux后音频输出设置:控制器别选错
VirtualBox 里关机,进入“设置”->“音频”。
- 勾选“启用音频”
- 主机音频驱动:Windows 选 WASAPI 或 DirectSound,macOS 选 CoreAudio,Linux 选 PulseAudio/ALSA
- 控制器:现代 Linux 选 Intel HD Audio,老发行版选 ICH AC97
如果选错控制器,Linux 可能只看到 dummy output,改完启动,再跑 aplay -l,VirtualBox Guest Additions 主要影响显示和共享文件夹,音频通常不依赖它,先查虚拟硬件更直接。
KVM/QEMU 和云主机:没有声卡是常态
virt-manager 打开虚拟机详情,添加硬件 -> Sound -> 选 ich9 或 ac97,云服务器 Linux 没有声音正常吗?多数云主机不提供虚拟声卡,音频通过 SPICE、RDP 或网页控制台重定向,本地听歌、开会,不建议走云主机出声。
宿主侧也要检查
宿主机静音、独占模式、默认输出设备选错,都会让虚拟机跟着没声。
- Windows:右键任务栏音量图标 -> 声音设置 -> 确认输出设备正确,关闭“独占模式”
- macOS:系统设置 -> 声音 -> 输出,确认没有选到黑屏显示器
- Linux 宿主:
pactl info看宿主自己的音频服务是否正常
第2步:让PulseAudio或PipeWire认出输出设备
内核认到声卡,不代表应用能出声,第 2 步查用户态音频服务。
pactl info pactl list sinks short systemctl --user status pulseaudio systemctl --user status pipewire
pactl info报连接失败,说明 PulseAudio/PipeWire 没跑起来pactl list sinks short只有auto_null或dummy output,说明没有可用输出- 如果列出声卡但应用没声,继续查静音和路由
常用修复命令
安装音量控制:
sudo apt install pavucontrol pavucontrol
在“输出设备”里选对声卡,取消静音,把音量拉起来。

检查 ALSA 静音:
alsamixer
按 F6 选声卡,确保 Master、PCM、Headphone 没有 MM。
重新加载 ALSA:
sudo alsa force-reload
检查内核模块:
lsmod | grep snd dmesg | grep -i audio
HD Audio 通常用 snd_hda_intel,AC97 可能用 snd_intel8x0,模块没加载时,可以手动试:
sudo modprobe snd_hda_intel
如果是 Ubuntu 22.04/24.04 默认 PipeWire,不要同时强启 PulseAudio,两者抢设备会导致无声。
PipeWire 与 PulseAudio 切换
切到 PipeWire:
systemctl --user disable pulseaudio systemctl --user enable pipewire pipewire-pulse wireplumber systemctl --user start pipewire pipewire-pulse wireplumber
切回 PulseAudio:
systemctl --user disable pipewire pipewire-pulse wireplumber systemctl --user enable pulseaudio systemctl --user start pulseaudio
据 PulseAudio 官方文档,用户级服务需要会话总线正常,SSH 远程登录没有会话总线时,pactl 会连不上,这不代表声卡坏了。
第3步:用测试命令和输出路由锁定问题
先测内核和 ALSA
speaker-test -c 2 -t sine -l 1
有声音,说明 ALSA 到虚拟声卡通了,没声音,回第 1 步。
再测 PulseAudio/PipeWire
paplay /usr/share/sounds/alsa/Front_Center.wav
paplay 有声音,但浏览器没声音,问题在应用路由。
应用单独选输出
- 浏览器:播放视频时右键标签页,或系统设置里选输出
- 会议软件:Zoom/腾讯会议/Teams 设置里单独选扬声器
- 播放器:VLC 音频输出模块选 PulseAudio 或 PipeWire
- 如果应用走错了默认设备,
pavucontrol的“播放”标签页可以实时切换
远程桌面场景
RDP 连接 Windows 到 Linux,需要在 RDP 客户端勾选“音频重定向”,SPICE 客户端要启用声音,VNC 默认不传音频,换 SPICE 或 RDP 更合适,北京开发环境虚拟机Linux音频配置中,很多团队用 Windows 宿主机 + VMware + Ubuntu,音频直通比远程桌面稳定。

北京开发环境虚拟机Linux音频配置:发行版差异与避坑
不同发行版的音频服务不同:
| 发行版 | 默认音频服务 | 备注 |
|---|---|---|
| Ubuntu 22.04+ | PipeWire | 兼容 PulseAudio 接口 |
| Debian 12 | PipeWire | 可切 PulseAudio |
| Fedora 38+ | PipeWire | 默认启用 |
| CentOS 7 | PulseAudio | 老版本,注意内核模块 |
| Arch Linux | 手动选择 | 安装 pipewire-pulse 或 pulseaudio |
免费虚拟机方案里,VirtualBox 和 VMware Workstation Player 是常见选择,免费虚拟机Linux音频配置教程的关键不是装驱动,而是先把虚拟声卡连上,如果只是跑 Linux 开发环境,不涉及音频,关掉声卡反而减少资源占用,如果需要在线会议,优先本地虚拟机,别用云主机出声。
Q&A:虚拟机Linux没声音怎么解决
虚拟机Linux没声音,但宿主Windows有声音,问题在哪?
宿主有声音说明物理声卡正常,问题在虚拟声卡未连接、Hypervisor 音频服务未启用,或 Linux 内部输出选错,按第 1 步查虚拟机设置,第 2 步查 pactl。
云服务器Linux没有声音正常吗?
正常,多数云主机不分配声卡,也没有音频输出设备,需要声音时,用 RDP 或 SPICE 做音频重定向,或者把音频处理放在本地。
安装了pavucontrol还是没声音,下一步查什么?
先看 pactl list sinks short 是否只有 dummy,如果是,检查内核模块 snd_hda_intel 是否加载,再确认虚拟机声卡类型,如果声卡存在但应用无声,在 pavucontrol 的“播放”页把应用手动切到正确输出设备。
虚拟机 Linux 没声音,核心就是虚拟声卡、音频服务、应用路由三段排查,先确认 aplay -l 能看到声卡,再用 pactl 和 pavucontrol 把输出选对,大多数问题不用重装系统。