Ubuntu 18 使用NVIDIA上的HDMI输出声音

前言

在未做修改之前,Settings -> Sound -> Output 里面只有
Digital Output(S/PDIF) - Built-in Audio
不显示HDMI的输出设备

检查当前存在的音频设备

sudo lspci -v | grep -A7 -i "audio"

输出: 从输出可以看出来是有两个设备的
00:1f.3 Audio device: Intel Corporation Device 7ad0 (rev 11)
        Subsystem: ASUSTeK Computer Inc. Device 87fb
        Flags: bus master, fast devsel, latency 32, IRQ 145
        Memory at 4014220000 (64-bit, non-prefetchable) [size=16K]
        Memory at 4014000000 (64-bit, non-prefetchable) [size=1M]
        Capabilities: [50] Power Management version 3
        Capabilities: [80] Vendor Specific Information: Len=14 <?>
        Capabilities: [60] MSI: Enable+ Count=1/1 Maskable- 64bit+
--
01:00.1 Audio device: NVIDIA Corporation Device 10fa (rev a1)
        Subsystem: Device 7377:0000
        Flags: bus master, fast devsel, latency 0, IRQ 17
        Memory at 83080000 (32-bit, non-prefetchable) [size=16K]
        Capabilities: [60] Power Management version 3
        Capabilities: [68] MSI: Enable- Count=1/1 Maskable- 64bit+
        Capabilities: [78] Express Endpoint, MSI 00
        Capabilities: [100] Advanced Error Reporting

安装NVIDIA驱动

sudo ubuntu-drivers autoinstall
安装之后重启,使用下面命令查看驱动安装情况
nvidia-smi
然后再次打开Settings -> Sound -> Output 查看是否会出现
HDMI/DisplayPort 2 -HDA NVIDIA
### Ubuntu KVM 配置虚拟机独占 HDMI 输出的方法 在 Ubuntu 的 KVM 环境下配置虚拟机独占 HDMI 输出涉及多个步骤,主要包括硬件直通(PCI Passthrough)、显卡驱动安装以及音频设备的映射。以下是详细的说明: #### 1. **启用 BIOS/UEFI 中的功能** 为了实现 PCI 设备直通,主机需要支持 IOMMU 功能并开启该功能。IOMMU 是一种硬件技术,用于隔离物理内存访问权限,从而允许安全地将硬件分配给虚拟机。 - 对于 Intel CPU,需启用 VT-d 技术。 - 对于 AMD CPU,需启用 SVM 和 IOMMU 支持。 这些选项通常位于 BIOS 或 UEFI 设置中的高级菜单或芯片组设置部分[^2]。 #### 2. **修改 GRUB 启动参数** 为了让 Linux 内核识别 IOMMU 并加载必要的模块,在 `/etc/default/grub` 文件中添加以下启动参数: ```bash GRUB_CMDLINE_LINUX_DEFAULT="quiet splash intel_iommu=on iommu=pt" ``` 对于 AMD 处理器,则应改为 `amd_iommu=on`。保存文件后运行以下命令更新引导程序: ```bash sudo update-grub ``` 重启系统使更改生效[^3]。 #### 3. **确认 IOMMU 是否正常工作** 通过查看 dmesg 日志来验证 IOMMU 已被激活: ```bash dmesg | grep -e DMAR -e IOMMU ``` 如果看到类似 “DMAR: IOMMU enabled” 的消息,则表示成功启用了 IOMMU[^4]。 #### 4. **绑定 GPU 到 VFIO 驱动** 要让虚拟机能完全控制目标 GPU 及其附属组件(如 HDMI 输出),必须先将其从默认驱动卸载再重新绑定至 VFIO 驱动。假设使用NVIDIA 显卡为例,操作如下: 编辑 modprobe.d 下的一个新规则文件定义黑名列表项排除指定设备不被初始化标准图形子系统接管;接着利用 vfio-pci 手工关联它们作为可传递资源供后续创建实例时调用[^5]: ```bash echo "blacklist nvidia" | sudo tee /etc/modprobe.d/blacklist-nvidia.conf echo "options vfio-pci ids=<vendor_id>:<device_id>" | sudo tee /etc/modules-load.d/vfio.conf ``` 其中 `<vendor_id>` 和 `<device_id>` 替换为实际硬件对应的值,可通过 lspci 命令查询获取。 #### 5. **构建 QEMU/KVM 虚拟化环境** 最后一步是在 libvirt XML 定义文档里增加额外字段描述如何把先前准备好的外设引入当前域对象结构之中。下面给出一段示范代码片段展示怎样声明一个完整的 PCIe 总线地址路径指向特定显示适配器及其连接端口属性信息[^6]: ```xml <hostdev mode='subsystem' type='pci' managed='yes'> <source> <address domain='0x0000' bus='0x01' slot='0x00' function='0x0'/> </source> </hostdev> <!-- 如果存在独立声卡 --> <hostdev mode='subsystem' type='usb' managed='no'> <source> <vendor id='...'/> <product id='...'/> </source> </hostdev> ``` 完成以上所有准备工作之后就可以尝试启动新的客户操作系统镜像文件看看效果啦!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值