web-dev-qa-db-ja.com

libvirt:qemuコマンドライン引数を渡すには?

現在のlibvirt 1.2.20を持っています。virt-managerで作成したマシンにいくつかのqemuフラグを渡します。ファイルを編集して追加しました

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

しかし、うまくいきません私はvirshから編集しようとしました

virsh edit domain

そして、置きます

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

しかし、私にこのエラーを与えてください

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,?]: 

Qemuコマンドラインを正しく渡す方法は?ありがとう

8
elbarna

elbarna自身の答えは、libvirt(およびそのドメインXML)によって「ネイティブに」サポートされる構成オプションに進む方法です。 libvirtでサポートされていないqemuコマンドライン引数(およびその他)の場合、qemuのXML名前空間宣言を「domain」ルート要素に含める必要があります。

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

リファレンス: https://libvirt.org/drvqemu.html#qemucommand

10
argonym

あなたが持っている場合 virt-xml 1.4.1(2017年にリリースされたため、現在広く普及しているはずです)またはパスの後半(community/virt-install(Archの場合)、以下を使用できます。

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

名前空間を含む、環境変数や引数に対応するXMLを自動的に追加します。 --confirmを使用すると、コミットする前に変更をプレビューできます。

これは、XML名前空間に手動で貼り付けようとするよりもはるかに便利で、virsh editは、同一の手動変更を受け入れなくなりました。

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

4
jeffcook2150

この回避策を使用してソリューションを見つけました

QEMU引数をドメインXMLに変換

でXMLインポートに変換した後

virsh create file.xml
1
elbarna