Как в Linux пробросить видеокарту с хоста в гостевую виртуальную машину VirtualBox

Механизм проброса видеокарты на английском называется passthrough. Технология лет 7 существует, но до сих пор проще поставить системы параллельно. Поддержка метода развивается очень медленно и существует очень много ограничений. Я собрал и выложил теоретическую информацию которую смог найти. Пробросить свою видеокарту мне не удалось из-за отсутствия аппаратной поддержки.

Для проброса видеокарты с хоста в виртуальную машину VirtualBox нужно:

  1. Поддержка процессором или чипсетом материнской платы виртуализации VT-d (Intel Virtualization Technology for Directed I/O) или IOMMU у AMD.
  2. Поддержка видеокартой passtrough. Для старых видеокарт Nvidia заявлялось, что поддерживается линейками Quadro и Tesla. Попадается информация, что можно пробросить GTX 1050. Некоторые видеокарты можно патчить чтобы они видились как поддерживаемые. Для видеокарт AMD обозначают более широкую поддержку оборудования, но нужно проверять. В сети встречаются списки устройств которые удается пробросить, но единого перечня нет. На сайтах производителей GPU точной информации тоже нет.
  3. Вторая видеокарта. Одна будет работать на хосте, а вторая в ВМ (на хосте ее нельзя будет использовать).
  4. Виртуальная машина VirtualBox с включенной виртуализацией и установленной операционной системой 🙂

Перед пробросом нужно в BIOS хоста включить виртуализацию в настройках CPU и чипсета (если есть).

Для самого проброса потребуется произвести следующие действия:

  1. Узнать где на шине физически стоит требуемая видеокарта. В терминале вводим команду “lspci” и смотрим перечень устройств находящихся на PCI шинах. У меня две видеокарты расположены на 00:02.0 и 01:00.0.

00:02.0 Display controller: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor Integrated Graphics Controller (rev 06)

01:00.0 VGA compatible controller: NVIDIA Corporation GK208B [GeForce GT 710] (rev a1)

2. Пробросить видеокарту в виртуальную машину. Где NameVM – имя виртуальной машины, а 01:00.0 – расположение пробрасываемой видеокарты:

VBoxManage modifyvm “NameVM” –pciattach 01:00.0@01:05.0

Для отсоединения видеокарты нужно использовать команду:

VBoxManage modifyvm “NameVM” –pcidetach 01:00.0

Если вы хотите пробросить одну видеокарту, то вторую вам нужно в BIOS выбрать как основную. Иначе система не сможет пробросить в ВМ основную видеокарту и выведет ошибку доступа.

У меня пробросить не получилось в виду отсутствия у процессора поддержки инструкций VT-d. Встроенная видеокарта от Intel пробрасывалась, но должным образом не работала в виртуальной машине (ошибка 034). А проброс внешней Nvidia приводил к тому, что виртуальная машина отказывалась стартовать. Даже если бы она пробросилась – скорее всего не работала бы в виду ограничений от Nvidia.

Смотрел также в сторону VMWare Workstation – не поддерживает проброс. Поддерживают ESXi и vSphere, но не вижу смысла заморачиваться если можно пробросить в VirtualBox. В нем это делается гораздо проще, но нужно иметь подходящее железо.

Возможно, что вам понадобится еще включить IOMMU в ядре.

В /etc/default/grub заменить

GRUB_CMDLINE_LINUX=””

На

GRUB_CMDLINE_LINUX=”intel_iommu=on”

После чего выполнить в терминале

sudo update-grub

Возможно, что также будет нужно отключить использование системой пробрасываемой видеокарты, но у некоторых работает и без этого.

Поделиться:

Читайте также: