我是 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"
问题中提出的配置存在一些错误:
- 空间很重要
符号前后需要插入空格"="
:
[nic]
type = "user" #correct
[nic]
type="user" #wrong
- 找到配置组的正确名称。
如果配置组名称不正确,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"