Как перенаправить видеокарту в виртуальный бокс
Обновлено: 21.11.2024
Есть необходимость запуска клиентской программы в 2-х и более виндах (имеются 2 лицензионные копии, т.е. я не пытаюсь 1 акр в 2-х виндах зайти), но она наверное должна блокировать на такие манипуляции и вход в систему 2-й клиент выдает ошибку 1 (у нее уникальный код, и вообще оформление баннера).
Пробовал следующее:
Песочница (совсем не работает)
Виртуалбокс (1 клиент на ПК, другой на виртуалке. Также при входе на второй выкидывает с первого, пробовал прокси и впн, видимо дело hwid).
Нашел обходной путь, но есть проблемы, разработчику нужна видеокарта (amd, nvidia, intelhd)
Имею:
Win 10 pro технические навыки
i7-9700k (с hd630)
и базовая видеокарта
Хотелось бы узнать, есть ли способ починить intel hd630 на новом пути для запуска так клиентского софта в нескольких виндах (виртуаллоках) и как это сделать. Читал документацию по виртуалбоксу и бродил по сети, но всегда есть линукс, который мне ни в каком виде не нужен.
- 1 Как создать динамический массив для каждой итерации цикла?
- 3 Как сделать круговой индикатор выполнения?
- 2 Как бюджет перевести звонок и записать его?
- 2 Кривая Безье и скорость анимации. Как построить зависимость смены локации от времени?
- 2 Как реализовать эту схему?
- 2 Как можно использовать чужой ключ API из Карт Google?
- 3 Как отправить значения из ввода в запросе cURL в API и получить ответ?
- 1 Что делать с большим количеством заброшенных сеансов?
в VirtualBox - как. вообще. нет такой функции. ни в винде, ни в линуксе
в VMware тоже самое. ни в винде, ни в линуксе
если у тебя один контроллер - ни как. ни где, ни в винде, ни в линуксе
видео принадлежит одной ОС. если он у вас один, то после загрузки основнои оси, он принадлежит ей
Хотите хозяина (голову) и два новых пути с просроченным домиком? нужно три контроллера
но под виндой все равно - как. нет под столом Винду таких гипервизоров
пс, кстати. вы можете переадресация портов не требуется. скорее всего игра/бот, нужен какой-нибудь 3д ускоритель. а ты
неправда. Мужчина лежит сверху. Все есть, но для этого нужен ВК от AMD (Radeon). Продукты nVidia GPU passthrough в ВМ только для Quadro. С интелом не вкурсе.
С Radeonвсе отличные свойства с использованием Vbox и Windows 10
Ни за что. Это просто слово вообще. По крайней мере на десктопной винде - там ее просто нет. VB - гипервизор второго типа, там такие фичи не просто по определению, потому что он был не нужен - гипервизоры второго типа для этого не делались.
Насчет серверной винды - не знаю, может Hyper-V позволит, но нужен будет хост, чтобы поставить WinServer. Про Линукс тоже, кстати, не заблуждайтесь - все плохо и еще хуже :) Куда форсировать видеокарту надо жигу выполнять, шо пипец.
Насчет серверной винды - не знаю, может Hyper-V позволит, но нужен будет хост, чтобы поставить WinServer
Я сказал специальный выпуск WinServer Hyper-V. такое в природе существует. кстати, это бесплатно
ps но вряд ли поможет ТС. и судя по его реакции на "пс" про эмуляцию 3D, ТС просто не различал понятия "отображение" и "включить 3D ускорение". что-то, где-то слышал, в чем разница, даже пока не понял )) - прокомментировал Erna.Zulauf 01.04.20 в 16:11
@ed , Да тут я так понимаю - задача запустить в VB графический клиент, игра скорее всего выйдет под вторую учетку :) - прокомментировал Dovie60 01.04.20 в 16:14
Итак, у меня есть новый портативный компьютер (упрощенный Sager NP9170). Так как я почти все меняю в своей карьере, я подумал, что останусь при одном: я останусь с ПК с Windows (в частности, с Win 7 x64 sp1). Традиционно, когда мне нужно заниматься разработкой Linux в такой среде, я загружаю Ubuntu в VirtualBox. Обычно это работает очень хорошо. Количество глюков, с которыми мне приходится работать, очень мало по сравнению с прямой установкой Linux. В основном потому, что я не пытаюсь заставить Linux работать на множестве аппаратных средств, для которых, вероятно, отсутствует поддержка. У меня есть вся мощь Linux и вся поддержка устройств Windows, woohoo! И я могу легко заниматься разработкой Windows в то же время, двойное woohoo! Во всяком случае, кое-что изменилось с тех пор, как я в последний раз работал с этой настройкой:
- Причудливый интерфейс Unity в Ubuntu. Довольно тяжелая трехмерная среда рабочего стола, которая имеет тенденцию шататься, если у вас нет подходящего оборудования и правильных настроек Virtualbox.Optimus — это технология энергосбережения видеокарты, о которой я расскажу ниже. Пересечение этих двух новых вещей привело к тому, что мой гостевой Ubuntu довольно сильно пошатнулся после первоначальной установки. Первое, что пришло мне в голову, это дать гостю достаточно оперативной памяти, процессоров и видеопамяти с 3D-ускорением, чтобы утолить его аппетит. К счастью, на этом новом ноутбуке у меня установлено довольно много, так что хозяину есть чем поделиться. В моей конфигурации я сделал следующее изменение.
- Выделено 2 логических ядра гостевой системе Ubuntu
- Выделено 4 ГБ ОЗУ гостевой системе Ubuntu
- Видеопамять гостя увеличена до 128 МБ.
- Включено 3D-ускорение. Это немного помогло, но этого было недостаточно. Я также сделал обновление для Ubuntu, чтобы добавить все обновления с момента выпуска ISO 12.04. Это плюс установка гостевых дополнений заставило все работать в оконном режиме довольно хорошо. (Получается 3D ускорение для гостя бессмысленно без гостевых дополнений). К сожалению, Unity не обрадовалась, когда я перешел в полноэкранный режим. Почему-то ужасно медленно. Я пробовал много вещей, чтобы понять, что происходит. Я обновил драйвера Nvidia. Я установил новую виртуальную машину Ubuntu и поигрался с настройками. Я попытался найти людей с похожими проблемами. Мой гугл-фу подвел меня. Ни одна из этих вещей не помогла улучшить производительность моего VirtualBox. В конце концов я наткнулся на нечто подозрительное.
По прихоти я хотел посмотреть, не пошло ли что-то не так в настройках видеокарты хоста. Щелкнув правой кнопкой мыши на рабочем столе и выбрав «Разрешение экрана», а затем «Дополнительные параметры», я сразу заметил, что графический адаптер указан как «Intel HD Graphics 4000». Не мощная Nvidia 670M, которую я установил. Я думал, что возвращение моего ноутбука в Sager обязательно произойдет. Насколько я мог судить, по какой-то причине Nvidia, которая поставлялась с моим Sager, не работала. Я попытался удалить Nvidia из диспетчера устройств и перезагрузился, надеясь, что он «переустановится» правильно. Я попытался удалить встроенную видеокарту, что было довольно глупо. К счастью, Windows загрузилась в графическом режиме, управляемом процессором, и спасла мою задницу.
После некоторых исследований мне посчастливилось наткнуться на этот вопрос суперпользователя со скриншотом, который выглядел до жути знакомым. Что я узнал, так это то, что усовершенствованная Nvidias видеокарта для ноутбука имеет встроенное нечто под названием «Optimus». Optimus автоматически выбирает между маломощной встроенной видеокартой Intel и причудливой супер-ускоренной, но потребляющей много энергии картой Nvidia. р>
Я следил за этим видео, чтобы настроить параметры Optimuss для каждого приложения отдельно. Хитрость заключается в том, чтобы установить видеокарту, которая будет использоваться для VirtualBox. Вы также можете указать, какой графический процессор использовать, в панели управления Nvidia в разделе «Настройки 3D» -> «Управление настройками 3D». Выберите вкладку «Настройки программы» и нажмите кнопку «Добавить», чтобы добавить исполняемый файл VirtualBox. Затем под маркером 2 выберите высокопроизводительный процессор NVIDIA для VirtualBox. Как только я это сделал, теперь я получаю отличную производительность с VirtualBox в полноэкранном режиме. Подводя итог, чтобы получить идеальную производительность гостевой ОС, я выполнил все следующие шаги: Через VirtualBox Manager:
- Выделено 2 логических ядра гостевой системе Ubuntu
- Выделено 4 ГБ ОЗУ гостевой системе Ubuntu
- Увеличен объем видеопамяти до 128 МБ.
- Включено 3D-ускорение в Ubuntu Guest:
- Обновлено все гостевое ПО через Ubuntu S/W Center
- Установленные гостевые дополнения в ISO, поставляемые с VirtualBox On Host:
- Драйверы NVIDIA установлены на хосте
- В Панели управления NVIDIA установите для графического процессора VirtualBox значение NVIDIA вместо интегрированной графики.
Вуаля! У вас установлена последняя версия Ubuntu Unity, которая безупречно работает в качестве гостя в Windows!
Виртуальная коробка Oracle® VM
Руководство администратора для версии 6.0
2.5. Транзит PCI
При работе на хостах Linux с версией ядра более поздней, чем 2.6.31, доступен транзит экспериментальных хост-устройств PCI.
Модуль транзитной передачи PCI поставляется в виде пакета расширения Oracle VM VirtualBox, который необходимо устанавливать отдельно. См. раздел Установка Oracle VM VirtualBox и пакетов расширений.
Эта функция позволяет гостю напрямую использовать физические устройства PCI на хосте, даже если на хосте нет драйверов для этого конкретного устройства. Поддерживаются как обычные карты PCI, так и некоторые карты PCI Express.AGP и некоторые карты PCI Express в настоящее время не поддерживаются, если они полагаются на модульное программирование таблицы переназначения графических адресов (GART) для управления текстурами, поскольку она выполняет довольно нетривиальные операции с переназначением страниц, мешающим IOMMU. Это ограничение может быть снято в будущих версиях.
Для обеспечения полной функциональности сквозная поддержка PCI в Oracle VM VirtualBox зависит от аппаратного модуля IOMMU. Если устройство использует управление шиной, например, оно самостоятельно выполняет DMA в память ОС, тогда требуется IOMMU. В противном случае такие транзакции DMA могут выполнять запись по неправильному адресу физической памяти, поскольку механизм DMA устройства запрограммирован с использованием протокола, специфичного для устройства, для выполнения транзакций памяти. IOMMU функционирует как единица преобразования, сопоставляющая запросы на доступ к физической памяти от устройства, используя знание физического адреса гостя для правил преобразования физических адресов хоста.
Решение Intel для IOMMU называется Intel Virtualization Technology for Directed I/O (VT-d), а решение AMD — AMD-Vi. Проверьте техническое описание материнской платы для соответствующей технологии. Даже если ваше оборудование не имеет IOMMU, некоторые карты PCI могут работать, например последовательные адаптеры PCI, но гостевая система будет отображать предупреждение при загрузке, и выполнение виртуальной машины прекратится, если гостевой драйвер попытается включить управление шиной карты.< /p>
Очень часто BIOS или ОС хоста отключают IOMMU по умолчанию. Поэтому, прежде чем пытаться использовать его, убедитесь, что выполняются следующие условия:
На вашей материнской плате есть модуль IOMMU.
Ваш процессор поддерживает IOMMU.
IOMMU включен в BIOS.
Виртуальная машина должна работать с VT-x/AMD-V и включенным вложенным пейджингом.
Ваше ядро Linux было скомпилировано с поддержкой IOMMU, включая переназначение DMA. См. параметр компиляции ядра CONFIG_DMAR. Также требуется драйвер-заглушка PCI ( CONFIG_PCI_STUB ).
Ваше ядро Linux распознает и использует модуль IOMMU. Может потребоваться опция загрузки intel_iommu=on. Найдите DMAR и PCI-DMA в журнале загрузки ядра.
После того как вы убедились, что ядро хоста поддерживает IOMMU, следующим шагом будет выбор карты PCI и подключение ее к гостевой системе. Чтобы узнать список доступных устройств PCI, используйте команду lspci. Вывод будет выглядеть следующим образом:
Первый столбец — это адрес PCI в формате шина : устройство . функция . Этот адрес можно использовать для идентификации устройства для дальнейших операций. Например, чтобы подключить сетевой контроллер PCI в системе, указанной выше, ко второй шине PCI в гостевой системе в качестве устройства 5, функция 0, используйте следующую команду:
Чтобы отключить одно и то же устройство, используйте:
Обратите внимание, что и хост, и гость могут свободно назначать другой адрес PCI карте, подключенной во время выполнения, поэтому эти адреса применяются только к адресу карты в момент подключения к хосту и во время инициализации PCI в BIOS. гость.
Если к виртуальной машине подключено устройство PCI, применяются определенные ограничения:
В настоящее время поддерживаются только карты PCI с необщими прерываниями, например, использующие MSI на хосте.
Гостевое состояние нельзя надежно сохранить или восстановить. Невозможно получить внутреннее состояние карты PCI.
Телепортация, также называемая живой миграцией, не работает. Невозможно получить внутреннее состояние карты PCI.
Отсутствие ленивого выделения физической памяти. Хост предварительно выделяет всю оперативную память, необходимую для виртуальной машины, при запуске, поскольку мы не можем перехватить доступ физического оборудования к физической памяти.
Авторское право © 2004, 2020 Oracle и/или ее дочерние компании. Все права защищены. Официальные уведомления
Проход через PCI позволяет использовать физическое устройство PCI (видеокарту, сетевую карту) внутри виртуальной машины (только для виртуализации KVM).
Если вы используете "прохождение PCI" для устройства, оно больше не будет доступно для хоста.
Проход через PCI — это экспериментальная функция Proxmox VE! ВМ со сквозными устройствами нельзя мигрировать.
Включить IOMMU
Вам необходимо включить IOMMU, отредактировав командную строку ядра.
Сначала откройте файл конфигурации командной строки ядра загрузчика.
Найдите строку с "GRUB_CMDLINE_LINUX_DEFAULT"
Для системной загрузки:
Его формат представляет собой одну строку с параметрами. Вы можете создать файл для systemd-boot, если он отсутствует.
ЦП Intel
Для процессоров Intel добавить
Если вы используете GRUB:
Затем сохраните изменения и обновите grub:
системная загрузка
Если вы используете systemd-boot, добавьте следующее в конце первой строки:
Затем сохраните изменения и обновите systemd-boot:
ЦП AMD
Для процессоров AMD добавить
Если вы используете GRUB:
Затем сохраните изменения и обновите grub:
системная загрузка
Если вы используете systemd-boot, добавьте следующее в конце первой строки:
Затем сохраните изменения и обновите systemd-boot:
Убедитесь, что IOMMU включен
Перезагрузитесь, затем запустите:
Должна быть строка, похожая на "DMAR: IOMMU включен". Если вывода нет, что-то не так.
Режим PT
И чипы Intel, и AMD могут использовать дополнительный параметр "iommu=pt", добавляемый таким же образом, как и выше, в командную строку ядра.
Это включает преобразование IOMMU только при необходимости, адаптеру не нужно использовать преобразование DMA в память, что может повысить производительность для устройств PCIe гипервизора (которые не передаются на виртуальную машину)
Необходимые модули
добавить в /etc/modules
Обратите внимание, что в ядрах на основе 5.4 некоторые из этих модулей уже встроены непосредственно в ядро.
Переназначение прерываний IOMMU
Невозможно использовать транзитную передачу PCI без переназначения прерываний. Назначение устройства завершится ошибкой с сообщением «Не удалось назначить устройство «[имя устройства]»: операция не разрешена или «Оборудование для переназначения прерываний не найдено, передача устройств в непривилегированные домены небезопасна». ошибка.
Все системы с процессором и набором микросхем Intel, поддерживающие технологию виртуализации Intel для направленного ввода-вывода (VT-d), но не поддерживающие переназначение прерываний, увидят такую ошибку. Поддержка переназначения прерываний предоставляется в новых процессорах и наборах микросхем (как AMD, так и Intel).
Чтобы определить, поддерживает ли ваша система переназначение прерываний:
Если вы видите одну из следующих строк:
- "AMD-Vi: включено переназначение прерываний"
- "DMAR-IR: включено переназначение IRQ в режиме x2apic" ("x2apic" может отличаться на старых процессорах, но все равно должно работать)
тогда переназначение поддерживается.
Если ваша система не поддерживает переназначение прерываний, вы можете разрешить небезопасные прерывания с помощью:
Проверить изоляцию IOMMU
Для работы транзитной передачи PCI вам потребуется выделенная группа IOMMU для всех устройств PCI, которые вы хотите назначить виртуальной машине.
У вас должно быть что-то вроде:
Чтобы иметь отдельные группы IOMMU, ваш процессор должен поддерживать функцию под названием ACS (службы контроля доступа). Убедитесь, что вы включили соответствующий параметр в BIOS для этого.
Все процессоры Xeon поддерживают их (E3,E5), кроме Xeon E3-1200.
Чипы AMD от Ryzen 1-го поколения и новее тоже подходят.
Если у вас нет выделенных групп IOMMU, вы можете попробовать:
1) перенос карты в другой слот PCI
2) добавление «pcie_acs_override=downstream» в параметры командной строки загрузки ядра (grub или systemd-boot), которые могут помочь при некоторых настройках с плохой реализацией ACS.
Определите адрес карты PCI и настройте виртуальную машину
Самый простой способ – использовать графический интерфейс для добавления устройства типа "Host PCI" на вкладке "Оборудование" ВМ.
В качестве альтернативы вы можете использовать командную строку:
Найдите свою карту с помощью "lspci". Адрес должен быть в формате: 01:00.0 Отредактируйте файл .conf. Его можно найти по адресу: /etc/pve/qemu-server/vmid.conf.
Добавьте эту строку в конец файла:
Если у вас есть многофункциональное устройство (например, карта VGA со встроенным аудиочипсетом), вы можете передать все функции вручную с помощью:
или, чтобы передать все функции автоматически:
Проход через PCI Express
Установите флажок "PCI-E" в графическом интерфейсе при добавлении устройства или вручную добавьте параметр pcie=1 в конфигурацию виртуальной машины:
Проход через PCIe поддерживается только на компьютерах Q35.
Обратите внимание, что это не означает, что устройства, назначенные без этого параметра, будут иметь только скорости PCI, он просто устанавливает флаг для гостя, чтобы сообщить ему, что устройство является устройством PCIe, а не «действительно быстрым устаревшим устройством PCI». . Некоторые гостевые приложения выигрывают от этого.
Пропуск через GPU
Для начала часто бывает полезно, если хост не пытается использовать графический процессор, что позволяет избежать проблем с отвязкой и повторной привязкой драйвера хоста к устройству. Иногда также полезно убедиться, что сообщения POST BIOS хоста отображаются на другом графическом процессоре. Иногда это можно сделать с помощью настроек BIOS, переместив карту в другой слот или включив/отключив поддержку устаревшей загрузки.
Сначала найдите идентификатор устройства и поставщика вашей видеокарты:
Поэтому идентификаторы поставщика:устройства для этого графического процессора и его аудиофункций 10de:1381, 10de:0fbc.
Затем создайте файл:
черный список водителей:
и перезагрузите компьютер.
Для конфигурации виртуальной машины возможны 4 конфигурации:
GPU OVMF PCI Passthrough (рекомендуется)
Выберите «OVMF» в качестве «BIOS» для вашей виртуальной машины вместо «SeaBIOS» по умолчанию. Вам необходимо установить гостевую ОС с поддержкой uefi. (для Windows попробуйте win >=8)
Используя OVMF, вы также можете добавить disable_vga=1 к модулю vfio-pci, который попытается по возможности отключить устройства от арбитража vga:
GPU OVMF PCI Express Passthrough
То же, что и выше, но установите тип машины q35 и включите pcie=1:
ГП Seabios PCI Passthrough
ГП Seabios PCI Express Passthrough
Как узнать, совместима ли видеокарта с UEFI (OVMF)
Получить и скомпилировать программу "rom-parser":
Затем сбросьте ПЗУ вашей vga-карты:
и протестируйте его с помощью:
Вывод должен выглядеть следующим образом:
Чтобы быть совместимым с UEFI, вам нужен "тип 3" в результате.
Советы NVIDIA
Некоторые приложения Windows, такие как geforce experience, Passmark Performance Test и сбой SiSoftware Sandra, могут вызвать сбой виртуальной машины. Вам нужно добавить:
Если вы видите много предупреждающих сообщений в системном журнале dmesg, вместо этого добавьте следующее:
Пользователь сообщил, что графическим процессорам NVIDIA Kepler K80 это необходимо в vmid.conf:
Опция "romfile"
Некоторые материнские платы по умолчанию не могут использовать GPU в первом слоте PCI(e), потому что их vbios затеняется во время загрузки. Вам нужно захватить его vBIOS, когда он работает «нормально» (т. е. установлен в другом слоте), затем вы можете переместить карту в слот 1 и запустить виртуальную машину, используя дамп vBIOS.
Чтобы сбросить биос:
Затем вы можете передать файл vbios (должен находиться в /usr/share/kvm/) с помощью:
Устранение неполадок
BAR 3: не удается зарезервировать ошибку [mem]
Если у вас возникает эта ошибка при попытке использовать карту для виртуальной машины:
вы можете попробовать добавить следующий параметр командной строки ядра:
СПАЙС
Spice может создавать проблемы при прохождении через графический процессор, поскольку он предоставляет гостю «виртуальную» графическую карту PCI, и у некоторых драйверов возникают проблемы с этим, даже когда отображаются обе карты. Всегда стоит попробовать отключить SPICE и снова проверить, если что-то не работает.
Аудио HDMI потрескивает/не работает
Для правильной работы некоторых цифровых аудиоустройств (обычно добавляемых с помощью функций графического процессора) может потребоваться включение MSI (прерывания, сигнализируемые сообщениями). Если у вас возникли проблемы, попробуйте изменить настройки MSI в гостевой системе и перезагрузить ее.
Гости Linux обычно включают MSI самостоятельно. Чтобы принудительно использовать MSI для аудиоустройств GPU, используйте следующую команду и перезагрузитесь:
Используйте «lspci -vv» и проверьте наличие следующей строки на вашем устройстве, чтобы узнать, включен ли MSI:
Если указано «Включить+», MSI работает, «Включить-» означает, что он поддерживается, но отключен, а если строка отсутствует, MSI не поддерживается оборудованием PCIe.
Потенциально это также может повысить производительность других устройств сквозного доступа, включая графические процессоры, но это зависит от используемого оборудования.
Параметры BIOS
Убедитесь, что вы используете самую последнюю версию BIOS для своей материнской платы. Часто в более поздних версиях улучшены группы IOMMU или сквозная поддержка в целом.
Некоторые общие параметры BIOS, которые, возможно, потребуется изменить, чтобы разрешить сквозную передачу:
- IOMMU или VT-d: установите значение «Включено» или эквивалентное, часто «Авто» не совпадает.
- "Устаревшая загрузка" или CSM: для сквозной загрузки GPU может помочь отключить это, но имейте в виду, что PVE должен быть установлен в режиме UEFI, так как без этого он не будет загружаться в режиме BIOS. Причина отключения этого заключается в том, что он позволяет избежать устаревшей инициализации VGA установленных графических процессоров, что позволяет повторно инициализировать их позже, как это требуется для сквозной передачи. Наиболее полезно при попытке использовать сквозную передачу в системах с одним GPU.
- «Изменяемый размер BAR»/«Smart Access Memory»: некоторые графические процессоры AMD (Vega и более поздние версии) сталкиваются с «Кодом 43» в гостевых системах Windows, если это включено на хосте. В любом случае он не поддерживается на виртуальных машинах (пока), поэтому рекомендуется отключить его.
Проверка работы
ПРИМЕЧАНИЕ. Поддержка карты может быть ограничена 2 или 3 устройствами.
ПРИМЕЧАНИЕ. Устройство PCI можно подключить только к одной виртуальной машине.
ПРИМЕЧАНИЕ. Этот процесс удалит карту из операционной системы хоста proxmox, пока работает виртуальная машина, к которой она подключена.
Проход через USB
Если вам нужно передать USB-устройства (клавиатуру, мышь), следуйте этой статье вики:
Читайте также: