Skip to content

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.conf

VM XML:

xml
<memoryBacking>
  <hugepages/>
</memoryBacking>

2. Ubuntu Server ISO 安装过程注意

  1. 安装时如果没有物理显示器接到直通卡上,保留 Spice/VNC 显示完成安装。
  2. 安装完成后先把内核和驱动更新到最新:
    bash
    sudo apt update && sudo apt full-upgrade -y
  3. 若需要桌面环境:
    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:

  1. 安装 SSH 服务,确保能远程管理宿主机。
  2. 创建 libvirt hook 脚本:
    • VM 启动前:停止 GDM/SDDM/LightDM、rmmod amdgpu、把显卡绑定到 vfio-pci。
    • VM 停止后:把显卡还给宿主机、加载 amdgpu、启动显示管理器。
  3. 具体 hook 路径与示例可参考:
    • /etc/libvirt/hooks/qemu.d/<vm-name>/prepare/begin/
    • /etc/libvirt/hooks/qemu.d/<vm-name>/release/end/

单卡直通比双卡复杂,建议在熟悉双卡直通后再尝试。