vga-passthrough с kvm / qemu на ноутбуке с поддержкой optimus

у меня есть ноутбук asus n550jv со следующим выходом из lspci -nn | grep "VGA|3D":

00:02.0 VGA compatible controller [0300]: Intel Corporation 4th Gen Core Processor Integrated Graphics Controller [8086:0416] (rev 06)
01:00.0 3D controller [0302]: NVIDIA Corporation GK107M [GeForce GT 750M] [10de:0fe4] (rev ff)

Я хочу запустить виртуальную машину windows 8.1 с vga-passthrough, поэтому мне не нужно dualboot. я читал, что вам нужна карта с выделенным выходным портом, но я не понял, почему, и на форумах были некоторые сообщения о том, что она может работать.

Я пытаюсь запустить виртуальную машину с помощью следующей команды:

qemu-system-x86_64 -enable-kvm -M q35 -m 4096 -cpu host 
-smp 4,sockets=1,cores=4,threads=2 
-bios /usr/share/ovmf/OVMF.fd 
-usb -usbdevice tablet 
-soundhw hda 
-device ioh3420,bus=pcie.0,addr=1c.0,multifunction=on,port=1,chassis=1,id=root.1 
-device vfio-pci,host=01:00.0,bus=root.1,addr=00.0,x-vga=on 
-drive file=/home/duke/windows.img,id=disk,format=raw -device ide-hd,bus=ide.0,drive=disk 
-drive file=/home/duke/Downloads/windows.iso,id=isocd -device ide-cd,bus=ide.1,drive=isocd 
-vga vmware 
-boot menu=on

Я хочу использовать vga-passthrough но я держу получить ошибки о x-vga:

qemu-system-x86_64: -device vfio-pci,host=01:00.0,bus=root.1,addr=00.0,x-vga=on: vfio: Device does not support requested feature x-vga qemu-system-x86_64: -device vfio-pci,host=01:00.0,bus=root.1,addr=00.0,x-vga=on: vfio: failed to get device 0000:01:00.0
qemu-system-x86_64: -device vfio-pci,host=01:00.0,bus=root.1,addr=00.0,x-vga=on: Device initialization failed.
qemu-system-x86_64: -device vfio-pci,host=01:00.0,bus=root.1,addr=00.0,x-vga=on: Device 'vfio-pci' could not be initialized

я нашел на арке VGA-сквозную нить эта информация:

это означает, что либо а) ваше ядро не поддерживает CONFIG_VFIO_PCI_VGA, либо б) устройство не является VGA-устройством. Проверить а):

$ grep в CONFIG_VFIO_PCI_VGA /загрузки/конфиг-uname -r

для проверки b):

$ lspci-s 2:00.0 | grep VGA

если у вас есть Intel хозяина графика, вам еще нужен патч для ядра i915. Если вы Radeon хост графики, вам нужен другой патч VGA арбитр. На обоих из них были ссылки на последних нескольких страницах, IIRC.

Я CONFIG_VFIO_PCI_VGA=y для (a). в моем случае (Б)lspci -s 1:00.0 | grep VGA и он ничего не выводит, так как моя карта nvidia указана как "3D-контроллер", поэтому у меня есть вопросы:

  1. будет ли патч i915 или ovmf поддерживать мою карту nvidia, которая указана как 3d контролер?

    • если нет, есть ли способ получить карту nivida, признанную vga-совместимой?
  2. работает ovmf так же просто, как установка -bios /usr/share/ovmf/OVMF.fd?

  3. почему -vga=none требуется для назначения vga?

    • если -vga=none действительно требуется, то есть какой-либо другой способ, чтобы на самом деле увидеть экран? например, могу ли я перенаправить карту nvidia на порт hdmi или иметь карту nvidia полностью захватить экран ноутбука?

Я также получаю ошибки для alsa / pulse, куча из них получить выплюнуть, что обычно следуют

alsa: Could not initialize ADCk
alsa: Failed to open `default':
alsa: Reason: Connection refused
Home directory not accessible: Permission denied
ALSA lib pulse.c:243:(pulse_connect) PulseAudio: Unable to connect: Connection refused

Я знаю, что это потому, что root не имеет доступа к импульсу пользовательского уровня, но я не хочу запускать pulse на системном уровне, есть ли способ для pulseaudio работать без необходимости запускать его в системном режиме?
если нет, у меня все равно возникают проблемы с включением системного режима. Этому есть объяснение здесь и pulseaudio --system работает, но я не могу подключить клиентов к серверу pulse, я продолжаю получать ошибки, как ALSA lib pulse.c:243:(pulse_connect) PulseAudio: Unable to connect: Access denied.

6
задан Hennes
28.03.2023 4:07 Количество просмотров материала 2601
Распечатать страницу

3 ответа

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

VT-d ограничивает хост от доступа/отображения памяти графической памяти непосредственно.

обычно модифицированный драйвер (Nvidia Optimus или Bumblebee на Linux) предоставляет результаты окна, работающего на карте Nvidia, в виде текстуры для графики Intel, которая затем смешивает его на рабочем столе окружающая среда.

Это требует, чтобы драйверы обеих видеокарт были изменены и обменивались / обменивались памятью, что невозможно между хостом и гостевой ОС, насколько я смог найти.

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

выделенный выходной порт, насколько я столкнулся с ними в дикой природе, доступен только на настольных компьютерах или Lenovo ThinkPads с двойной графикой (последний из которых подключает некоторые из выходных портов непосредственно к Nvidia, портя поддержку Bumblebee на Linux в этом процессе).

7
отвечен wvdschel 2023-03-29 11:55

Я могу ошибаться, но KVM в настоящее время работает только с дискретными видеокартами (GT 750M-это карта Optimus)?

код: http://www.linux-kvm.org/wiki/images/b/b3/01x09b-VFIOandYou-small.pdf

2
отвечен AlwaysLearning 2023-03-29 14:12

одна вещь, которую вы не упомянули, что вам нужно сделать, это:

зайдите в свой BIOS и включите VT-d option. VT-d требуется для передачи устройства PCI на виртуальную машину.

http://kmpic.asus.com/images/2014/12/29/6bd4ef8d-62a3-4b0c-9674-5a2b0fa53c79.jpg

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

0
отвечен Michael Hampton 2023-03-29 16:29

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя

Похожие вопросы про тегам:

laptop
linux-kvm
nvidia-graphics-card
optimus
qemu
Вверх