Ubuntu虚拟机没声音,绝大多数情况下是音频设备映射或输出配置错误,按本文步骤逐项排查,几分钟就能修复。
Ubuntu装在虚拟机里,声音出问题比物理机更常见,但解决方法也更固定,我折腾过VirtualBox和VMware下的Ubuntu,也帮朋友处理过很多次,问题基本都集中在几个点上,这篇文章就把最有效的排查路径和解决方案写清楚,你照着做就行。
为什么虚拟机里Ubuntu会突然没声音?
先弄明白背后的逻辑,你就不容易瞎忙活,虚拟机不是直接把声卡给系统用,而是通过虚拟机软件模拟一块声卡,再把声音传给宿主机的音频驱动,这条链路有四个环节:虚拟机软件设置、Ubuntu内核模块、音频服务、桌面输出设备,任何一环掉链子,声音就没了。
最常见的触发场景是你刚升级了Ubuntu版本、换了虚拟机软件版本,或者修改过虚拟机的硬件设置,使用远程桌面工具(比如VNC或XRDP)登录Ubuntu时,音频输出会自动切换到“Dummy Output”,这也是个大坑。
第一步:检查虚拟机软件的音频设置
先从源头查起,不同虚拟机软件的设置位置不同,但原理一致。
VMware Workstation / Player 的音频设置
打开虚拟机设置,选择“声卡”或“音频”,确保“连接”前面的勾选已打开,“指定输出设备”选择默认或你的物理声卡,这里有三种情况:
- 如果你用的是VMware Workstation Pro,在“编辑虚拟机设置”里看“声卡”项
- 如果用的是VMware Player,在“虚拟机”菜单下找“可移动设备”,看“音频”是否已连接
- 如果折腾过声卡直通,那要把直通设备断开,改回模拟
VirtualBox 的音频设置
VirtualBox的音频设置藏在“设置”->“音频”,这里有个关键参数:
- “启用音频”必须勾选
- “音频控制器”默认一般是ICH AC97或Intel HD Audio,很多老问题都是AC97声卡和Ubuntu新内核不兼容,建议直接换成“Intel HD Audio”
- “主机音频驱动程序”选PulseAudio(如果你的宿主机是Linux或Windows新版),Windows下用Windows DirectSound或WASAPI都行
行业共识认为,Intel HD Audio + PulseAudio的组合在Ubuntu虚拟机里兼容性最优,改完设置记得重启虚拟机。
第二步:在Ubuntu系统里排查音频设备
虚拟机设置没问题,就该检查Ubuntu内部了。
用命令确认声卡是否被识别
打开终端,输入:
aplay -l
如果看到类似“card 0: [PCH]”或“card 0: I82801AAICH”这样的输出,说明声卡被系统识别了,如果输出是“no soundcards found”或者直接报错,那就是虚拟机提供的声卡驱动没加载成功。
再试一个命令:
lspci | grep -i audio
这个命令直接看PCI设备里有没有音频控制器,如果这里都没有,说明虚拟机软件根本没把声卡设备传进来,回到第一步重新检查。
加载必要的内核模块
Ubuntu默认使用snd_hda_intel模块驱动大多数虚拟机声卡,强制加载一下:
sudo modprobe snd_hda_intel
然后看下有没有报错,如果提示无法加载模块名,那就先检查内核版本:
uname -r
较老的虚拟机上跑新内核(比如6.8以上),有过个别驱动兼容问题,但少见,不用急着折腾内核。
第三步:搞定PulseAudio和PipeWire的冲突
这是Ubuntu虚拟机没声音怎么解决的关键环节,Ubuntu 22.04之后,系统音频框架从PulseAudio转向了PipeWire,但很多桌面组件还基于PulseAudio,虚拟机里这两个服务经常打架,导致你没有声音。
首先看音频服务状态:
pactl info
如果显示“Server Name: PulseAudio”或者“PipeWire”,都算正常,但如果显示“Connection failure”或者“No such entity”,那服务就没起来。
接着检查是否有多个音频服务抢占:
systemctl --user status pipewire pipewire-pulse pulseaudio
看到pipewire和pipewire-pulse在运行,同时pulseaudio也在运行,那大概率有冲突,解决办法是禁用PulseAudio,让PipeWire接管:
systemctl --user stop pulseaudio.service pulseaudio.socket systemctl --user disable pulseaudio.service pulseaudio.socket
然后重启用户会话(或者直接重启虚拟机),再试声音。
处理“Dummy Output”问题
很多人会发现在Ubuntu设置里,声音输出设备显示为“Dummy Output”,这就是没声音的直接原因。Dummy Output意味着系统有音频架构但没有物理输出设备可用。
处理方法有两种:
- 先确认虚拟机声卡已正确映射(回到第一步),因为Dummy Output最常见的原因就是虚拟机软件音频断开
- 手动重启音频服务:
pulseaudio -k systemctl --user restart pipewire pipewire-pulse
如果还不行,删除旧的音频配置再重启:
rm -rf ~/.config/pulse rm -rf ~/.config/pipewire reboot
这样操作后,绝大多数Dummy Output问题都能消失。
第四步:调整桌面端音量与输出设置
服务正常、设备也识别了,但就是没声,这时候八成是桌面环境把音量静音了或者输出端口选错了。
在Ubuntu桌面右上角点击“音量”图标,选择“设置”或“声音”选项,检查:
- 输出设备选的是不是“扬声器”或“耳机”,而不是“Dummy Output”
- 音量不要是0%,检查“静音”按钮是否打开
- 部分虚拟机下这个“端口”下拉框里会有多个选项,试试切换“模拟输出”和“HDMI / DisplayPort”
顺便提一个场景:你用的是Ubuntu Server版没有桌面,纯命令行下声音配置会更麻烦,建议直接用 alsamixer 这个工具:
alsamixer
打开后按F6选择正确的声卡,用方向键把“Master”和“PCM”音量调到80%以上,按M键取消静音(MM表示静音,OO表示取消),按ESC退出后再试。
第五步:彻底重装音频相关包
上述方法都失效的情况下,考虑Ubuntu系统内部音频组件损坏,不慌,重装比你想的简单。
sudo apt update sudo apt install --reinstall alsa-base alsa-utils pulseaudio pipewire pipewire-pulse
如果你在vmware ubuntu没有声音且重装也没用,可以把焦点放回虚拟机软件本身,卸载重装VMware Tools或open-vm-tools也是一条路子:
sudo apt install --reinstall open-vm-tools open-vm-tools-desktop
重装完后执行:
sudo alsa force-reload
然后重启虚拟机。
表格:不同场景下的快速解法对比
| 场景特征 | 快速解法 | 验证方法 |
|---|---|---|
| VMware Workstation中安装Ubuntu 24.04,声音输出为Dummy Output | 改声卡为Intel HD Audio,重启后删除~/.config/pulse | aplay -l 显示声卡,pactl list sinks 显示非Dummy |
| VirtualBox中老Ubuntu(20.04之前)完全无声 | 音频控制器从AC97改为ICH AC97或Intel HD Audio,重装alsa-base | lspci | grep -i audio 有输出 |
| 使用XRDP远程连接Ubuntu桌面无声 | 在/etc/pulse/default.pa末尾添加 load-module module-remap-source 后重启服务 |
图形界面声音设置里出现“已映射”设备 |
| 宿主机为Windows,虚拟机里Ubuntu有音量条但无声 | 检查宿主机扬声器输出设备是否被独占,关闭宿主机上其他应用的音频独占 | 宿主机音量混音器里能看到系统声音波形 |
那些容易忽略的奇怪原因
有相当一部分案例,排查到最后发现根本不是软件问题,而是虚拟机配置文件的隐藏项。
检查.vmx或者.vbox配置
VMware的虚拟机配置文件 (.vmx) 里可能藏着禁用了声音的条目,用文本编辑器打开.vmx文件,查找:
sound.autodetect = "TRUE"
如果值是FALSE,改成TRUE,若是虚拟声卡型号不对,加上一行:
sound.virtualDev = "hdaudio"
VirtualBox的.vbox文件相对简单,直接看配置界面就能搞定,不过也可以检查<AudioAdapter>标签里的enabled="true"属性。
宿主机音频服务被干扰
如果你用的是Windows宿主机,有时Windows的快速启动或休眠会导致虚拟机获取不到音频终端,现象是虚拟机刚开机时声音正常,过一段时间突然没了,这时候只需要
在Windows中重启“Windows Audio”服务,然后重启虚拟机即可。
换一个桌面环境试试
如果Ubuntu用的是非常轻量级的桌面比如LXQt或Xfce,音频服务可能没有默认自启,在登录界面选择“会话”时,换成“Ubuntu”或“GNOME”先测试一下,这不治本,但能帮你确认问题到底出在系统框架还是桌面配置。
安装第三方工具辅助诊断
我推荐装两个小工具,它们能帮你更直观地看到音频链路:
sudo apt install pavucontrol alsamixergui
pavucontrol就是PulseAudio音量控制的高级版,打开后“输出设备”选项卡里能清晰看到每个声卡的状态,还能手动设置“回退”(Fallback)设备。alsamixergui是图形化的混音器,适合不想敲命令行的人。
Q&A:Ubuntu虚拟机没声音的常见疑问
为什么虚拟机里Ubuntu有空间音频标记但播放视频就是没有声音?
这多半是视频播放器的音频输出设备设置成了“默认”之外的其他设备,在播放器的音频设置里,把输出强制指定为“PulseAudio”或“内置音频”的某个端口,浏览器里也有独立的输出设备选择,试试在浏览器地址栏输入 chrome://settings/content/sound 或Firefox的“设置->隐私与安全->权限->自动播放”关闭自动静音。
用VirtualBox装Ubuntu没声音和VMware相比,哪个更好解决?
从社区反馈来看,VMware的虚拟声卡兼容性比VirtualBox好一些,尤其在Ubuntu 22.04之后的版本上,VirtualBox的AC97声卡在Linux新内核下容易找不到声卡,但把控制器改成Intel HD Audio后,基本能和VMware达到类似效果,如果你还没安装虚拟机,优先选VMware Workstation Player免费版;如果已经装了VirtualBox,改控制器参数也不麻烦。
Ubuntu虚拟机里声音延迟或爆音怎么处理?
这个问题的根源是宿主机的音频缓冲区设置,在宿主机上调整音频设备的高级属性,把默认格式降低到“CD音质”(44100Hz 16位),同时在Ubuntu里打开pavucontrol,在“配置”选项卡把虚拟声卡的配置文件设为“模拟立体声输出”而不是“数字立体声(HDMI)”,可显著降低爆音概率,修改后重启声音服务即可生效。
回到最初的结论:Ubuntu虚拟机没声音不是罕见问题,但也不是硬件故障,绝大多数情况都是声卡模拟设置或音频服务配置不对,先看虚拟机软件里的音频设备有没有连接,再确认Ubuntu系统内 aplay -l 能不能识别到声卡,接着处理Dummy Output和PipeWire冲突,最后检查桌面音量输出端口,按这个顺序排查,百分之九十的问题当场解决,剩下那百分之十,重装一遍音频组件基本也跑不掉。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/622686.html





