LINUX.ORG.RU

После GPU passthrough в KVM нет изображения в VNC/Spice

 ,


0

1

Привет, ЛОР!

Хост Fedora 29 amd64 на asrock b75 pro3. Внутрь виртуалки qemu-kvm с win10 проброшена GTX 970 с выводом изо. по HDMI.

Так вот после старта драйвера видюхи гостевой машины, на хосте пропадает изо из VNC/Spice. При этом управление гостевой машиной есть, нет только изо. Пока драйвер видюхи не стартовал (из-за nvidia error 43), то изо было в VNC/Spice.

Если по поводу Spice ещё можно сказать, что гостевая ОС не может давать дублирование экрана с разными разрешениями, то VNC-сервер запускается ведь на хостовой машине средствами virt-manager?

Гугление по разным запросам даёт темы про не стартующие видюхи. У меня всё стартует, но не всегда удобно переключать вход монитора с хостовой машины на гостевую. Порой нужно удалённый доступ и хотелось бы разобраться почему оно таким образом не работает.

Понятно, что я могу подключиться к гостю напрямую по RDP.

Конфиг виртуалки
qemu-kvm 3.0.0
libvirt 4.7.0
virt-manager 1.6.0

Попытка запустить на данной VM что-то из Linux вообще даёт странные результаты. QXL или Virtio видеокарты даже дают тормоза в интерфейсе и лаги, а если добавить ту же GTX 970, то или всё зависает с цветом сплэшскрина убунты или вообще чёрный экран с курсором. Но для этого буду новый топик создавать, наверное.

★★★★

Ответ на: комментарий от bdfy

хах, да уж. я всё же не могу понять почему так происходит.

VNC/Spice должно же поднимать libvirt (или кто там?) как граф.консоль, т.е. независимо от ОС и обстановке в ней.

а получается как-то непонятно.

kma21 ★★★★ ()

Если по поводу Spice ещё можно сказать, что гостевая ОС не может давать дублирование экрана с разными разрешениями,

В чём проблема нарисовать тебе окно равное разрешению в госте и либо масштабировать его, либо скроллбары нарисовать? Проблема не в этом.

то VNC-сервер запускается ведь на хостовой машине средствами virt-manager?

Нет: virsh vncdisplay $domain, запоминай порт, и можешь подключаться хоть ремминой.

Порой нужно удалённый доступ и хотелось бы разобраться почему оно таким образом не работает.

Потому что ты пробрасываешь видеокарту в виртуалку. Как хост получит данные с вывода проброшенного в виртуалку устройства? Чтобы тебе картинку по spice/vnc показать, её сначала нужно как-то получить.

после старта драйвера видюхи гостевой машины, на хосте пропадает изо из VNC/Spice

Потому что либо в «биосе» виртуалки настроено использование только «внешней» видеокарты, либо в настройках винды выбрано отображение только на одном из устройств. Поставь в настройках физического компьютера «external display only», и попробуй по подключать\отключать кабель второго монитора — будет тот же результат.

mogwai ★★★ ()
Последнее исправление: mogwai (всего исправлений: 1)
Ответ на: комментарий от mogwai

Потому что ты пробрасываешь видеокарту в виртуалку. Как хост получит данные с вывода проброшенного в виртуалку устройства?

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

Потому что либо в «биосе» виртуалки настроено, использование только «внешней» видеокарты, либо в настройках винды выбрано отображение только на одном из устройств. Поставь в настройках физического компьютера «external display only», и попробуй по подключать\отключать кабель второго монитора — будет тот же результат.

а что, эмулированная видяха ВНЕЗАПНО стала интеграшкой? И давно это так?

targitaj ★★★★★ ()

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

Аналогичную проблему я решал так: Заранее пробросил в виртуалку видеокарту, клавиатуру и мышь. Виртуалку запускал из скрипта, который после старта VM отправлял на мониторы команды переключения входа. Виртуалку выключал тоже скриптом (переключить изображение обратно на основной вход, выключить компьютер).

ddccontrol в помощь.

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

должно быть по факту ДВЕ видяхи

Я кому русским языком сказал про настройки вывода в оффтопике?

к одной из которых и подключаешься по spice.

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

эмулированная видяха ВНЕЗАПНО стала интеграшкой

Кавычки для кого я поставил? Или ты в аналогии совсем не умеешь?

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

Возможно. Две видеокарты и много мониторов в виртуалки прокидывал. Несколько виртуальных видеокарт в виртуалках создавал. С кашей «эта в монитор напрямую, а эта — по spice» не извращался.

… хотя юзкейс для извращений таких придумал

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

Тогда ТС будет видеть либо монитор А, если смотрит через remote-viewer, либо монитор Б, если будет переключать вход физического монитора. Каждый раз трахаться с изменением primary display? Не проще повесить switch input на горячую клавишу на физическом мониторе?

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

Потому что ты пробрасываешь видеокарту в виртуалку. Как хост получит данные с вывода проброшенного в виртуалку устройства? Чтобы тебе картинку по spice/vnc показать, её сначала нужно как-то получить.

Да, вероятно, в этом и заключается причина моего вопроса, что рисуется всё на проброшенную видюху, а изо снимаю с виртуальной.

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

юзкейс собственно незамысловат.

имеется моник с 3-мя входами (d-sub, dvi, hdmi). по dvi отдаёт изо fedora, по hdmi отдаёт виртуалка вместе со звуком.

я обычно запускаю виртуалку для игорей, переключа вход моника на hdmi и играю (в виртуалку ещё проброшен usb-hub с клавой, мышкой и парой свободных портов).

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

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

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

а ты не в курсе, можно ли задать как-то базовое разрешение виртуального дисплея?

а то у меня винда дисплей на QXL видит с разрешением 1024x768 и не хочет дублировать изо с моника с FullHD.

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

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

вот надо у виртуального монитора сделать нативное разрешение побольше.

kma21 ★★★★ ()