主题
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-d、SR-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 # 宿主机来电自动启动配置指南快速开始
- 阅读前置检查清单:
gpu-passthrough-guide.md第 1 节。 - 运行宿主机初始化脚本(按提示填入显卡 PCI ID):bash
sudo bash scripts/setup-host.sh - 重启后验证 IOMMU 与 VFIO 绑定:bash
dmesg | grep -i iommu lspci -nnk | grep -A3 -i "vga\|amd" - 创建虚拟机:使用
virt-manager按gpu-passthrough-guide.md创建,或导入scripts/ubuntu-server-vm.xml后修改 PCI 地址。 - 虚拟机内安装 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 / 物理换插槽)。
参考
- Arch Wiki - PCI passthrough via OVMF
- gnif/vendor-reset
- Ubuntu 22.04 LTS 官方文档