Проброс GeForce GPU в Windows VM теперь официально поддерживается

Удивительное дело, что такие новости пролетели мимо Хабра, однако, наверстывая, хочу обратить внимание сообщества на то, что 30 марта 2021 года компания NVidia сообщила, что проброс GPU GeForce из Linux хоста в Windows гостя теперь официально поддерживается (пока что в Beta режиме) начиная драйверов версии R465.

Естественно, чтобы это работало, GPU придется пробрасывать целиком и, необходимо будет иметь вторую видеокарту для операционной системы хоста.

Уточняется, что необходимо использовать Windows 10 в качестве гостя, и, поддерживаются все GPU линеек GeForce и TITAN.

В качестве целевой аудитории для этой функциональности указываются:

Обновление драйверов должно исправлять широко известную в узких кругах ошибку "Code 43", которая возникает при загрузке ОС в случаях, когда GPU GeForce/драйверы обнаруживают виртуальное окружение.

П.С.

Как пользователь игровых Windows-VM с проброшенным GPU без официальной поддержки со стажем около 10-ти лет, скажу, что чтобы такое кардинальное изменение в политике произошло, наверно, где-то должна была случиться катастрофа воистину космических масштабов.

@dorne
05.04.2021 06:47 UTC
Первоисточник

Комментарии

@hondurasez
05.04.2021 01:59 UTC
-3
Вот только толку от таких «пробросов»… В нормальные игры всё равно придётся в нативном режиме играть.
@dorne
05.04.2021 02:07 UTC
+3
Не совсем понимаю, что вы имеете ввиду под «нормальными играми», но при пробросе GPU и USB хост-контроллера в виртуальную машину нормальные AAA-тайтлы работают без проблем.
Проблемы могут возникать, разве что с «анти-чит» системами в некоторых случаях.
05.04.2021 02:42 UTC
+1
Собственно, об этом и речь. Я боюсь, что и Denuvo может возникать, если у нее есть механизм обнаружения виртуализации.
05.04.2021 02:46 UTC
0
«Анти-чит» и DRM системы могут создавать проблемы.
Однако, уже много лет как пользователи игровых VM научились прятать наличие виртуализации, чтобы обманывать GPU GeForce и драйверы NVidia. Несмотря на то, что теперь в этой функциональности нет столь острой необходимости, отключать ее не советую, именно из-за DRM и «анти-чит» систем.
13.04.2021 17:13 UTC
0
А где можно найти инфу по этому поводу? Есть очень горячая проблема — нужно И пробросить видеокарту в виртуалку И настроить виртуалку так чтобы античит не поимал что это виртуалка
13.04.2021 17:30 UTC
0
Гайдов в сети полно, но, преимущественно, на английском. На Хабре тоже что-то есть, но мало.

Надо сначала искать гайды про обычный проброс. Часто он специфичен для конкретной серии GPU и может отличаться. Может быть специфичность для вашего процессора/чипсета. Для полного сокрытия нужно удалить из системы виртуальный видеоадаптер. Многие гайды описывают процесс проброса в качестве «второй видеокарты». Он немного проще. И, работает не хуже в 99% случаев. Но, для полного сокрытия этот вариант не подойдет.

Потом гайды про базовое сокрытие виртуализации от гостевой ОС. Пошаманить с настройками гипервизора и флагами CPU.

Потом гуглить гайды про дополнительные шаги для конкретных анти-чит систем. Тут надо будет шаманить с образами BIOS, OEM идентификаторами, реестром. Надо будет пробросить реальный USB контроллер, удалить устройства ввода-вывода виртуальные, и использовать настоящую клавиатуру/мышь для VM или KVM-переключатель. Отказаться от паравиртуализации (virtio).

Часто эти гайды перемешаны. Например, раньше чтобы пробросить NVidia GPU надо было делать «частичное сокрытие виртуализации» сразу, чтобы обмануть драйвер NVidia. Но, у NVidia проверки не супер строгие, достаточно убрать CPU флаги и сменить OEM идентификатор. Для анти-чит систем этого может оказаться недостаточно.

Универсального и полного гайда я не видел.
@polyanin
05.04.2021 04:41 UTC
0
Правильно я понимаю, что если в системе только одна видеокарта, то этой возможностью воспользоваться не получится?
@dorne
05.04.2021 04:44 UTC
0
Официальной поддержки нет, но, уже давно у умельцев де-факто получалось пробросить единственный GPU. Но, там гораздо больше заморочек с подбором железа и настройкой.

Гуглить по «headless GPU passthrough».

Возможно, после обновления, сделать это станет «немного проще».
@dorne
05.04.2021 05:00 UTC
+2
Добавлю еще, что при наличии встроенной (в ЦП или материнскую плату) и дискретной графики одновременно, дискретная пробрасывается достаточно просто. Там вроде нигде не написано, что видеокарта для хоста должна быть от NVidia.
Я вполне успешно обхожусь IPMI/VGA видеоадаптером встроенным в серверную материнскую плату.
05.04.2021 05:13 UTC
0
у меня ryzen без встроенного видео
05.04.2021 15:42 UTC
0

У меня на интеловской серверной материнке встроенное видео наотрез отказывается работать в паре с любой внешней видеокартой, приходится ее в биосе отключать

05.04.2021 16:16 UTC
+1
Да. Было такое с предыдущим моим Intel-овским железом. Приходилось отключать дискретную графику в BIOS хоста. Пробрасывать эту графику в ВМ это не мешает, а наоборот, — помогает, т.к. с инициализацией дискретной графики вполне успешно справится BIOS виртуальной машины, а, делать это дважды нельзя.
Вообще это характерная особенность Intel-овской встроенной графики. Она по-умолчанию при инициализации VGA BIOS дискретной графики деинициализируется/выключается.
05.04.2021 16:20 UTC
0

Хм, интересно, спасибо, не знал, надо попробовать.

@Wexter
05.04.2021 06:35 UTC
0
Не получится если хотите сразу 2 системы выводить. Если нужна только гостевая то всё будет работать. Для двух систем нужны 2 карты, причём даже разных моделей, иначе обе будут заблокированы драйвером
@Lsh
05.04.2021 08:55 UTC
0
Интересно, а какой в этом смысл? Чем это отличается от перезагрузки? Ведь пока запущена VM, основной системой не получится пользоваться. И что будет с графическими приложениями GNU/Linux? Мне кажется отобрать все видеокарты у X11-сервера/Wayland-композитора не получится без его перезапуска.
05.04.2021 09:03 UTC
+3
Например, в моем случае, помимо игровой ВМ на Linux-хосте запущена еще огромная куча другого софта и виртуальных машин. Для Windows-гостя полностью виртуализирована сеть (прозрачный L2 VPN) и дисковая подсистема, настроены прозрачные бэкапы. Средствами Linux-хоста и других VM реализованы фаерволл, «домашний роутер» с кастомными маршрутами для «обхода блокировок», и, даже программная точка доступа, которая раздает домашний WiFi.
Все это не требует графической среды.
@LuchS-lynx
05.04.2021 05:02 UTC
0

Ура! Наконец-то это свершилось!!!

@algotrader2013
05.04.2021 05:04 UTC
+3

Очень странная новость. Фактически, такая возможность была всегда, но внутри драйвера был фрагмент кода, делающий что-то вроде:
if gpuFamily!=GPU_FAMILY_TESLA && gpuFamily!=GPU_FAMILY_QUADDRO
Abort();
И были возможности это обойти, и тогда виртуализация с пробросом девайса целиком работала.


Сделано это было с той же целью, что и запрет на установку GeForce в датацентрах, и программная порезка 64 битной производительности. А именно, из-за жадности, чтобы бизнес клиенты не позволяли себе решать свои задачи дешево. Почему приступ жадности временно прошёл, — очень странно.

@dorne
05.04.2021 05:10 UTC
+1
Зрите в корень :-)
@v1000
05.04.2021 05:45 UTC
0

Возможно существует вероятность, что это произошло случайно, как с отключением запрета на майнинг.
А если эту функцию отключить в новом драйвере, то люди будут пользоваться старым драйвером и не обновлять его, что может принести с собой репутационные потери, особенно если там останется неисправленная критическая уязвимость. Поэтому пришлось это легализовать.

@LoadRunner
05.04.2021 06:39 UTC
+1
… решать свои задачи дешево. Почему приступ жадности временно прошёл, — очень странно.
Вы видели цены на видеокарты?
05.04.2021 06:50 UTC
+1

Видел. И датацентровое решение для ИИ собирал. И цены на карты для бизнеса, которые без вопросов встанут в энтерпрайз железо, тоже видел, вот, например, https://www.ebay.com/itm/nVIDIA-Tesla-V100-GPU-Accelerator-Card-16GB-PCI-e-Machine-Learning-AI-HPC-Volta/153223723116?hash=item23acd8786c:g:L0QAAOSwVx5byKpm

@Alex-111
05.04.2021 05:11 UTC
+1

Ждем когда будет наоборот: проброс GPU из windows в WSL, тогда с CUDA будет одни удобства.

@Ender2012
05.04.2021 06:51 UTC
+2
Дак уже с пол года есть, правда пока только в инсайдере
docs.nvidia.com/cuda/wsl-user-guide/index.html
05.04.2021 07:08 UTC
0
Судя по описанию, это не совсем проброс GPU, а, скорее, проброс API CUDA по аналогии с пробросом API OpenGL, который реализован в QEMU.
05.04.2021 07:37 UTC
+1
Да похоже так и есть. Просто очень существенная часть тех кто хочет GPU в WSL хотят ее именно из-за CUDA.
05.04.2021 07:40 UTC
+1
Это понятно. У такого подхода даже есть свои плюсы в данном юзкейзе.
В конце концов не ради же Linux native игр люди ставят WSL ).
@drWhy
05.04.2021 06:29 UTC
+1
Вопрос около темы — в какой системе виртуализации проброс устройства (в данном случае pci) осуществляется без танцев с бубном (предпочтительно Windows хост)?
Знаю, что VirtualBox поддерживает vt-d в Linux версии, ожидал обещанного появления в Windows версии, но похоже разработчики забыли реализовать.
@dorne
05.04.2021 06:38 UTC
+1
Скажу сразу, что если речь идет про видеокарты, то наибольшая вероятность успеха будет с Linux/KVM, где это работает почти из коробки.
Это работает благодаря огромному количеству патчей которые есть в ядре специально под проброс конкретных видеокарт, которые пишут энтузиасты.
Шансы получить такие патчи в проприетарных ОС/гипервизорах близки к нулю.
05.04.2021 08:16 UTC
0
Там свой слот pci для общения с железом, к тому же неполноценный, он не оформлен как устройство, никак не инициализируется, просто отвечает на определённые порты. Сейчас работает под DOS.
09.04.2021 17:19 UTC
0
Уж очень странная у вас конфигурация. Совсем не обратил внимание что у вас PCI, а не PCI-E.
Про что-то такое думал я, когда хотел древнее железо в ВМ запустить используя вот это:
eshop.sintech.cn/pcie-express-x1-to-dual-pci-riser-extender-card-usb30-cable-p-977.html
Если я правильно понял, как оно работает, то, чисто теоретически, пробросить можно целиком PCI — PCI-E мост, и, тогда все устройства на PCI шине будут «работать» внутри VM. Наверно, стоит пробовать qemu/kvm.
Все это только в теории.
09.04.2021 18:48 UTC
0
Всё равно спасибо за идею проброса всего моста.
Используется сейчас материнская плата формата mini-itx с pci-портом, старая, т.к. на всех современных pci уже реализуется также за счёт чипа моста pci-pcie, как и на переходнике.
@Loggus66
05.04.2021 16:29 UTC
0
Что нужно для проброса? Есть мобильная Quadro на ядре Kepler, но без поддержки UEFI, вшить таковую сторонними инструментами оказалось невозможно.
@dorne
05.04.2021 16:40 UTC
0
Про Quadro в сообщении NVidia говорится что ничего не изменилось. По идее и раньше как-то поддерживалось.
If you want to enable multiple virtual machines to have direct access to a single GPU or want the GPU to be able to assign virtual functions to multiple virtual machines, you will need to use NVIDIA Tesla, Quadro, or RTX enterprise GPUs

Про отсутствие UEFI, — это проблема. У меня один из пробрасываемых GPU имеет подобную проблему. К сожалению, под Windows 10 версии 19** и выше у меня запустить его не получилось. Что-то поломали в Windows при загрузке в BIOS режиме. В OVMF (UEFI BIOS для QEMU) нет поддержки CSM коробки, которая нужна, чтобы старые видеокарты работали.
Я пока использую старый адаптер (у меня 2 дискретные графики + 1 встроенная) для проброса в Linux-VM но, планирую менять при первой возможности.
Ну, еще в Windows 8.1 оно вполне успешно работает без UEFI и официальной поддержки.
@werter78
10.04.2021 14:10 UTC
+1
Всем привет.
Более 7 лет пользуем Proxmox VE в кач-ве гипервизора.
Опенсурс, удобно (веб-управление), надежно (zfs — аппаратный raid не требуется), кластеризация из коробки (ceph, glusterfs).
Автобэкапы по расписанию в комплекте (сжатие zstd). Можно прикрутить Proxmox Backup Server с инкрементными бэкапами.

Проброс pci(e)-устройств делается в вебке 2-3 кликами мыши. При поддержке вашим железом этого дела, ес-но (intel vt-d или amd iommu).

Кому интересно, вот forum.netgate.com/topic/120102/proxmox-ceph-zfs-pfsense-%D0%B8-%D0%B2%D1%81%D0%B5-%D0%B2%D1%81%D0%B5-%D0%B2%D1%81%D0%B5

Зы. Также пользуем Proxmox Mail Gateway как почтовый шлюз. Недавно зарелизился 6.4
@LuchS-lynx
14.04.2021 21:03 UTC
0

ну не в пару кликов все же осуществляется проброс, т.к. сам гипервизор нужно настроить через консоль, организовав правку конфигурационных файлов и даже grub, как для включения поддержки iommu, так и для обходп ошибки 43.
Ранее я уже выкладывал статью о пробросе в Proxmox на Хабрахабре
https://m.habr.com/ru/post/437598/

16.04.2021 06:44 UTC
+1
Ес-но, нужна поддержка vt-d\iommu железом и настройка конфигов Прокса.
Как это сделать — есть в оф. вики. После этого достаточно нес-ко кликов мышкой в вебке для проброса.

Касаемо решения Нвидиа.
Теперь не нужно больше воевать с nvidia code 43. Как минимум для настольных систем в виртуалках. С серверными может быть иначе.