Можно убрать x-vga=on.
sawanzard
это ведь дискретная видеокарта nVidia?
В диспетчере устройств в свойствах контроллера нужно посмотреть ИД оборудования VEN_XXXX&DEV_XXXX. Если вендор 10de, значит это видеокатра nVidia.
Arch x86_64, Linux 5.16.7, Plasma 5.23.5
А без x-vga=on что происходит? И еще, нужно добавить -display sdl, если нужен вывод графики не только с выхода видеокарты.
Вот, кстати, нашел презентацию Алекса Уильямсона. Там он пишет, что для Windows нет особой разницы между 440FX и Q35, но 440FX более легкий вариант.
Arch x86_64, Linux 5.16.7, Plasma 5.23.5
1. Рекомендую использовать Tianocore UEFI (пакет ovmf). Но windows, скорее всего, придется переустановить. Думаю, это не проблема, раз установка не ушла дальше драйверов.
2. Примерный конфиг:
qemu-system-x86_64 \
-name windows \
-enable-kvm \
-nodefaults \
-rtc base=localtime,clock=host \
-machine pc,accel=kvm \
-drive if=pflash,format=raw,readonly,file=/usr/share/ovmf/x64/OVMF_CODE.fd \
-drive if=pflash,format=raw,file=/path/to/vm/directory/OVMF_VARS.fd \
-cpu host,kvm=off \
-smp cpus=8,sockets=1,cores=8,threads=1 \
-m 8G \
-nic user,model=e1000,mac=fe:00:00:00:00:01 \
-drive file=/path/to/vm.qcow2,format=qcow2,if=virtio,aio=native,cache=directsync,media=disk \
-drive file=/path/to/windows.iso,format=raw,media=cdrom \
-drive file=/path/to/virtio.iso,format=raw,media=cdrom \
-device vfio-pci,host=01:00.0,multifunction=on,x-vga=on \
-vga qxl \
-usb \
-device usb-tablet \
-monitor stdio \
-boot menu=on
Параметр -rtc ... также рекомендую для гостевых windows-систем, чтобы время выставлялось корректно.
Параметр -machine я выбираю pc. Точную сслыку не дам, но, вроде, сам автор рекомендует использовать для windows "pc", а для linux "q35".
Дальше идет подключение UEFI. OVMF_CODE.fd обязательно должен быть readonly. OVMF_VARS.fd надо скопировать из /usr/share/ovmf/x64 в директорию виртуальной машины (или куда удобнее, можно хоть в /tmp, главное в конфиге указать правильный путь).
В -cpu ... обязательно kvm=off.
В -smp ... и -m ... на усмотрение, это лишь пример
Дальше подключаем сеть (т. к. ранее было указано -nodefaults, что означает отсутствие стандартного набора устройств: vga, ethernet, serial и пр.)
Дальше подключаем носители (cdrom'ы только во время установки). aio и cache тоже на усмотрение, в примере настройки на максимальную производительность в ущерб сохранности данных в случаях сбоев питания и пр.
Дальше, собственно, сама видеокарта nVidia. Затем QXL. usb-tablet может понадобиться, чтобы не происходил перехват устройств ввода виртуалкой (ну либо каждый раз ctrl-alt-g для высвобождения клавиатуры и мыши. Опционально можно пробросить геймпады параметром -device usb-host,vendorid=0x0000,productid=0x0000, чтобы они сразу пробрасывались в виртуалку).
Опционально -monitor ... если нужно управлять витруалкой (на лету добавлять устройства или отправить сигнал завершения работы)
Параметр -boot ... удалить после установки ОС.
Arch x86_64, Linux 5.16.7, Plasma 5.23.5
Не хватает kvm=off:
-cpu host,kvm=off
Arch x86_64, Linux 5.16.7, Plasma 5.23.5
Зачем передается параметр ядра "vfio-pci.ids=10de:134f"?
В вики написано:
linux kernel does not include vfio-pci as a built-in module and therefore needs to be loaded en configured separately like so.
/etc/modprobe.d/vfio.conf
options vfio-pci ids=10de:13c2,10de:0fbb
То есть, ядро из реп Арча не содержит vfio-pci и должно быть загружено отдельно.
А дальше написано:
If your kernel comes with the vfio-pci module built in, as opposed to it being a module that needs to be loaded separately. All that should be required to isolate the GPU is to pass the device IDs as kernel parameters like so:
vfio-pci.ids=10de:13c2,10de:0fbb
То есть если ядро содержит vfio-pci, тогда для изолирования GPU нужно передать параметр ядра.
А сделано и то, и другое. Если используется ванильное ядро, параметр ядра передавать не нужно. И наоборот, если ядро включает в себя vfio-pci, тода нужно передавать только параметр ядра.

Плюс я так и не понял, что именно не работает. Виртуальная машина не запускается? Или запускается, но выдает черный экран?
Arch x86_64, Linux 5.16.7, Plasma 5.23.5
Аналогичная проблема. Зависает с ошибкой:
nouveau 0000:42:00.0: fifo: SCHED_ERROR 0a [CTXSW_TIMEOUT]
Пакет xf86-video-nouveau не установлен, т. к. 3D-ускорение не использую. В mkinitcpio.conf, в MODULES прописан nouveau. В firefox отключено аппаратное ускорение. Есть ли решение проблемы без установки проприетарного драйвера, поможет ли установка 3D-драйвера или удаление nouveau из MODULES? Пробовал указывать nomodeset в grub - графика не стартует. Вариант nouveau.noaccel=1 не подходит, т. к. нужен комопзитинг.
Arch x86_64, Linux 5.16.7, Plasma 5.23.5
jim945
grub-install как раз и выполняет эту сборку с определёнными универсальными устоявшимися параметрами и раскидывает модули по папочкам.
Его не обязательно выполнять каждый раз. Загрузка от этого не сломается. Просто будет работать старая версия граба.
Благодарю за объяснение. Я понимаю, что загрузка не сломается, просто хотелось больше ясности. Видимо при обновлениях действительно надо читать список изменений и делать вывод, надо обновлять grubx64.efi или нет.
Arch x86_64, Linux 5.16.7, Plasma 5.23.5
nafanja
movieman
Или выполнять установку каждый раз после обновления пакета.
в идеале да.
Благодарю за ответ. Я так понимаю, что grubx64.efi содежрит какой-то исполняемый код самого grub'а, но формируется grub'ом с помощью efibootmgr. Есть какой-то источник, кроме исходных кодов, где объясняется что именно содержится в этом бинарнике? Мне удалось найти информацию лишь о том, что в нем содержится путь к конфигу grub'а.
Arch x86_64, Linux 5.16.7, Plasma 5.23.5
Использую EFI, обновился пакет grub. Есть ли необходимость выполнять grub-install …, чтобы обновить бинарный файл в /boot/efi? Или обновление пакета включает обновление бинарного файла, ну как при обновлении пакета linux пересборка ядра выполняется автоматически. Или этот бинарник вообще не обновляется. И, если он обновляется не с каждым обновлением пакета, как понять, когда нужно выполнять grub-install …? Или выполнять установку каждый раз после обновления пакета.
--
Решение:
Необходимость выполнения grub-install нужно принимать на основании списка изменений пакета grub.
Arch x86_64, Linux 5.16.7, Plasma 5.23.5
aePh0Kul
Запускаю командой образ арча qemu-system-x86_64 -enable-kvm -machine q35,accel=kvm -device intel-iommu -m 2048 -vga std -drive file=/home/user/archlinux-2018.01.01-x86_64.iso, выдает ошибку:

Unable to init server: Could not connect: Connection refused
WARNING: Image format was not specified for '/home/ieke3v03ni7x/files/iso/archlinux-2019.06.01-x86_64.iso' and probing guessed raw.
Automatically detecting the format is dangerous for raw images, write operations on block 0 will be restricted.
Specify the 'raw' format explicitly to remove the restrictions.
gtk initialization failed

На серваке ubuntu работало запускался консольный загрузчик арча

Нужно добавить:
-display none -serial stdio
В меню загрузчика нажать TAB, и добавить опции:
console=tty0 console=ttyS0,115200
После загрузки ввести пользователя root без пароля. Так как автоматический вход в ttyS0 не предусмотрен.
Arch x86_64, Linux 5.16.7, Plasma 5.23.5