Виртуал бокс не видит видеокарту

Обновлено: 06.07.2024

Механизм проброса видеокарты на английском называется 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 и чипсета (если есть).

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

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)

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

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

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

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

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

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

В Панели управления NVIDIA я явно выбрал высокопроизводительный процессор NVIDIA для:

Когда VirtualBox работает, программное обеспечение NVidia не отображает его как приложение, использующее графический процессор NVidia. Поэтому я предполагаю, что VirtualBox действительно не использует графический процессор Nvidia.

Windows 7 x64 (то же самое, что и хост)

Гостевые дополнения установлены

3D-ускорение включено в настройках VirtualBox: Дисплей / Видео / Включить 3D-ускорение

Что Rhinoceros , приложение с поддержкой OpenGL, сообщает как видеоадаптер:

Мне кажется, что виртуальная машина использует аппаратное ускорение 3D хоста, но, к сожалению, Intel.

@ernie VirtualBox может предоставить гостям прямой доступ к API OpenGL графического процессора хоста. Насколько я могу сказать, что работает на моей машине. Только VirtualBox использует графический процессор Intel вместо графического процессора NVidia. Цитата из руководства VirtualBox : «С этой функцией, если приложение внутри вашей виртуальной машины использует 3D-функции через программные интерфейсы OpenGL или Direct3D 8/9, вместо того, чтобы эмулировать их в программном обеспечении (что будет медленным), VirtualBox попытается использовать 3D-оборудование вашего хоста. " @feklee Название вопроса вводит в заблуждение: вы хотите использовать графический процессор nVidia для VBox. «От» также возможно, но означает что-то другое: аппаратное обеспечение, т.е. Доступ к графическому процессору хоста напрямую из VBox.

Я понимаю, что прошло несколько лет, но я хотел ответить, так как этот пост показывается довольно высоко, когда вы используете Google для «virtualbox 3d множественный GPU». За прошедшее время все стало намного проще и лучше.

Люди, которые натыкаются на этот поток, скорее всего, окажутся здесь, потому что у них есть ноутбук или ПК с двумя графическими процессорами, что довольно распространено в наши дни, особенно на игровых ноутбуках. Встроенный графический процессор Intel используется для рендеринга окон и обычных приложений, но приложения, использующие 3D-функциональность графического процессора, должны делать это с помощью высокопроизводительного графического процессора Nvidia.

Сегодня я собирал виртуальную машину Ubuntu на своем ноутбуке для кроссплатформенной разработки, и все было хорошо, за исключением того, что гостевая виртуальная машина была очень медленной, и этому не было никакого объяснения, потому что процессор, память и диск демонстрировали низкую загрузку.

Не потребовалось много времени, чтобы понять, что именно видео было причиной проблемы. Запуск приложений, максимизация / минимизация окон - все, что мы считаем само собой разумеющимся в 2019 году, но нуждающееся в 3D-ускорении для работы на любой разумной скорости - использовало графический процессор 0.

Это было легко определить, потому что Windows 10 теперь может видеть использование графического процессора с помощью «диспетчера задач», а затем вкладки «производительность». И я мог видеть, как я двигал окна, развернул, свернул, что это было сделано через GPU на хосте. Этот графический процессор на хосте является встроенным Intel HD GPU, и я хотел использовать NVidia GTX-1050ti, который был GPU1.

После поисков я не нашел нигде, где можно было бы указать, какой графический процессор использовать. Но эта ветка и некоторые другие напомнили мне, что при таких настройках нужно перейти в панель управления NVidia, затем «управлять настройками 3d», а затем вкладка «Настройки программы».

Вы вряд ли найдете «Virtualbox» в списке. Но вы можете нажать кнопку «Добавить» и добавить virtualbox.exe. Возможно, вам придется детализировать диск / путь, где находится ваша установка Virtualbox. После того, как вы добавили его, в настройках ниже убедитесь, что пункт 2. «Выберите предпочтительный графический процессор для этой программы» установлен на графический процессор, который вы хотите использовать, который в моем случае был «Высокопроизводительный процессор NVIDIA» ,

Не устанавливайте его в автоматический режим и, конечно, не устанавливайте его в интегрированный режим. Конечно, вам нужно, чтобы настройки виртуальной машины были установлены с установленным флажком 3D-ускорения, и вам необходимо установить гостевые дополнения на хосте. Но после того, как вы установили параметры 3d видео для хоста, как описано выше, выключите гостевую виртуальную машину, выйдите из виртуальной коробки, а затем перезапустите virtualbox и виртуальную машину.

Если вы используете диспетчер задач | performancemacne и посмотрите на процесс «менеджер виртуальных ящиков» и посмотрите, какой графический процессор используется при навигации по интерфейсу гостевой виртуальной машины, вы должны увидеть его, используя лучший графический процессор сейчас. Смотрите изображение, вставленное ниже.

Все это говорит, не ожидайте, что сможете запускать игры в гостевой виртуальной машине. Проход 3D ускорения до сих пор не так уж далеко впереди. Но вы можете ожидать, что у вас в гостях будет современная ОС и пользовательский интерфейс, и у вас будет приемлемый опыт. Можно было бы играть в более старые игры на гостевой виртуальной машине, как и все, что основано на DirectX9. К сожалению, по мере развития возможности виртуализации графических процессоров технология 3D-игр развивается быстрее.

Собрал на генту virtualbox по рукокниге, установил на нее винду, но видеокарта не определилась.

Насколько я знаю, в virtual box нельзя пробрасывать видеокарту. Обычно для этого используют qemu.

x11-drivers/xf86-video-virtualbox — драйвера для линуксовых гостей, т.е. если бы ты установил в вбоксе генту, то нужно было в этой гостевой генте ставить эти дрова.

Это не для виндовых гостей.

В твоём хостовом make.conf не должно быть VIDEO_CARDS=" . virtualbox" .

ставя вбокс должно было установится app-emulation/virtualbox-additions , это диск который подключаешь после уставки винды, там есть некая программка, которая дает минимальное видеоускорение для виндовых гостей.

Если ты хочешь полноценно пробрасывать видеокарту в виртуальную машину, то вбокс так не умеет, нужно ставить qemu и пробрасывать отдельную от хостовой видеокарту, т.е. видеокарты физически на плате должны быть две, например интеграшка + PCI, пробрасывать соотв. PCI и наблюдать картинку на отдельном мониторе.

Убрал. Так как завести драйвера в гостевой винде?

какие драйвера? Нет никаких драйверов, максимум это установить демон вбокса из additions, который слегка ускорит видео, но это максимум.

наблюдать картинку на отдельном мониторе.

Безвторого монитора это как-то можно реализовать ?


Монитор с двумя входами.

Можно, например если у тебя на твоем мониторе два входа, например хостовая видеокарта подключена через DVI, в проброшенная через HDMI и ты просто переключаешь режимы через хардварные кнопки на мониторе, но в таком случае ты видишь либо хост либо гость, это не очень удобно.

Еще есть вот такой адский костыль, читай.

Онли ноутбук под рукой. Хочу использовать visual studio без дуалбута, по этому остановился на виртуалке.

Пожалуй, попробую костылем. Это единственный вариант. Благодарю.

На ноутбуке ты ничего не пробросишь и костыль тебе этот не поможет, пробрасываются только отдельные PCI устройства разведенные по iommu-группам, а в ноуте как правило всё в одной каше.

Ты бы сразу сказал, что ноут.

А чем тебя не устраивает virtualbox + установленное ускорение с additions? Тебе для студии должно этого хватить с головой.

Разрешение 1024*768 не устраивает и периодические подлагивания. Изменить его нельзя.

Ты что-то не то установил или недоустановил, разрешение ты можешь поставить любое в машине.

radiobuttonы с выбором разрешения в состоянии disable.


Ставишь дополнения гостю, разворачиваешь окно виртуалки на весь экран. Система на виртуалке сама подстроит разрешение экрана на нужное.

Проверяем BIOS ./rom-parser image.rom
Если вы видите подобное PCIR: type 3(EFI ROM), то ваша видеокарта поддерживает OVMF.
Ваш конфиг виртуалки будет немножко отличаться.

1. Устанавливаем необходимый софт pacman -S qemu libvirt synergy
2. Нужно подкорректировать загрузку ядра, что бы не подцеплялась, наша видеокарта которую мы будем прокидывать. Нужно узнать id вендора и кода нашей видеокарты. Для этого выводим lspci Находим там код видеокарты, запоминаем его, и вводим уже lspci -n Теперь правим параметры загрузки grub, для этого открываем /etc/default/grub
и добавляем параметр в GRUB_CMDLINE_LINUX_DEFAULT vfio-pci.ids=10de:11c6,10de:0e0b
У меня следующего вида
Применяем параметры grub-mkconfig -o /boot/grub/grub.cfg , после перезагрузки, должно быть нечто подобное dmesg | grep vfio_pci :
Подкорректируем /etc/mkinitcpio.conf:
Применим mkinitcpio -p linux (linux изменить на имя вашего ядра)

3. После окончания установки, настало время прокинуть видеокарту.
Раскоментируем строку в конфиге
и запустим виртуалку.

Если все прошло хорошо, должно определиться новое устройство, скачиваем и устанавливаем драйвера для видеокарты, я не ставил никакого лишнего софта, только драйвера, пишут что Catalyst control center да и nvidia experience загоняет в синий экран, не проверял.

Нужно не забыть установить synergy, без этой программы управление(мышкой и клавиатурой) виртуалкой будет невозможно.
Найдете ее на торрентах или прочих сайтах, там в настройках надо указать client: 10.0.2.2(дефолтный ip хоста) и имя экрана, допустим Windows. Теперь настроим synergy на хосте(компьютер с Linux), создадим конфиг следующего содержания:
synergy.conf
Windows и Linux это имена экранов, измените на ваши
Запустим synergy synergys --config synergy.conf --debug INFO , и при передвижение мышки за левую часть экрана, она должна переходить на виртуалку.
Если все получилось, выключаем виртуальную машину, в конфиге меняем строку -vga std на -vga none , подключаем к выходу проброшенной видеокарты кабель к монитору, запускаем виртуалку и у нас на экране должна появится картинка с процессом загрузки. Проверяем функциональность synergy, кнопка F12 блокирует курсор на текущем экране.


Выклаываю полный скрипт запуска виртуалки
Так же рекомендую отключить запрос на восстановление системы при загрузке после сбоев
В данную тему я нырнул лишь ради интереса и возможности поиграть в ММО Black Desert, отлично кстати работает.

UPD 01.06.2019
Обновил компьютер до Ryzen и столкнулся с проблемой
Подробности здесь AMD Ryzen и проблемы с пробросом видеокарты в QEMU KVM

UPD 15.09.2019
После очередного обновления начались неприятности, qemu падал в core-dump при попытке издать малейший звук, решилась эта проблема добавлением строки
1000 — id вашего юзера, все переменные QEMU_AUDIO можно убрать.

Если будет писать что нет доступа

Можно скопировать пользовательские cookie в root
На 15.09 проблема с Ryzen еще присутствует, приходится патчить ядро.

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