LINUX.ORG.RU

Проброс видеокарты

 , , , ,


2

2

Имею внешнюю (нвидиа) и интегрированную (интел) видеокарту на стационарном персональном компьютере. Как можно пробросить в виртуальную машину одну из них? Что для этого нужно?

IOMMU vt-d в проце и матплате, их модели озвучь.

anonymous
()

Привет!

Монитор
   |
   |
   |
   |
 Intel ------ NVIDIA

Чип NVIDIA не имеет прямого соединения с монитором. Он сначала пробрасывает картинку на Intel (с помощью технологии DMA-BUF), а потом Intel выводит её на монитор.

Если пробросить NVIDIA в виртуальную машину, то она пробросится без монитора. А следовательно не сможет никуда выводить картинку.

ZenitharChampion ★★★★★
()

Тебе нужен qemu-kvm и поддержка vfio в ядре, в гость пробрасывать будешь нвидию, т.к. интел будет обслуживать хост. К этой карточке должен будет быть подключен отдельный монитор, оттуда и будешь наблюдать машину.

У тебя какой дистр? Грепай «qemu kvm vga passthrough» в вики своего дистра или смотри на арче.

slon
()
Ответ на: комментарий от slon

Полагал, что потребуется второй монитор, но надеялся почему то на чудо. Эх... придется в дуалбот вернуться на время

Спасибо!

admucher ★★
() автор топика
Ответ на: комментарий от admucher

Не обязательно. У меня один монитор с двумя входами, интеграшка intel -> vga, проброшенная NVidia 960 -> hdmi. Всё ок

false ★★★★★
()
Ответ на: комментарий от false

А поделись, на чем гоняешь виртуалку (xen, qemu, virtual-box?) и что с пробросом мыши и клавиатуры. А то на форумах пишут, что для qemu нужно отдельные подключать.

anonymous
()
Ответ на: комментарий от anonymous

На qemu, без libvirt. Проброс мышкоклавы через synergy, но это необходима поддержка в госте (туда тоже synergy накатывается). Немного неудобно, да. Но как-то так.

false ★★★★★
()
Ответ на: комментарий от ZenitharChampion

с NVIDIA ничего не получилось

Вроде бы надо включить какую-то опцию в libvirt (qemu), чтобы виртуальная машина не видела гипервизор, и тогда работает.
Мопед не мой

TheAnonymous ★★★★★
()
Ответ на: комментарий от admucher

Можно подключить на разные входы монитора, обычно бывают отдельные: DVI, HDMI, VGA. Или см. KVM-переключатель

TheAnonymous ★★★★★
()
Ответ на: комментарий от Novell-ch

Ничоси, вот это крутой костылище :)

false ★★★★★
()
Ответ на: комментарий от admucher

Ну да, предполагалось либо переключение входов на одном мониторе, либо два.

slon
()

Как то вот так:
скрипт номер раз, отвязывает устройства (lspci) указанные в качестве параметров:


#!/bin/bash
modprobe vfio-pci
for dev in «$@»; do
vendor=$(cat /sys/bus/pci/devices/$dev/vendor)
device=$(cat /sys/bus/pci/devices/$dev/device)
if [ -e /sys/bus/pci/devices/$dev/driver ]; then
echo $dev > /sys/bus/pci/devices/$dev/driver/unbind
fi
echo $vendor $device > /sys/bus/pci/drivers/vfio-pci/new_id
done


Скрипт два, тут всё понятно:

sudo qemu-system-x86_64 \
-boot menu=on \
-enable-kvm \
-M q35 \
-m 10240 \
-cpu host \
-rtc base=localtime \
-smp 4 \
-bios /usr/share/seabios/bios.bin \
-acpitable file=/usr/share/seabios/q35-acpi-dsdt.aml \
-device ioh3420,bus=pcie.0,addr=1c.0,multifunction=on,port=1,chassis=1,id=root \
-device ahci,bus=pcie.0,id=ahci \
-device vfio-pci,host=01:00.0,bus=root,addr=00.0,multifunction=on,x-vga=on \
-device vfio-pci,host=01:00.1,bus=pcie.0 \
-drive file='/dev/vg_win/lv_win8',format=raw,if=virtio,cache=writeback \
-drive file='/wstorage/vm/win8_data/win8_data.img',format=raw,if=virtio,cache=writeback \
-netdev user,id=network0 -device virtio-net,netdev=network0 \
-soundhw hda \
-serial none \
-parallel none \
-nodefaults \
-nodefconfig \
-vga none \
-nographic

King_Carlo ★★★★★
()
Ответ на: комментарий от Novell-ch

А на Windows 10 случайно не тестил? А то у меня почему-то при указании PCI устройств не хочет картинку в окно выводить (через QXL) не зависимо от того, подключен ли второй шнур от монитора к видюхе... Конфиг почти аналогичный приведенному на видео, кроме BIOS, вместо которого юзаю OVMF, может ли быть в этом проблема?

spectr00 ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.