Цель: Запустить безголовую виртуальную машину с полным доступом к современному графическому процессору для стриминга игр. Предпосылки: Недавний процессор и материнская плата, поддерживающие VT-d, привязку прерываний. Новейшая видеокарта с UEFI BIOS. Инструкции: 1) Включите в BIOS: UEFI, VT-d, режим многомониторности. Это делается через BIOS. Это можно подтвердить с помощью dmesg (поиск по строкам efi) или наличием /sys/firmware/efi в файловой системе и "vmx" в /proc/cpuinfo. Режим многомониторности пришлось активировать в моем BIOS, иначе карта вообще не обнаруживалась (даже хостом с помощью lspci). 2) Включите IOMMU через grub (повторите после обновления!) отредактируйте /etc/default/grub и измените GRUB_CMDLINE_LINUX_DEFAULT="quiet" на GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on video=efifb ff", затем выполните update-grub. Подтвердите с помощью dmesg | grep -e DMAR -e IOMMU - это должно дать вывод. Начиная с PVE 5, мне также пришлось отключить efifb. 3) Заблокируйте nvidia/nouveau, чтобы Proxmox не загружал карту (повторите после обновления!) echo "blacklist radeon" >> /etc/modprobe.d/blacklist.conf echo "blacklist nouveau" >> /etc/modprobe.d/blacklist.conf echo "blacklist nvidia" >> /etc/modprobe.d/blacklist.conf Выполните update-initramfs -u для применения изменений. Убедитесь с помощью lspci -v - это покажет, загружен ли драйвер для адаптера VGA. 4) Загрузите модули ядра для виртуального ввода-вывода. Добавьте в /etc/modules следующее: vfio vfio_iommu_type1 vfio_pci vfio_virqfd. Я не уверен, как подтвердить above. 5) Получите идентификаторы и адреса GPU. Выполните lspci -v, чтобы перечислить все устройства в вашем ПК. Найдите нужный VGA-контроллер. Например: 01:00.0 VGA совместимый контроллер: NVIDIA Corporation GP104 [GeForce GTX 1070] (rev a1) (prog-if 00 [VGA controller]). У вас также может быть аудиоустройство (вероятно, для HDMI звука): 01:00.1 Аудиоустройство: NVIDIA Corporation GP104 High Definition Audio Controller (rev a1). Обратите внимание на номера в начале, в данном случае 01:00.0 и 01:00.1. Используя этот номер, выполните lspci -n -s 01:00. Это даст вам идентификаторы вендоров. Например: 01:00.0 0000: 10de:1b81 (rev a1) 01:00.1 0000: 10de:10f0 (rev a1). Запомните эти идентификаторы вендоров, в данном случае 10de:1b81 и 10de:10f0. 6) Назначьте GPU на vfio. Используйте это для создания файла, который назначает аппаратное обеспечение для vfio: echo "options vfio-pci ids=10de:1b81,10de:10f0" > /etc/modprobe.d/vfio.conf. После перезагрузки выполнение lspci -v подтвердит, что GPU и Аудиоустройство используют драйвер vfio: Драйвер ядра в использовании: vfio-pci. 7) Создайте виртуальную машину (но не запускайте её!). Сделайте это как обычно, используя SCSI VirtIO, VirtIO net и виртуальное оборудование баллона. Также добавьте следующее в конфигурационный файл виртуальной машины (/etc/pve/qemu-server/<vmid>.conf): bios: ovmf machine: q35. 8) Установите Windows 10 в виртуальную машину. Теперь вы можете установить Win10, при этом он будет осознавать UEFI BIOS. Вам может потребоваться предоставить драйверы VirtIO во время установки. После запуска обязательно ВКЛЮЧИТЕ УДАЛЕННЫЙ СТОЛ. Передача GPU отключит виртуальный дисплей, поэтому вы не сможете получить к нему доступ через Proxmox/VNC. Удаленный рабочий стол будет полезен, если у вас нет подключенного монитора или переданной клавиатуры. 9) Передайте GPU! Это фактическая установка GPU в виртуальную машину. Добавьте следующее в конфигурационный файл виртуальной машины: hostpci0: <адрес устройства>,x-vga=on,pcie=1. В приведенных выше примерах использование 01:00 в качестве адреса передаст как 01:00.0, так и 01:00.1, что, вероятно, именно то, что вам нужно. x-vga выполнит некоторую магию совместимости и отключит основной адаптер VGA. Вы можете проверить передачу, запустив виртуальную машину и введя info pci в соответствующей вкладке монитора виртуальной машины в веб-интерфейсе Proxmox. Это должно перечислить VGA и аудиоустройство с идентификатором hostpci0.0 и hostpci0.1. Windows автоматически установит драйвер. Вы можете это разрешить и подтвердить в диспетчере устройств, что карта загружена корректно (то есть без ошибок "код 43"). После этого продолжайте настраивать карту (драйверы и т.д.).
GPU passthrough учебник/справочник, Proxmox Виртуальная Среда
|
23.04.2017 16:11:00
|
|
|
|
|
|
13.05.2017 11:10:00
Рад это слышать, мне приятно, что это оказалось полезным. Что именно помогло?
|
|
|
|
|
|
13.09.2017 10:49:00
@sshaikh: Не знаю, это довольно настойчиво — попробую передать устройство в свою установку antegos, чтобы увидеть, проблема в виртуальной машине или в настройках.
|
|
|
|
|
|
13.09.2017 11:27:00
@sshaikh: Я пытался запустить это на виртуальной машине Linux, но она тоже не стартует. Если посмотреть в конце протокола виртуальной машины: истекло время ожидания.
|
|
|
|
|
Читают тему

