【问题标题】:How to add more supported machine types to QEMU?如何向 QEMU 添加更多支持的机器类型?
【发布时间】:2019-01-28 01:39:15
【问题描述】:

我在 Cloudlab 中有一个 Openstack Pike 部署,它使用的是 QEMU 版本 2.10.1(Debian 1:2.10+dfsg-0ubuntu3.8~cloud1)

我想用 this version 替换 QEMU,它支持通过 QMP 进行监控。我使用:./configure --target-list=x86_64-softmmu 进行配置并编译了二进制文件qemu-system-x86_64,但是当我检查支持的机器类型时,它缺少原始二进制文件中存在的一些机器类型:

pc-i440fx-zesty      Ubuntu 17.04 PC (i440FX + PIIX, 1996)
pc-i440fx-yakkety    Ubuntu 16.10 PC (i440FX + PIIX, 1996)
pc-i440fx-xenial     Ubuntu 16.04 PC (i440FX + PIIX, 1996)
pc-i440fx-wily       Ubuntu 15.04 PC (i440FX + PIIX, 1996)
pc-i440fx-trusty     Ubuntu 14.04 PC (i440FX + PIIX, 1996)
ubuntu               Ubuntu 17.10 PC (i440FX + PIIX, 1996) (alias of pc-i440fx-artful)
pc-i440fx-artful     Ubuntu 17.10 PC (i440FX + PIIX, 1996) (default)
pc-i440fx-2.9        Standard PC (i440FX + PIIX, 1996)
pc-q35-zesty         Ubuntu 17.04 PC (Q35 + ICH9, 2009)
pc-q35-yakkety       Ubuntu 16.10 PC (Q35 + ICH9, 2009)
pc-q35-xenial        Ubuntu 16.04 PC (Q35 + ICH9, 2009)
pc-q35-artful        Ubuntu 17.10 PC (Q35 + ICH9, 2009)
pc-q35-2.9           Standard PC (Q35 + ICH9, 2009)

所以当我尝试使用 Openstack 部署测试 VM 时,它给了我错误:

libvirtError: internal error: process exited while connecting to monitor: 2019-01-24T19:41:51.292121Z qemu-system-x86_64: -enable-kvm: unsupported machine type

当我将机器类型更改为可用的机器类型之一 hw_machine_type = x86_64=pc-i440fx-1.6 时,它给了我这个错误:

libvirtError: internal error: qemu unexpectedly closed the monitor: qemu: could not load PC BIOS 'bios-256k.bin'

所以在四处寻找错误之后,我刚刚创建了一个符号链接:

sudo ln -sf /usr/share/seabios/bios-256k.bin /usr/share/qemu/bios.bin

然后它给出了以下错误:

libvirtError: internal error: qemu unexpectedly closed the monitor: Could not open option rom 'kvmvapic.bin': No such file or directory

所以我在想也许我应该只使用原始机器类型,我想知道我们在构建 QEMU 时如何添加更多支持的机器类型?我想它一定是配置选项之一,但我一直没能找到它。

【问题讨论】:

    标签: qemu libvirt openstack-nova


    【解决方案1】:

    通过在构建 QEMU 源代码时修改它来添加新机器类型。正如您可能从机器名称中猜到的那样,这些是特定于 Ubuntu QEMU 版本的,因此它们将通过 Ubuntu QEMU 包中的补丁程序添加。这些机器基本上就像库存的上游 pc-i440fx-n.n 和 pc-q32-n.n 一样,但将设置属性,以便它们的行为“类似于此版本 Ubuntu 中发布的 QEMU 版本”。这对于迁移虚拟机时的兼容性很重要。它也可能有一些细微的差异,比如它查找的 BIOS blob 文件名:Ubuntu/Debian 可能还修补了 QEMU 来编辑搜索 BIOS blob 的目录等内容。

    您链接到的另一个 QEMU 版本基于上游 QEMU,因此它没有启用 Ubuntu 特定机器类型的那些 Ubuntu 特定补丁。 (它也基于旧版本的 QEMU,因此将缺少针对该版本之后发现的安全问题的各种修复,所以要小心!检查 2.8.1 和现在之间的任何未修补的安全问题是否对您的用例很重要.)

    您可以继续尝试调整您的机器配置以使用非 Ubuntu 机器类型。 (使用最新的 pc-i440fx-n.n —— 1.6 已经很老了,它应该有 2.8。)或者你可以尝试重新设置添加 QMP 监控功能的补丁,以便它们适用于 Ubuntu QEMU 来源。对于任何类似于生产的东西,我认为后者可能是要走的路,因为使用某人的随机开发树存在无安全修复问题,但这可能并不容易。

    【讨论】:

    • 有没有办法从 Ubuntu 中找到机器类型的补丁?我不担心安全方面,因为这些机器被用于私人环境中的研究。我只想能够在我的 Openstack VM 上使用 QMP 分析器。我会尝试最近的机器类型版本。
    • 补丁将在 Ubuntu 源码包中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-31
    • 2016-02-20
    • 1970-01-01
    • 2017-08-18
    相关资源
    最近更新 更多