Виртуальная машина как сделать видеокарту
Я пытаюсь установить различные виртуальные машины на виртуальных машинах. Oracle VirtualBox имеет некоторые ограниченные параметры графики виртуальной машины, и я не могу выбрать, какую видеокарту имитировать. При установке ОС на виртуальную машину она автоматически определяется как стандартная VGA. Я могу вручную заставить ОС использовать общий драйвер SVGA, который работает, но все еще имеет довольно ограниченные режимы: 1024x768 с 256 цветами и 800x600 с 16k цветов. Но какой графический адаптер он действительно эмулирует?
Вы можете выделить до 128 МБ памяти, тогда как SVGA использует больше 1 МБ (если вы не используете смехотворно большой виртуальный виртуальный дисплей или множество виртуальных мониторов). Я мог бы попытаться угадать, какой драйвер использовать, но выбор огромен - по нескольким маркам и множеству моделей.
Итак . могу ли я как-то выбрать какую видеокарту подражать? Или, если нет, какой из них он эмулирует (или совместим), и, следовательно, какой драйвер я могу использовать лучше, чем SVGA?
РЕДАКТИРОВАТЬ
Я пытаюсь запустить Windows 98 на виртуальной машине. Он автоматически определяет VGA, но позволяет переопределить его, выбрав один из сотен драйверов. Лучший общий - это SVGA, но этого недостаточно. Я знаю, что более новые системы, Linux или Windows, могут автоматически определять его и эффективно его использовать.
Механизм проброса видеокарты на английском называется passthrough. Технология лет 7 существует, но до сих пор проще поставить системы параллельно. Поддержка метода развивается очень медленно и существует очень много ограничений. Я собрал и выложил теоретическую информацию которую смог найти. Пробросить свою видеокарту мне не удалось из-за отсутствия аппаратной поддержки.
Для проброса видеокарты с хоста в виртуальную машину VirtualBox нужно:
- Поддержка процессором или чипсетом материнской платы виртуализации VT-d (Intel Virtualization Technology for Directed I/O) или IOMMU у AMD.
- Поддержка видеокартой passtrough. Для старых видеокарт Nvidia заявлялось, что поддерживается линейками Quadro и Tesla. Попадается информация, что можно пробросить GTX 1050. Некоторые видеокарты можно патчить чтобы они видились как поддерживаемые. Для видеокарт AMD обозначают более широкую поддержку оборудования, но нужно проверять. В сети встречаются списки устройств которые удается пробросить, но единого перечня нет. На сайтах производителей GPU точной информации тоже нет.
- Вторая видеокарта. Одна будет работать на хосте, а вторая в ВМ (на хосте ее нельзя будет использовать).
- Виртуальная машина 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 к реальной видеокарте?
Видел года 3 назад как на проброшенной видеокарте запускали первый crysis
Что-то я там ничего на тему проброса видеокарты не вижу.
И, честно, говоря, я даже представить себе не могу, как это возможно с одной видеокартой - как уже отмечали, хосту ничего не останется.Ткните конкретнее.
И лично Вы это делали?
п.9.6 PCI passthrough
akorop
И, честно, говоря, я даже представить себе не могу, как это возможно с одной видеокартой - как уже отмечали, хосту ничего не останется.Ткните конкретнее.
Читайте также: