Libvirt: Wie übergebe ich QEMU-Befehlszeilenargumente?

9

Ich habe die aktuelle libvirt 1.2.20, die ich an meinen Computer übergeben möchte, um mit virt-manager einige qemu-Flags zu erstellen. Ich habe die Datei bearbeitet und hinzugefügt

  </devices>
  <qemu:commandline>
          <qemu:arg value='-L pc-bios'/>
  </qemu:commandline>
</domain>

Funktioniert aber nicht ich habe auch versucht von virsh zu bearbeiten

virsh edit domain

und legen

<qemu:commandline>
          <qemu:arg value='-L pc-bios'/>
  </qemu:commandline>

Aber gib mir diesen Fehler

errore: XML document failed to validate against schema: Unable to validate doc against /usr/share/libvirt/schemas/domain.rng
Element domain has extra content: qemu:commandline

Failed. Try again? [y,n,i,f,?]: 

Wie kann ich die qemu-Befehlszeile korrekt übergeben? Vielen Dank

Elbarna
quelle

Antworten:

10

elbarnas eigene Antwort ist der Weg zu Konfigurationsoptionen, die "nativ" von libvirt (und damit dessen Domain-XML) unterstützt werden. Für qemu-Befehlszeilenargumente (und mehr), die von libvirt nicht unterstützt werden, müssen Sie die XML-Namespace-Deklaration von qemu in das Stammelement 'domain' aufnehmen:

<domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>

Referenz: https://libvirt.org/drvqemu.html#qemucommand

Argonym
quelle
für Server, die kvm nicht nativ unterstützen, können Sie verwendentype='qemu'
Jonas Libbrecht
1
Dieses Schema ist jetzt 404.
Vilius
Anscheinend wurden sie für die XML-Schemas nach RelaxNG migriert. Obwohl IDK beim Ersetzen der obigen URL durch https://libvirt.org/schemas/domain.rngfunktioniert, falls überhaupt erforderlich.
Argonym
@argonym Nein, scheint nicht sofort zu funktionieren.
Bostrot
Ich würde hinzufügen, dass in meinem Fall Parameter, die ein Leerzeichen enthalten, einen Fehler auslösen und mit mehreren <qemu:arg value=Zeilen angegeben werden müssen
Alex F
5

Wenn Sie virt-xml1.4.1 (veröffentlicht im Jahr 2017, sollte also mittlerweile weit verbreitet sein) oder später in Ihrem Pfad (bereitgestellt von community/virt-installin Arch) haben, können Sie Folgendes verwenden:

virt-xml $DOMAIN --edit --confirm --qemu-commandline '-my-args 1234'
virt-xml $DOMAIN --edit --confirm --qemu-commandline 'env=MY-ENV=1234'

um automatisch das XML hinzuzufügen, das env vars und / oder args entspricht, einschließlich des Namespace. --confirmErmöglicht die Vorschau der Änderungen vor dem Festschreiben.

Dies ist viel praktischer als der Versuch, manuell in den XML-Namespace einzufügen, und hat bei mir funktioniert, obwohl virsh editkeine identischen manuellen Änderungen mehr akzeptiert wurden.

Ref: https://blog.wikichoon.com/2017/03/easy-qemu-commandline-passthrough-with.html

jeffcook2150
quelle