Назад | Перейти на главную страницу

Как я могу изменить архитектуру Qemu KVM-машины с 440fx на q35 с помощью virsh edit или virt-manager

Все еще пытаясь заставить работать сквозной пропуск GPU, и решил изменить тип машины с более старого 440fx на q35, то есть pc-q35, но если я сделаю virsh edit в конфигурации, он откажется сохранять, говоря «Мосты PCI не поддерживаются» ... текущим двоичным файлом qemu. Что мне нужно исправить / изменить в xml файле виртуальной машины?

После некоторых исследований кажется, что q35 разрешает только PCIexpress PCIe, а не PCI, но я не знаю, что изменить в моем файле xml, чтобы virsh перестал жаловаться и принял изменение с 440fx на q35.

Это на Debian Jessie: uname -a Linux vmserver 3.16.0-customvmkernel # 1 SMP Sun 28 сентября 00:34:42 PDT 2014 x86_64 GNU / Linux

kvm --version Эмулятор QEMU версии 2.1.0 (Debian 2.1 + dfsg-4)

Вот мой текущий файл виртуальной машины с 440fx, который я хочу изменить на q35:

<domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
<name>Win7enterprise32bit</name>
<uuid>77599af9-35a3-45e1-9fce-74304f7d7a9c</uuid>
<memory unit='KiB'>1048576</memory>
<currentMemory unit='KiB'>1048576</currentMemory>
<vcpu placement='static'>1</vcpu>
<os>
<type arch='i686' machine='pc-i440fx-2.1'>hvm</type>
<boot dev='hd'/>
</os>
<features>
<acpi/>
<apic/>
<pae/>
</features>
<clock offset='localtime'/>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<devices>
<emulator>/usr/bin/kvm</emulator>
<disk type='file' device='disk'>
  <driver name='qemu' type='vmdk'/>
  <source file='/mount/ssd/VirtWin7-clone.vmdk'/>
  <target dev='vdb' bus='virtio'/>
  <address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/>
</disk>
<controller type='usb' index='0'>
  <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
</controller>
<controller type='ide' index='0'>
  <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
</controller>
<controller type='pci' index='0' model='pci-root'/>
<interface type='bridge'>
  <mac address='52:54:00:9e:f5:11'/>
  <source bridge='br0'/>
  <model type='rtl8139'/>
  <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
<serial type='pty'>
  <target port='0'/>
</serial>
<console type='pty'>
  <target type='serial' port='0'/>
</console>
<input type='tablet' bus='usb'/>
<input type='mouse' bus='ps2'/>
<input type='keyboard' bus='ps2'/>
<graphics type='vnc' port='-1' autoport='yes'/>
<sound model='ac97'>
  <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
</sound>
<video>
  <model type='cirrus' vram='9216' heads='1'/>
  <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
</video>
<memballoon model='virtio'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
</memballoon>
</devices>
<qemu:commandline>
<qemu:arg value='-nodefaults'/>
<qemu:arg value='-vga'/>
<qemu:arg value='none'/>
<qemu:arg value='-device'/>
<qemu:arg value='ioh3420,bus=pci.0,addr=1c.0,multifunction=on,port=1,chassis=1,id=root.1'/>
<qemu:arg value='-device'/>
<qemu:arg value='vfio-pci,host=04:00.0,bus=root.1,addr=00.0,multifunction=on,x-vga=on,rombar=0'/>
<qemu:arg value='-device'/>
<qemu:arg value='vfio-pci,host=04:00.1,bus=root.1,addr=00.1'/>
<qemu:arg value='-bios'/>
<qemu:arg value='/usr/share/seabios/bios.bin'/>
<qemu:arg value='-cpu'/>
<qemu:arg value='host,kvm=off'/>
</qemu:commandline>
</domain>

Доступен патч для устранения основной проблемы (поскольку QEMU не позволяет вам подключаться к корневой шине PCIe, которая необходима для гостей Windows на Q35):

http://lists.nongnu.org/archive/html/qemu-devel/2015-10/msg05385.html

Я только что сделал это сегодня - почти так же, как описано в «Fox», за исключением того, что изменил запись контроллера pci вместо ее удаления - изменив «pci-root» на «pcie-root»

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

Не уверен, что вы все еще пытаетесь это сделать - но я подумал, что выложу это для всех, кто это ищет.

Последний виртуальный менеджер (1.1.0) поддерживает настройку архитектуры при создании ВМ. Вы не сможете изменить это позже.

С участием virsh edit, Я немного догадываюсь, но я бы попытался удалить контроллер PCI и все параметры, связанные с шиной (например, <address />. И изменение

<type arch='i686' machine='pc-i440fx-2.1'>hvm</type>

к

<type arch='i686' machine='pc-q35'>hvm</type>

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

кстати. те <qemu:arg /> в конце тоже может вызвать проблемы. Если у вас возникнут проблемы, попробуйте их также удалить.

Попробуйте вместо pc-i440fx-2.1 выше

См. Пример на https://gist.github.com/lyarbean/7036986

Я бы запустил qemu вручную с -M q35 или -M? чтобы проверить, действительно ли установленная вами версия поддерживает его

hth

qemu 2.x поддерживает Q35, вы можете проверить, поддерживается ли машина, используя

[root@localhost ~]# /usr/libexec/qemu-kvm -machine help
Supported machines are:
pc                   RHEL 7.6.0 PC (i440FX + PIIX, 1996) (alias of pc-i440fx-rhel7.6.0)
pc-i440fx-rhel7.6.0  RHEL 7.6.0 PC (i440FX + PIIX, 1996) (default)
pc-i440fx-rhel7.5.0  RHEL 7.5.0 PC (i440FX + PIIX, 1996)
pc-i440fx-rhel7.4.0  RHEL 7.4.0 PC (i440FX + PIIX, 1996)
pc-i440fx-rhel7.3.0  RHEL 7.3.0 PC (i440FX + PIIX, 1996)
pc-i440fx-rhel7.2.0  RHEL 7.2.0 PC (i440FX + PIIX, 1996)
pc-i440fx-rhel7.1.0  RHEL 7.1.0 PC (i440FX + PIIX, 1996)
pc-i440fx-rhel7.0.0  RHEL 7.0.0 PC (i440FX + PIIX, 1996)
rhel6.6.0            RHEL 6.6.0 PC
rhel6.5.0            RHEL 6.5.0 PC
rhel6.4.0            RHEL 6.4.0 PC
rhel6.3.0            RHEL 6.3.0 PC
rhel6.2.0            RHEL 6.2.0 PC
rhel6.1.0            RHEL 6.1.0 PC
rhel6.0.0            RHEL 6.0.0 PC
q35                  RHEL-7.6.0 PC (Q35 + ICH9, 2009) (alias of pc-q35-rhel7.6.0)
pc-q35-rhel7.6.0     RHEL-7.6.0 PC (Q35 + ICH9, 2009)
pc-q35-rhel7.5.0     RHEL-7.5.0 PC (Q35 + ICH9, 2009)
pc-q35-rhel7.4.0     RHEL-7.4.0 PC (Q35 + ICH9, 2009)
pc-q35-rhel7.3.0     RHEL-7.3.0 PC (Q35 + ICH9, 2009)
none                 empty machine

# используйте virsh edit, чтобы изменить тип машины из приведенного выше списка

hvm