Skip to content

Ubuntu 22.04.2 Server + 本地 AMD 显卡直通方案

本仓库保存了一套在 KVM/QEMU + libvirt(virt-manager)环境下,使用 ubuntu-22.04.2-live-server-amd64.iso 安装虚拟机,并把宿主机的本地 AMD 独立显卡直通进虚拟机的完整方案。 文件已保存在本地:/home/xxx/docs/docs/ubuntu

适用场景

  • 在虚拟机里跑 ROCm / PyTorch / CUDA-on-AMD 等 GPU 计算任务
  • 在 VM 中运行需要 AMD 显卡硬件加速的图形或游戏负载
  • 不希望改动宿主机桌面环境,想把显卡“独占”给某个 VM

硬件/BIOS 前提

项目要求
CPU支持 AMD-V / AMD-Vi(IOMMU)或 Intel VT-x / VT-d
主板BIOS/UEFI 中开启 IOMMU / AMD-Vi / VT-dSR-IOV(如有)、Above 4G Decoding
显卡一块用于直通的 AMD 独显(RX 500/5000/6000/7000 系列等)
显示推荐双显卡方案:宿主机有核显/另一张显卡用于显示,直通卡专门给 VM

⚠️ 单显卡单主机直通需要额外步骤(启动前卸载宿主机显卡驱动、关闭 Display Manager 等),风险较高,本文以双显卡/无头服务器场景为主。

仓库文件说明

text
.
├── README.md                      # 本说明
├── gpu-passthrough-guide.md       # 详细图文/命令步骤
├── scripts/
│   ├── setup-host.sh              # 宿主机一键初始化脚本
│   ├── bind-gpu-to-vfio.sh        # 将指定 AMD GPU 绑定到 vfio-pci
│   └── ubuntu-server-vm.xml       # libvirt 虚拟机 XML 模板
├── vm-config-notes.md             # VM 安装与驱动安装补充说明
└── auto-power-on-after-ac-loss.md # 宿主机来电自动启动配置指南

快速开始

  1. 阅读前置检查清单gpu-passthrough-guide.md 第 1 节。
  2. 运行宿主机初始化脚本(按提示填入显卡 PCI ID):
    bash
    sudo bash scripts/setup-host.sh
  3. 重启后验证 IOMMU 与 VFIO 绑定
    bash
    dmesg | grep -i iommu
    lspci -nnk | grep -A3 -i "vga\|amd"
  4. 创建虚拟机:使用 virt-managergpu-passthrough-guide.md 创建,或导入 scripts/ubuntu-server-vm.xml 后修改 PCI 地址。
  5. 虚拟机内安装 AMD 驱动 / ROCm,见 vm-config-notes.md

重要提示

  • AMD 显卡存在著名的 Reset Bug(RX 5000/6000 部分型号),VM 关闭后可能需要宿主机重启才能再次启动 VM。可尝试 vendor-reset 补丁模块解决,详见 gpu-passthrough-guide.md 第 6 节。
  • 操作涉及 GRUB、initramfs、PCI 驱动绑定,建议先在测试机或非生产环境验证。
  • 不同主板 IOMMU 分组差异很大,如果直通卡和别的设备在同一 IOMMU 组,需要额外处理(ACS override / 物理换插槽)。

参考