Проброс физической видеокарты NVIDIA в виртуальную машину QEMU на хост системе Ubuntu 24.04
Для выполнения этой задачи необходимо убедиться, что процессор поддерживает виртуализацию Intel VT-X или AMD-V.
Это можно узнать с помощью команды:
lscpu | grep "Virtualization"
Компьютер должен иметь как минимум две видеокарты: одну для хоста, другую для виртуальной машины.
Для выполнения задачи будет использоваться VFIO (Virtual Function Input/Output) — виртуальная функция ввода-вывода, которая предоставляет прямой доступ устройства к пользовательскому пространству.
Необходимо определить идентификатор PCI для графического процессора NVIDIA. Это можно сделать с помощью команды:
lspci -nn | grep -E "NVIDIA"
Пример вывода:
07:00.0 VGA compatible controller 0300: NVIDIA Corporation GP108 GeForce GT 1030 10de:1d01 (rev a1)
07:00.1 Audio device 0403: NVIDIA Corporation GP108 High Definition Audio Controller 10de:0fb8 (rev a1)
В данном примере идентификаторы: 10de:1d01, 10de:0fb8.
Далее необходимо включить функцию IOMMU. Для этого нужно открыть файл конфигурации grub и внести следующие правки:
sudo vi etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="intel_iommu=on iommu=pt vfio-pci.ids=10de:1d01,10de:0fb8"
GRUB_CMDLINE_LINUX=""
Затем сохраните изменения, обновите конфигурацию grub и перезагрузите компьютер:
sudo grub-mkconfig -o boot/grub/grub.cfg
sudo reboot
Далее необходимо изолировать видеокарту NVIDIA от доступа ядра хостовой ОС. Для этого создайте файл конфигурации VFIO и введите параметры vfio-pci с идентификаторами:
sudo touch /etc/modprobe.d/vfio.conf
sudo vi /etc/modprobe.d/vfio.conf
options vfio-pci ids=10de:1d01,10de:0fb8
softdep nvidia pre: vfio-pci
После этого обновите initramfs и убедитесь, что обновление пройдёт без ошибок, затем перезагрузите компьютер:
sudo update-initramfs -c -k $(uname -r)
sudo reboot
Чтобы проверить изоляцию видеокарты, выполните следующую команду:
$ lspci -k | grep -E "vfio-pci|NVIDIA"
Пример вывода:
07:00.0 VGA compatible controller: NVIDIA Corporation GP108 [GeForce GT 1030] (rev a1)
Subsystem: NVIDIA Corporation GP108 [GeForce GT 1030]
Kernel driver in use: vfio-pci
07:00.1 Audio device: NVIDIA Corporation GP108 High Definition Audio Controller (rev a1)
Subsystem: NVIDIA


Комментарии