Libvirt:如何传递 qemu 命令行参数?

elb*_*rna 12 qemu libvirt

我有当前的 libvirt 1.2.20 我想传递给我的机器,用 virt-manager 创建一些 qemu 标志。我编辑了文件并添加

  </devices>
  <qemu:commandline>
          <qemu:arg value='-L pc-bios'/>
  </qemu:commandline>
</domain>
Run Code Online (Sandbox Code Playgroud)

但不起作用我也尝试从 virsh 编辑

virsh edit domain
Run Code Online (Sandbox Code Playgroud)

并放

<qemu:commandline>
          <qemu:arg value='-L pc-bios'/>
  </qemu:commandline>
Run Code Online (Sandbox Code Playgroud)

但是给我这个错误

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,?]: 
Run Code Online (Sandbox Code Playgroud)

如何正确传递qemu命令行?谢谢

小智 15

elbarna 自己的答案是寻找由 libvirt(以及它的域 XML)“本地”支持的配置选项的方法。对于 libvirt 不支持的 qemu 命令行参数(以及更多),您需要在 'domain' 根元素中包含 qemu 的 XML 命名空间声明:

<domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
Run Code Online (Sandbox Code Playgroud)

参考:https : //libvirt.org/drvqemu.html#qemucommand

  • 该模式现在是 404。 (2认同)

小智 7

如果你有virt-xml1.4.1(2017 年发布,所以现在应该很普遍)或以后的版本(由community/virt-installArch提供),你可以使用:

virt-xml $DOMAIN --edit --confirm --qemu-commandline '-my-args 1234'
virt-xml $DOMAIN --edit --confirm --qemu-commandline 'env=MY-ENV=1234'
Run Code Online (Sandbox Code Playgroud)

自动添加与 env vars 和/或 args 对应的 XML,包括命名空间。--confirm允许您在提交之前预览更改。

这比尝试手动粘贴 XML 命名空间要方便得多,并且即使virsh edit不再接受相同的手动更改也对我有用。

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


elb*_*rna 3

使用此解决方法找到了解决方案

将 QEMU 参数转换为域 XML

转换为 xml 导入后

virsh create file.xml
Run Code Online (Sandbox Code Playgroud)