在 Centos 7.0 上向 qemu-kvm 启动的虚拟机传递参数或共享目录/文件的方法

Bab*_*ana 4 kvm qemu virtual-machine centos7

我需要能够在启动期间将一些参数传递给我的虚拟机,以便它正确设置自身。为此,我要么必须将信息烘焙到图像中,要么以某种方式将其作为参数传递给我的 qemu-kvm 命令。这些参数很少,如果是 VMware,我们只需将其作为 ova 参数传递,当 VM 启动时,我们将调用 ova-environment 来获取这些参数。但是从 qemu-kvm 启动它我没有这样的选项。我做了一些功课,发现我可以使用 virtio-9p 驱动程序在主机和来宾之间共享文件。不幸的是,RHEL/Centos 决定不支持 9p。

如果无法在启用 9p 选项的情况下重建 RHEL 内核,我该如何解决上述问题?两种解决方案都可以,即将某种 json 文件传递​​/共享到虚拟机(预先填充在主机上),虚拟机将读取此文件并进行设置,或者设置某种我可以从中查询的“环境变量”在虚拟机中获取这些参数并继续设置。任何指示都会有所帮助。

wkz*_*wkz 7

如果您的 QEMU 版本支持它,您可以使用它的-fw_cfg选项将信息传递给来宾。如果该来宾运行的是已启用的 Linux 内核CONFIG_FW_CFG_SYSFS,您将能够从 sysfs 中读取信息。一个例子:

如果您像这样启动虚拟机:

qemu-system-x86_64 <OPTIONS> -fw_cfg name=opt/com.example.test,string=qwerty
Run Code Online (Sandbox Code Playgroud)

然后,您可以从 guest 虚拟机内部从 sysfs 获取值:

cat /sys/firmware/qemu_fw_cfg/by_name/opt/com.example.test/raw
Run Code Online (Sandbox Code Playgroud)

似乎也有一些适用于 Windows 的驱动程序,但我从未使用过。