Ubuntu KVM虚拟化及显卡直通
时间: 2025-05-13 07:13:18 浏览: 23
### 配置 Ubuntu 上的 KVM 虚拟化并实现显卡直通
#### 安装必要的软件包
为了在 Ubuntu 上设置 KVM 和 GPU 直通,首先需要安装一些基础工具和驱动程序。这些工具包括 `qemu-kvm`、`libvirt-daemon-system`、`bridge-utils` 等。
```bash
sudo apt update && sudo apt install qemu-kvm libvirt-daemon-system \
libvirt-clients bridge-utils virt-manager ovmf cpu-checker -y
```
确认硬件支持虚拟化的功能是否已启用,并验证 CPU 是否兼容 KVM[^1]:
```bash
egrep -c '(vmx|svm)' /proc/cpuinfo
```
如果返回值大于零,则表示您的处理器支持虚拟化技术。
---
#### 启用 IOMMU 支持
IOMMU 是实现 GPU 显卡直通的关键组件之一。编辑 GRUB 文件以添加内核参数:
```bash
sudo nano /etc/default/grub
```
找到 `GRUB_CMDLINE_LINUX_DEFAULT` 并修改如下内容(对于 Intel 或 AMD 处理器分别适用):
- **Intel**: 添加 `intel_iommu=on iommu=pt`
- **AMD**: 添加 `amd_iommu=on iommu=pt`
更新 GRUB 并重启系统:
```bash
sudo update-grub
sudo reboot
```
---
#### 设置 VFIO 模块加载顺序
创建一个新的文件 `/etc/modules-load.d/vfio.conf` 来确保 VFIO 模块被正确加载:
```bash
echo "vfio" | sudo tee -a /etc/modules-load.d/vfio.conf
echo "vfio_pci" | sudo tee -a /etc/modules-load.d/vfio.conf
echo "vfio_iommu_type1" | sudo tee -a /etc/modules-load.d/vfio.conf
```
重新启动计算机使更改生效。
---
#### 将目标设备分配给 VFIO 驱动
假设您要传递 NVIDIA 的 GPU 设备,请先识别其 PCI 地址:
```bash
lspci -nnk | grep -iA2 vga
```
记录下对应的 PCI ID(例如 `01:00.0`)。接着卸载原生驱动并将此设备绑定至 VFIO:
```bash
modprobe vfio-pci
virsh nodedev-detach pci_0000_<your_device_id>
```
最后一步非常重要——将该设备加入到 QEMU/KVM 中使用的 XML 配置文件里。
---
#### 创建 VM 并配置 GPU Passthrough
使用 `virt-install` 命令或其他管理工具定义新的虚拟机实例时,在 `<hostdev>` 标签部分指定之前分离出来的 GPU 设备地址[^3]。
示例片段可能看起来像这样:
```xml
<domain type='kvm'>
...
<devices>
<!-- Other devices -->
<hostdev mode="subsystem" type="pci" managed="yes">
<source>
<address domain="0x0000" bus="0x01" slot="0x00" function="0x0"/>
</source>
</hostdev>
</devices>
</domain>
```
上述代码中的具体数值应替换为您实际检测到的物理位置信息。
---
#### 性能优化建议
当完成基本搭建之后,可以进一步调整宿主机与客户操作系统之间的交互行为来提升整体效率。比如减少不必要的中断请求频率、开启巨型页内存支持等措施均有助于改善游戏场景下的表现水平[^4]。
---
阅读全文
相关推荐





