使用 XML 创建 libvirt 客户机时,如何确定哪些“arch”值有效<domain><os><type arch=?>
?问题是,例如,arm
是无效的,必须改为armv7l
。人们应该如何知道这一点?
这文档说:
还有两个可选属性,arch 指定要虚拟化的 CPU 架构,machine 指代机器类型。Capabilities XML 提供了这些属性允许值的详细信息。
当我使用 virsh 命令行或 Python API 时,如果不提供架构,则无法获取功能。例如:
connection.getDomainCapabilities('/usr/bin/qemu-system-arm')
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/.../libvirt.py", line 4573, in getDomainCapabilities
raise libvirtError('virConnectGetDomainCapabilities() failed')
libvirt.libvirtError: invalid argument: architecture from emulator 'armv7l' doesn't match given architecture 'x86_64'
等效的 virsh 命令也给出了类似的错误。那么我如何知道哪些架构可以作为参数发送给 getDomainCapabilities?
另外:更令人困惑的是,virt-manager 列出了与内部表示不匹配的体系结构。例如,当我创建一台 arm 机器时,生成的 XML 会列出 armv7l。
答案1
输出virsh capabilities
将显示 libvirt 能够通过查找qemu-system-xxxx
$PATH 中的二进制文件检测到的所有模拟器体系结构。如果您没有看到该输出中列出的预期体系结构,则您qemu-system-xxx
的安装中可能缺少二进制文件,或者您的操作系统供应商不支持这些体系结构。