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

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命令行?谢谢

答案1

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

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

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

答案2

如果您virt-xml的路径中有 1.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'

自动添加与环境变量和/或参数相对应的 XML,包括命名空间。--confirm允许您在提交之前预览更改。

这比尝试手动粘贴到 XML 命名空间要方便得多,并且对我来说很有效,尽管virsh edit不再接受相同的手动更改。

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

答案3

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

将 QEMU 参数转换为域 XML

转换为 xml 导入后

virsh create file.xml

相关内容