Qemu 配置文件错误“参数主机无效”

Qemu 配置文件错误“参数主机无效”

我是 QEMU 的新手,目前正在研究 QEMU 配置文件以了解它的工作原理。我尝试将简单 QEMU 命令行的所有选项放入

sudo qemu-system-x86_64 -cpu host -enable-kvm -m 8192 -nic user,host=192.168.0.2,net=192.168.0.2 -nic bridge,br=virbr0 ubuntu.img

在配置文件中qemu.cfg,它是这样的:

[nic "user"]
host=192.168.0.2
net=192.168.0.2
[nic "bridge"]
br=virbr0 


cpu = host
enable-kvm
m = 8192
ubuntu.img

使用指定的文件运行 QEMUreadconfig出现以下错误

$ sudo qemu-system-x86_64 -readconfig qemu.cfg 
qemu-system-x86_64:qemu.cfg:1: Invalid parameter 'host=192.168.0.2'

如何修复配置文件?

答案1

经过几个小时的谷歌搜索,我没有找到任何与配置文件语法相关的综合手册。所以我查看了源代码,这是生成的配置文件:

[nic]
type = "user"
host = "192.168.0.2"
net = "192.168.0.2"

[nic]
type = "bridge"
br = "virbr0"

[memory]
size = "8192"

问题中提出的配置存在一些错误:

  1. 空间很重要

符号前后需要插入空格"="

   [nic]
   type = "user" #correct

   [nic]
   type="user" #wrong
  1. 找到配置组的正确名称。

如果配置组名称不正确,qemu 会打印以下形式的错误消息:

There is no option group

很容易在里面找到它qemu源代码。之后我们只需要找到添加到的所有配置组

static QemuOptsList *vm_config_groups[48];

功能void qemu_add_opts(QemuOptsList *list)对此负责。组的参数nic可以在宣言:

QemuOptsList qemu_nic_opts = {
    .name = "nic",
    .implied_opt_name = "type",
    .head = QTAILQ_HEAD_INITIALIZER(qemu_nic_opts.head),
    .desc = {
        /*
         * no elements => accept any params
         * validation will happen later
         */
        { /* end of list */ }
    },
};

这意味着我在答案中指定的语法。

没有回答的问题:

-cpu host -enable-kvm ubuntu.img我不知道是否有办法通过这样的配置文件指定其余选项。查看有效组没有产生任何有用的结果。

UPD:

原来是-enable-kvm通过配置accel选项组如下:

[accel]
accel = "kvm"

相关内容