Proxmox: PCI(e) Passthrough / IOMMU

Проброс устройств напрямую в виртуальную машину.

  1. Проверяем в BIOS, должны быть включены настройки для VT-d/AMD-d CPU, обычно это что-то вроде «Enable Virtualization Technology» или «Intel Virtualization Technology for Directed I/O (VT-d.)» или «AMD-Vi» или «IOMMU»
  2. Проверяем что у нас используется для загрузки командой
    efibootmgr -v

    если получаем что-то вроде «File(\EFI\SYSTEMD\SYSTEMD-BOOTX64.EFI)» - значит это не GRUB а EFI

  3. Если в Proxmox используется GRUB то в /etc/default/grub добавляем строки ниже, потом запускаем
    update-grub2
    • Intel: GRUB_CMDLINE_LINUX_DEFAULT=«quiet intel_iommu=on iommu=pt»
    • AMD: GRUB_CMDLINE_LINUX_DEFAULT=«quiet amd_iommu=on iommu=pt»
  4. Если у нас ZFS то в /etc/kernel/cmdline добавляем строки ниже, потом запускаем
    pve-efiboot-tool
    • Intel: root=ZFS=rpool/ROOT/pve-1 boot=zfs quiet intel_iommu=on iommu=pt
    • AMD: root=ZFS=rpool/ROOT/pve-1 boot=zfs quiet amd_iommu=on iommu=pt
  5. Добавляем модули ядра в /etc/modules строки:
    vfio
    vfio_iommu_type1
    vfio_pci
    vfio_virqfd

    и потом запускаем

    update-initramfs -u -k all
  6. Перезагружаем Proxmox
  7. Добавляем устройство в свойствах VM через Hardware → Add → PCI Device, выбираем нужное устройство и перезагружаем виртуальную машину (если она включена)