主题
VM 配置与驱动安装补充说明
1. virt-manager 关键 XML 片段
1.1 显卡直通 PCI 设备示例
xml
<hostdev mode='subsystem' type='pci' managed='yes'>
<source>
<address domain='0x0000' bus='0x0b' slot='0x00' function='0x0'/>
</source>
<address type='pci' domain='0x0000' bus='0x03' slot='0x00' function='0x0' multifunction='on'/>
</hostdev>
<hostdev mode='subsystem' type='pci' managed='yes'>
<source>
<address domain='0x0000' bus='0x0b' slot='0x00' function='0x1'/>
</source>
<address type='pci' domain='0x0000' bus='0x03' slot='0x00' function='0x1'/>
</hostdev>managed='yes':libvirt 会在 VM 启动/停止时自动解绑/恢复驱动。multifunction='on':必须放在第一个 function 的 address 上,否则 VM 可能报错。
1.2 隐藏 KVM 标志(一般 AMD 不需要,部分场景可加)
xml
<features>
<kvm>
<hidden state='on'/>
</kvm>
</features>1.3 CPU 直通
xml
<cpu mode='host-passthrough' check='none' migratable='off'/>1.4 大页内存(可选性能优化)
宿主机:
bash
echo 8192 | sudo tee /proc/sys/vm/nr_hugepages
echo "vm.nr_hugepages = 8192" | sudo tee -a /etc/sysctl.confVM XML:
xml
<memoryBacking>
<hugepages/>
</memoryBacking>2. Ubuntu Server ISO 安装过程注意
- 安装时如果没有物理显示器接到直通卡上,保留 Spice/VNC 显示完成安装。
- 安装完成后先把内核和驱动更新到最新:bash
sudo apt update && sudo apt full-upgrade -y - 若需要桌面环境:bash
sudo apt install -y ubuntu-desktop
3. 虚拟机内驱动验证
3.1 查看显卡是否识别
bash
lspci -nnk | grep -iE 'vga|amd|amdgpu'3.2 ROCm / OpenCL 验证
bash
rocminfo | grep "Name:"
clinfo | grep "Device Name"3.3 PyTorch ROCm 示例
bash
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/rocm6.0
python -c "import torch; print(torch.cuda.is_available()); print(torch.cuda.get_device_name(0))"4. 单显卡宿主机直通简要思路
如果宿主机只有一张 AMD 显卡,想要把它直通给 VM:
- 安装 SSH 服务,确保能远程管理宿主机。
- 创建 libvirt hook 脚本:
- VM 启动前:停止 GDM/SDDM/LightDM、
rmmod amdgpu、把显卡绑定到 vfio-pci。 - VM 停止后:把显卡还给宿主机、加载 amdgpu、启动显示管理器。
- VM 启动前:停止 GDM/SDDM/LightDM、
- 具体 hook 路径与示例可参考:
/etc/libvirt/hooks/qemu.d/<vm-name>/prepare/begin//etc/libvirt/hooks/qemu.d/<vm-name>/release/end/
单卡直通比双卡复杂,建议在熟悉双卡直通后再尝试。