web-dev-qa-db-ja.com

Qemu KVMマシンアーキテクチャを440fxからq35にvirsh editまたはvirt-managerで変更するにはどうすればよいですか?

まだGPUパススルーを機能させようとしていて、マシンタイプを古い440fxからq35に変更することを決定しました。仮想マシンのxmlファイルを修正/変更するには何が必要ですか?

いくつかの調査の結果、q35ではPCIexpress PCIeのみが許可され、PCIは許可されないようですが、virshが不平をやめて440fxからq35への変更を受け入れるように、xmlファイルで何を変更すればよいかわかりません。

これはDebian Jessieにあります:uname -a Linux vmserver 3.16.0-customvmkernel#1 SMP Sun Sep 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>
6
htfree

私は今日これをやった-「Fox」が説明したのとほとんど同じだが、pciコントローラーのエントリを削除するのではなく変更する-「pci-root」を「pcie-root」に変更する

次に、バス関連のパラメータについて何か不満があります-アイテムを残して、仕様を削除できます。また、USB関連のエントリも削除する必要がありました(piix3統合コントローラーにはPCIバス、またはそのための何かが必要です)。

あなたがまだこれをやろうとしているのかどうかはわかりませんが、私はこれを検索する他の人のために公開するつもりでした。

4
Pat Sullivan

根本的な問題に利用できるパッチがあります(QEMUでは、Q35のWindowsゲストに必要なPCIeルートバスにバインドすることができないため):

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

4
Josh

最新の virt-manager (1.1.0)は、VM作成時にアーキテクチャを設定することをサポートしています。後で変更することはできません。

virsh editを使用すると、少し推測しますが、PCIコントローラーとすべてのバス関連パラメーター(<address />など)を削除してみます。

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

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

通常、私はコメントでこれを提供しますが、これは推測が多いためですが、長すぎます。動作しない場合は削除します。

ところで。最後の<qemu:arg />も問題を引き起こしている可能性があります。問題が発生した場合は、それらも削除してみてください。

2
Fox

上記のpc-i440fx-2.1の代わりに試してください

https://Gist.github.com/lyarbean/7036986 の例を参照してください

-M q35または-Mを使用してqemuを手動で実行しますか?インストールしたバージョンを確認するには、本当にそれをサポートしています

hth

1
Neil McGill