LINUX.ORG.RU

VGA Passthrough kvm вопросов тред

 , ,


0

1

Проброс видео удался только не понял, как выводить изображение гостя на второй монитор? Получается вывести если в конфиге вм два адаптера (проброшенный и qxl). Т.е. сначала появляется изображение на qxl дисплее, затем на мониторе. Если qxl удалить, то ничего не выводится на мониторе, говорит нет сигнала. Как то можно настроить, чтоб сразу картинка на мониторе гостя была(в конфиге вм c одним адаптером)? И второе, проброс работает только если тип процессора host-passthrough? Пробовал менять, падало в bsod.


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

не самописных скриптов нет. virt-manager.

dpood
() автор топика

Как то можно настроить, чтоб сразу картинка на мониторе гостя была(в конфиге вм c одним адаптером)?

Можешь в самой форточке переключить дисплеи, а QXL потом удалить.

И второе, проброс работает только если тип процессора host-passthrough?

Нет. Мне раньше в некоторых случаях даже приходилось прикидываться Core2Duo, чтобы оффтопик нормально заводился.

Deleted
()

Попробуй виртуалку в режиме uefi поставить. Требуется uefi фирмварь для виртуалки. В дебьяне пакет называется ovmf.

У меня виртуалки работают без qxl и выдают картинку на монитор сразу. Только семёрка капризная и после установки/обновления дров в процессе загрузки начинает показывать чёрный экран. Лечится перезагрузкой хоста и добавлением qxl в виртуалку. После того, как дрова встанут, qxl можно удалить.

ЗЫ Без uefi тоже можно запустить проброшенную карточку как первичный адаптер, но здесь надо шаманить через virsh и дописывать секцию <qemu:commandline>. В этом случае, скорее всего, нарвёшься на ошибку с правами доступа и придётся править qemu.conf и не только. А если это fedora, то и selinux будет верещать.

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

Можешь в самой форточке переключить дисплеи, а QXL потом удалить.

Так вроде так и делал, все равно нет сигнала. Поковыряю еще.

dpood
() автор топика

В любом случае спасибо всем, кто не прошел мимо.

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

Натыкался на такое. Каким шаманством исправлял, уже не помню. Вроде бы сменой чипсета виртуалки с Q35 на i440fx, но не уверен.

Для работы видяхи в качестве первичного адаптера без uefi требуется виртуалка на чипсете Q35, дополнительные команды в xml-файле вируалки и дополнительная настройка прав. Но после какого-то апдейта qemu у меня на этом чипсете виртуалки отказались работать. Перелез на uefi и i440fx и всё заработало из коробки. Где-то натыкался, что на поддержку Q35 разработчики начинают забивать.

PS Да, ты hdmi-аудио с видеокарточки тоже пробрасываешь? Или, хотя бы, биндишь на pci-stub или vfio-pci?

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

Надо понимать в винду ты прокидываешь nvidia. Чтоб не было ошибки 43 нужно добавить в xml виртуальной машины следующее:


<features>
<hyperv>
...
<vendor_id state='on' value='whatever'/>
...
</hyperv>
...
<kvm>
<hidden state='on'/>
</kvm>
</features>

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

Надо понимать в винду ты прокидываешь nvidia.

не, radeon

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

ты hdmi-аудио с видеокарточки тоже пробрасываешь?

его тоже.

dpood
() автор топика

с дисплеем разобрался, почему первый раз не работало х.з. Почему только в 10-ке завелся проброс не понятно. В 7-ке код 10 и если пытаться скормить драйвер, говорит все зашибись обновлять драйвер не надо. Какие только комбинации не пробывал Q35/i440fx/uefi без него. Если через каталист ставить, он падает на установке дров. Может попробывать не от Васяна сборку, скачал первую попавшуюся. Кто как проблему со звуком решает?

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

Нет. Мне раньше в некоторых случаях даже приходилось прикидываться Core2Duo, чтобы оффтопик нормально заводился.

А че тогда во всех манах, пишут host. Для лучшей производительности? У меня лично падает, если проц. другой ставить.

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

7-ка в этом плане капризная на редкость.

Звук через пульс. Пульса работает системным демоном, чтобы звук был всегда, а не когда пользователь залогинен. Раньше пускал qemu через alsa, но звук в 10-ке испортился, хотя и 7-ка и 8-ка с теми же конфигами работала отлично. Alsa использовалась, потому что был позарез нужен микрофон в вм. Но для 10-ки вернулся на пульсу и накладывать патч на qemu, но теперь и звук и микрофон работают как надо.

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

А тебе именно микрофон в вм нужен? Потому что на ванильном qemu звук работает нормально, только от микрофона по умолчанию идет лаг в 25 сек. Лаг можно уменьшить до пары секунд, но это всё равно неприемлемо. Для звука надо в qemu.conf раскомментировать nographics_allow_host_audio = 1. Если нужно, чтобы звук был в вм, когда пользователь разлогинился, то в systemd включить linger и запустить от пользователя сервис pulseaudio.service(socket), благо в дебьяне они доступны из коробки. Ну, и разрешить доступ qemu к пульсе пользователя. Как вариант, запускать qemu с QEMU_AUDIO_DRV = alsa. С альсой отлично работали и 7-ка и 8-ка, а вот 10-ка с теми же настройками показала фигу.

https://www.reddit.com/r/VFIO/comments/74vokw/improved_pulse_audio_driver_for... - обсуждение. Оттуда на его репозиторий выходил. Там, помимо патченой qemu есть сам патч.

У меня нормально заработало аудио на патченом qemu со следующими настройками:

<domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
<sound model='ich6'>
      <codec type='micro'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
    </sound>
<qemu:commandline>
    <qemu:arg value='-object'/>
    <qemu:arg value='input-linux,id=kbd1,evdev=/dev/input/by-id/usb-SIGMACHIP_USB_Keyboard-event-kbd,grab_all=on,repeat=on'/>
    <qemu:env name='QEMU_AUDIO_DRV' value='pa'/>
    <qemu:env name='QEMU_AUDIO_TIMER_PERIOD' value='375'/>
    <qemu:env name='QEMU_AUDIO_DAC_FIXED_SETTINGS' value='1'/>
    <qemu:env name='QEMU_AUDIO_DAC_FIXED_FREQ' value='48000'/>
    <qemu:env name='QEMU_AUDIO_DAC_FIXED_FMT' value='S16'/>
    <qemu:env name='QEMU_AUDIO_DAC_TRY_POLL' value='1'/>
    <qemu:env name='QEMU_AUDIO_ADC_FIXED_SETTINGS' value='1'/>
    <qemu:env name='QEMU_AUDIO_ADC_FIXED_FREQ' value='48000'/>
    <qemu:env name='QEMU_AUDIO_ADC_FIXED_FMT' value='S16'/>
    <qemu:env name='QEMU_AUDIO_ADC_TRY_POLL' value='1'/>
    <qemu:env name='QEMU_PA_FRAGSIZE' value='128'/>
    <qemu:env name='QEMU_PA_BUFFER_SIZE_IN' value='384'/>
    <qemu:env name='QEMU_PA_BUFFER_SIZE_OUT' value='384'/>
    <qemu:env name='QEMU_PA_MAXLENGTH_IN' value='1024'/>
    <qemu:env name='QEMU_PA_TLENGTH' value='1024'/>
    <qemu:env name='QEMU_PA_ADJUST_LATENCY_IN' value='1'/>
    <qemu:env name='QEMU_PA_ADJUST_LATENCY_OUT' value='1'/>
  </qemu:commandline>
</domain>
Не знаю, влияет ли задание переменных QEMU_AUDIO... на что-то или нет, но так заработало и, после 3-х недель борьбы со звуком, проверять мне уже было шибко лень.

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

не микрофон не нужен, но за старания спасибо. Вдруг понадобится и буду знать, куда заглянуть.

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