Виртуальная машина как сделать видеокарту

Обновлено: 04.07.2024

Я пытаюсь установить различные виртуальные машины на виртуальных машинах. Oracle VirtualBox имеет некоторые ограниченные параметры графики виртуальной машины, и я не могу выбрать, какую видеокарту имитировать. При установке ОС на виртуальную машину она автоматически определяется как стандартная VGA. Я могу вручную заставить ОС использовать общий драйвер SVGA, который работает, но все еще имеет довольно ограниченные режимы: 1024x768 с 256 цветами и 800x600 с 16k цветов. Но какой графический адаптер он действительно эмулирует?

Вы можете выделить до 128 МБ памяти, тогда как SVGA использует больше 1 МБ (если вы не используете смехотворно большой виртуальный виртуальный дисплей или множество виртуальных мониторов). Я мог бы попытаться угадать, какой драйвер использовать, но выбор огромен - по нескольким маркам и множеству моделей.

Итак . могу ли я как-то выбрать какую видеокарту подражать? Или, если нет, какой из них он эмулирует (или совместим), и, следовательно, какой драйвер я могу использовать лучше, чем SVGA?

РЕДАКТИРОВАТЬ

Я пытаюсь запустить Windows 98 на виртуальной машине. Он автоматически определяет VGA, но позволяет переопределить его, выбрав один из сотен драйверов. Лучший общий - это SVGA, но этого недостаточно. Я знаю, что более новые системы, Linux или Windows, могут автоматически определять его и эффективно его использовать.

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

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

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

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

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

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

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

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

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

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

Данная статья написана нашим читателем Lord_Alfred и выложена к нам чуть измененной копией с его блога.

Вся эта статья целиком и полностью описывает мой многострадальческий опыт в попытках (в итоге, к счастью, успешный) пробросить видеокарту в убунту и установить там драйверы nvidia и cuda toolkit. Я потратил несколько дней и несчетное количество переустановок ubuntu, пока набросал для себя некоторый “план” по установке с описанием и ссылками откуда была взята информация. Специально для тех, кто решит сделать тоже самое (или просто захочет поставить драйвера для gtx на убунте) — я переписал всё в читаемый вид и опубликовал эту статью, чтобы вы смогли потратить не 3 дня на это, а всего лишь несколько часов. Для удобства — ссылки на источники отмечены квадратными скобками, поэтому если у вас что-то пойдет “не так”, то вы сможете посмотреть откуда я взял ту или иную команду.

Предварительная настройка vSphere ESXi 6.5

Установка Ubuntu Desktop 16.04 и настройка проброса видеокарты

Установка CUDA Toolkit 9.1 (вместе с драйвером nVidia) на Ubuntu 16.04

Конечно, частично этот раздел должен включать в себя и некоторые действия из предыдущего, но для упрощения и уменьшения количества шагов — все написано так, как написано 🙂

Проверка корректности установки драйвера и CUDA Toolkit

После перезагрузки и входа в пользователя необходимо проверить корректность установки драйверов и тулкита, т.к. если где-то что-то пошло не так и вы этого не заметили (или это каким-либо образом не отобразилось) — всё насмарку.

Открываем терминал и выполняем следующие шаги [15]:

Если в результате всё прошло без ошибок — можно считать, что всё успешно установлено и вам далее можно пользоваться этой виртуальной машиной с видеокартой как душе угодно 🙂 Но есть пару тонких моментов, которые я решил выделить в несколько отдельных разделов.

Изменение разрешения экрана в Ubuntu для ESXi 6.5

Естественно, работать через VMRC с разрешением (screen resolution) 800х600 крайне некомфортно, а в настройке экранов в убунту (Параметры системыНастройка экрановРазрешение) максимальное возможное значение всего 1360×768, что тоже по нынешним меркам очень мало.

Для того, чтобы поставить другое разрешение в гостевой ОС Ubuntu для хоста VMware vSphere ESXi 6.5 нужно проделать следующие действия:

После включения виртуальной машины в настройках экрана можно будет выбрать разрешение больше, чем до этого было возможно. Данный способ подойдет и просто для OS Ubuntu, которая установлена виртуальной машиной в ESXi — не обязательно пробрасывать видеокарту (хотя вся инструкция же об этом).

Для моего iMac 27 дюймов с разрешением в macOS в 4K — комфортнее всего ставить в убунту разрешение экрана равное 1600х1200 (4:3) для сеанса работы через VMRC.

PS: если использовать подключение через VNC — это тоже важно, там тоже будет то разрешение, которое установлено в ОС (а не автоматическое изменение в момент входа как это работает в RDP в Windows — и это очень грустно, что нет аналогичной функции или я просто о ней не знаю).

Вывод изображения с GPU на монитор из Ubuntu для хоста ESXi 6.5

Возвращаясь опять к вопросу вывода экрана с GPU на монитор в убунте [18] — нужно произвести некоторые шаги:

Но! Здесь, в конце, следует предостеречь вас от одной досадной оплошности. При использовании вывода изображения через видео-карту на монитор — VMRC и простая консоль в ESXi не будут работать — то есть теперь там не будет изображения с гостевой ОС (будет просто черный экран).

К тому же, взаимодействие с ОС будет происходить через мышь и клавиатуру, через которые вы работаете в VMRC, поэтому скорее всего предварительно — нужно позаботиться о том, чтоб прокинуть во внутрь Ubuntu клавиатуру и мышь, которые подключены непосредственно к серверу с ESXi.

Выводы

Установить драйвера nvidia для видеокарты под Ubuntu, да и ещё если она является виртуалкой — не тривиальная задача. К счастью, большинство вопросов уже были на стековерфлоу и форуме разработчиков nvidia, поэтому гугл спас всю затею. Конечно, если бы я в итоге отказался от использования гипервизора (и просто поставил бы хостом Ubuntu, а из неё бы гостем грузил Windows), то попал бы в такую же западню, но чуть проще. Не знаю почему большинство моментов не учтено в самом инсталляторе, т.к. даже если просто ставить драйвера прямиком из GUI убунты, то можно словить “login loop” (когда падают Иксы и не дают залогиниться в систему — у меня было такое в одну из первых попыток).

Большинство вещей описано в “nVidia CUDA Installation Guide for Linux” [4], но кто в наше время читает 50 страничные мануалы перед установкой? 🙂 Но даже если его прочитать “от корки до корки”, то некоторые моменты вызовут сомнения и захочется попробовать установить тулкит без удаления свежего ядра и установки старого.

Источники

Проброс видеокарты NVIDIA GTX в виртуальную машину с Ubuntu для ESXi: 3 комментария

Третью неделю бьюсь с этим мануалом ( все версии софта соответствуют инструкции. Карта Gt1030, ESXI 6.5, Ubuntu 16.4 )
Всегда одно и то же — в логе инстала nvidia лезет такая гадость
( хотя CUDA при инстале ошибок не выкидывает — все ОК )

340.252028] nvidia: loading out-of-tree module taints kernel.
[ 340.252037] nvidia: module license ‘NVIDIA’ taints kernel.
[ 340.252038] Disabling lock debugging due to kernel taint
[ 340.263258] nvidia: module verification failed: signature and/or required key missing — tainting kernel
……
[ 340.283001] [drm] [nvidia-drm] [GPU ID 0x00000b00] Loading driver
[ 340.284999] [drm] [nvidia-drm] [GPU ID 0x00000b00] Unloading driver
[ 340.305204] nvidia-modeset: Unloading
[ 340.316871] nvidia-uvm: Unloaded the UVM driver in 8 mode
[ 340.328584] nvidia-nvlink: Unregistered the Nvlink Core, major device number 247
-> Installing both new and classic TLS OpenGL libraries.
…..
и естественно nvidia-smi ябедничеает что дивайс не найден.

Можно ли получить доступ из виртуальной машины Windows 7 к реальной видеокарте?

indeviral avatar

indeviral avatar

Видел года 3 назад как на проброшенной видеокарте запускали первый crysis

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

indeviral avatar

п.9.6 PCI passthrough

akorop
И, честно, говоря, я даже представить себе не могу, как это возможно с одной видеокартой - как уже отмечали, хосту ничего не останется.Ткните конкретнее.

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